я пишу приложение для работы с картами через PCSC ридер.
Мне нужно чтобы после Resetа на карту была подана последовательность PTS для установки протокола T=0 и желаемой скорости обмена=115200.Я пользуюсь стандартными функциями ScardEstablishContext,ScardConnect,ScardTransmit и.т.п..К сожалению,для себя я так и не уяснил из документации как это сделать.
Не могли бы Вы мне помочь в этом вопросе.
Здравствуйте, haltsys2005, Вы писали:
H>я пишу приложение для работы с картами через PCSC ридер. H>Мне нужно чтобы после Resetа на карту была подана последовательность PTS для установки протокола T=0 и желаемой скорости обмена=115200.Я пользуюсь стандартными функциями ScardEstablishContext,ScardConnect,ScardTransmit и.т.п..К сожалению,для себя я так и не уяснил из документации как это сделать. H>Не могли бы Вы мне помочь в этом вопросе.
Cкорость нельзя явно установить , это делает драйвер Кард-Считываетля . Т.е. Он устанавливает оптимальну скорость работы с считывателем,. А считыватель с картой опять же работает как ему вздумается. Иногда есть возможность установить скорость (Считыватель — карта) , иногда нет. Зависит от производителя Считывателя .
Я писал PCSC драйвера и могу это точно сказать.
Например вот так можно утсановить протокол передачи.
Example Code
SCARDHANDLE hCardHandle;
LONG lReturn;
DWORD dwAP;
// Connect to the reader.
// hContext is a SCARDCONTEXT previously set by
// a call to SCardEstablishContext.
lReturn = SCardConnect( hContext,
L"Rainbow Technologies SCR3531 0",
SCARD_SHARE_SHARED,
SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1,
&hCardHandle,
&dwAP );
if ( SCARD_S_SUCCESS != lReturn )
{
printf("Failed SCardConnect\n");
exit(1); // Or other appropriate action.
}
// Use the connection; here we will merely display the
// active protocol.
switch ( dwAP )
{
case SCARD_PROTOCOL_T0:
printf("Active protocol T0\n");
break;
case SCARD_PROTOCOL_T1:
printf("Active protocol T1\n");
break;
case SCARD_PROTOCOL_UNDEFINED:
default:
printf("Active protocol unnegotiated or unknown\n");
break;
}
// Remember to disconnect (by calling SCardDisconnect).
// …
S>Здравствуйте, haltsys2005, Вы писали:
H>>я пишу приложение для работы с картами через PCSC ридер. H>>Мне нужно чтобы после Resetа на карту была подана последовательность PTS для установки протокола T=0 и желаемой скорости обмена=115200.Я пользуюсь стандартными функциями ScardEstablishContext,ScardConnect,ScardTransmit и.т.п..К сожалению,для себя я так и не уяснил из документации как это сделать. H>>Не могли бы Вы мне помочь в этом вопросе.
S>Cкорость нельзя явно установить , это делает драйвер Кард-Считываетля . Т.е. Он устанавливает оптимальну скорость работы с считывателем,. А считыватель с картой опять же работает как ему вздумается. Иногда есть возможность установить скорость (Считыватель — карта) , иногда нет. Зависит от производителя Считывателя . S>Я писал PCSC драйвера и могу это точно сказать.
S>Например вот так можно утсановить протокол передачи.
S>LPCSCARD_I0_REQUEST io = {SCARD_PROTOCOL_T0, 8};
S>lReturn = SCardTransmit(hCardHandle, S> &io, S> pbSend, S> dwSend, S> NULL, S> pbRecv, S> &dwRecv ); S>if ( SCARD_S_SUCCESS != lReturn ) S>{
S>}
S>Вот еще пример из MSDN
S>Example Code S>SCARDHANDLE hCardHandle; S>LONG lReturn; S>DWORD dwAP;
S>// Connect to the reader. S>// hContext is a SCARDCONTEXT previously set by S>// a call to SCardEstablishContext. S>lReturn = SCardConnect( hContext, S> L"Rainbow Technologies SCR3531 0", S> SCARD_SHARE_SHARED, S> SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, S> &hCardHandle, S> &dwAP ); S>if ( SCARD_S_SUCCESS != lReturn ) S>{ S> printf("Failed SCardConnect\n"); S> exit(1); // Or other appropriate action. S>}
S>// Use the connection; here we will merely display the S>// active protocol. S>switch ( dwAP ) S>{ S> case SCARD_PROTOCOL_T0: S> printf("Active protocol T0\n"); S> break;
S> case SCARD_PROTOCOL_T1: S> printf("Active protocol T1\n"); S> break;
S> case SCARD_PROTOCOL_UNDEFINED: S> default: S> printf("Active protocol unnegotiated or unknown\n"); S> break; S>}
S>// Remember to disconnect (by calling SCardDisconnect). S>// …
А каким параметром нужно играть чтобы изменить скорость?
Здравствуйте, haltsys2005, Вы писали: H>А каким параметром нужно играть чтобы изменить скорость?
а зачем столько оверквотить?!
... << Rsdn@Home 1.1.4 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Здравствуйте, Valerio, Вы писали:
V>Здравствуйте, haltsys2005, Вы писали: H>>А каким параметром нужно играть чтобы изменить скорость? V>а зачем столько оверквотить?!
Затем — чтобы "дети подземелья" в руки мышку брали хоть иногда .
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.