Re: PTS for PCSC
От: shilon Молдова  
Дата: 27.07.04 13:12
Оценка:
Здравствуйте, haltsys2005, Вы писали:

H>я пишу приложение для работы с картами через PCSC ридер.

H>Мне нужно чтобы после Resetа на карту была подана последовательность PTS для установки протокола T=0 и желаемой скорости обмена=115200.Я пользуюсь стандартными функциями ScardEstablishContext,ScardConnect,ScardTransmit и.т.п..К сожалению,для себя я так и не уяснил из документации как это сделать.
H>Не могли бы Вы мне помочь в этом вопросе.



Cкорость нельзя явно установить , это делает драйвер Кард-Считываетля . Т.е. Он устанавливает оптимальну скорость работы с считывателем,. А считыватель с картой опять же работает как ему вздумается. Иногда есть возможность установить скорость (Считыватель — карта) , иногда нет. Зависит от производителя Считывателя .
Я писал PCSC драйвера и могу это точно сказать.

Например вот так можно утсановить протокол передачи.

LPCSCARD_I0_REQUEST io = {SCARD_PROTOCOL_T0, 8};

lReturn = SCardTransmit(hCardHandle,
&io,
pbSend,
dwSend,
NULL,
pbRecv,
&dwRecv );
if ( SCARD_S_SUCCESS != lReturn )
{

}





Вот еще пример из MSDN

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).
// …
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.