#include <stdio.h>
#include <f3crcapi.h>
#define WAIT_TIME 300 /* カード挿入待ち時間 */
#define COLUMN 5 /* カードデータ読込開始位置 */
#define READ_LENGTH 16 /* カードデータを読込長さ */
int Handle ;
int iderror ;
int status ;
/*=================================================================*/
/* カード情報照会機能を使用する */
/*=================================================================*/
int idcard_operate( char *result )
{
int ret ;
struct mpcard_read_inf read_inf ; /* カード読込情報 */
struct mpcard_read_data read_data ;
/*******************************************************************/
/* IDカードセキュリティAPIの使用を開始する */
/*******************************************************************/
Handle = Mp_OpenCard( &iderror, "", 0, 0 ) ;
if ( Handle < 0 ) {
idcard_error( Handle, iderror );
return -1 ;
}
/*******************************************************************/
/* Mp_SendCard, Mp_GetCard関数での読み込み例 */
/*******************************************************************/
read_inf.column = COLUMN ;
read_inf.length = READ_LENGTH ;
read_inf.wait_time = WAIT_TIME ;
ret = Mp_SendCard( Handle, &iderror, &status, MPCARD_READ_CARD, &read_inf, NULL ) ;
if ( ret < 0 ){
idcard_error( ret, iderror ) ;
Mp_CloseCard( Handle, &iderror ) ;
return -1 ;
}
else if ( status == MPCARD_NO_CARD )
fprintf( stderr,"Please insert your card to card-reader !!\n" );
ret = Mp_GetCard( Handle, &iderror, &status, 0, &req, &read_data );
if ( ret < 0 && iderror == MPCARD_TIMEOUT ) {
fprintf( stderr, "TIME OUT !! You can't operate.\n" );
Mp_CloseCard( Handle, &iderror );
return 0 ;
}
else if ( ret < 0 ) {
idcard_error( ret, iderror ) ;
Mp_CloseCard( Handle, &iderror ) ;
return -1 ;
}
/*******************************************************************/
/* Mp_ReadCard関数での読み込み例 */
/*******************************************************************/
read_inf.column = COLUMN ;
read_inf.length = READ_LENGTH ;
read_inf.wait_time = 0 ;
ret = Mp_ReadCard( Handle, &iderror, MPCARD_READ_CARD, &read_inf, NULL, &read_data );
if ( ret < 0 ){
idcard_error( ret, iderror ) ;
Mp_CloseCard( Handle, &iderror ) ;
return -1 ;
}
/*******************************************************************/
/* IDカードセキュリティAPIの使用を終了する */
/*******************************************************************/
Mp_CloseCard( Handle, &iderror ) ;
memcpy( result, read_data.data, read_data.length );
return 0 ;
} |