Skip to Main Content

Java Card

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Setting Baud Rate

843851Jul 21 2003 — edited Jul 23 2003
This isn't specifically a JavaCard question but I think some of you are using PC/SC and might be able to help.

I have a JCOP31bio card and a Reflex USB reader. I am using PC/SC for communication. The problem is that it seems to be using 9600 baud when both devices should be capable of at least 115k. I tried to check this using SCardGetAttrib (I think I did it right) but also when transferring a file of ~2.5 kB it is taking about 4.5s (very noticeable).

Code:
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
wchar_t SmartCardGetConnect(){

LPTSTR szReaders, szRdr;
DWORD cchReaders = SCARD_AUTOALLOCATE;
DWORD dwI, dwRdrCount;
DWORD dwAP;
SCARD_READERSTATE rgscState[MAXIMUM_SMARTCARD_READERS];

// Establish a context.
lReturn = SCardEstablishContext(SCARD_SCOPE_SYSTEM,
NULL,
NULL,
&hSC );

if ( SCARD_S_SUCCESS != lReturn )
return (wchar_t)L"Failed SCardEstablishContext";

// Determine which readers are available.
lReturn = SCardListReaders(hSC,
NULL,
(LPTSTR)&szReaders,
&cchReaders );

if ( SCARD_S_SUCCESS != lReturn )
return (wchar_t)L"Failed SCardListReaders";

// Place the readers into the state array.
szRdr = szReaders;
for ( dwI = 0; dwI < MAXIMUM_SMARTCARD_READERS; dwI++ )
{
if ( 0 == *szRdr )
break;
rgscState[dwI].szReader = szRdr;
rgscState[dwI].dwCurrentState = SCARD_STATE_UNAWARE;
}
dwRdrCount = dwI;

// If any readers are available, proceed.
if ( 0 != dwRdrCount )
{

LPTSTR pmszCards = NULL;
LONG lReturn;
DWORD cch = SCARD_AUTOALLOCATE;

// Retrieve the list of cards.
lReturn = SCardListCards(NULL,
NULL,
NULL,
NULL,
(LPTSTR)&pmszCards,
&cch );
if ( SCARD_S_SUCCESS != lReturn )
return (wchar_t)L"Failed SCardListReaders";

do{
lReturn = SCardGetStatusChange(hSC,
1000,
rgscState,
dwRdrCount );
}while((rgscState[0].dwEventState & SCARD_STATE_PRESENT) != SCARD_STATE_PRESENT);



if ( SCARD_S_SUCCESS != lReturn )
return (wchar_t)L"Failed SCardGetStatusChange";
}
else
return (wchar_t)L"NO READERS AVAILABLE";

//Connect to selected reader

lReturn = SCardConnect( hSC,
(LPCTSTR)szRdr,
SCARD_SHARE_SHARED,
SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1,
&hCardHandle,
&dwAP );

if ( lReturn != SCARD_S_SUCCESS)
return (wchar_t)L"Failed SCardConnect";

//------------------------------
/*
LPBYTE pbAttr = NULL;
DWORD cByte = SCARD_AUTOALLOCATE;
DWORD i;
char szMystr[256];

lReturn = SCardGetAttrib(hCardHandle,
SCARD_ATTR_CURRENT_F,
(LPBYTE)&pbAttr,
&cByte);

// Output the bytes.
for (i = 0; i < cByte; i++)
szMystr[i] = *(pbAttr+i);

szMystr[i] = NULL;
//sprintf(szMystr+i, "%c", *(pbAttr+i));

// Free the memory when done.
// hContext was set earlier by SCardEstablishContext
lReturn = SCardFreeMemory( hSC, pbAttr );
*/


//------------------------------

/*
lReturn = SCardReconnect(hSC,
SCARD_SHARE_SHARED,
SCARD_PROTOCOL_UNDEFINED ,//SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1,
SCARD_RESET_CARD,
&dwAP);

// Set protocol
switch ( dwAP )
{
case SCARD_PROTOCOL_T0: ioProto = *SCARD_PCI_T0; break;
case SCARD_PROTOCOL_T1: ioProto = *SCARD_PCI_T1; break;
}

*/


SCardFreeMemory( hSC,
szReaders );

return (wchar_t)L"OK";


}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 20 2003
Added on Jul 21 2003
7 comments
467 views