台灣最大程式設計社群網站
線上人數
1065
 
會員總數:243462
討論主題:188180
歡迎您免費加入會員
討論區列表 >> C/C++ >> 請教讀取健保保一般資料區
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請教讀取健保保一般資料區
價值 : 30 QP  點閱數:314 回應數:1

樓主

Blue
初學者
317 88
1008 169
發送站內信

Hi,各位先進大家好:
因需要讀取健保卡一般資料區,找了範例試了一直不成功,小弟使用 EZ100PU 多功能晶片讀卡機,
程式前半部份的 CasEstablishContext, CasListReadersA, CasConnect 等功能都正常(就沒貼上來了),
而使用 CasTransmit 送出 Select APDU command 的回應也如爬文的結果得到 90 00,
但之後的 CasTransmit 取資料,得到的長度 ProfileRecvLength = 59, 也與 爬文 一到,
可是 ProfileRecvBytes 內卻是沒有資料回來,
不知是那裡出了問題?
謝謝!

SCARD_IO_REQUEST SendPci, RecvPci;

byte SelectAPDU[] = { 0x00, 0xA4, 0x04, 0x00, 0x10, 0xD1, 0x58, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00 };
byte SelectRecvBytes[2]; //應回 90 00
DWORD SelectRecvLength = 0;

byte ReadProfileAPDU[] = { 0x00, 0xca, 0x11, 0x00, 0x02, 0x00, 0x00 };
byte ProfileRecvBytes[59]; //接收Profile的 Byte Array
DWORD ProfileRecvLength = 0;

memset(ProfileRecvBytes, 0, sizeof(ProfileRecvBytes));

ScardIoRequest.dwProtocol = dwProtocol;
ScardIoRequest.cbPciLength = 8; //sizeof(ScardIoRequest);

SendPci.dwProtocol = RecvPci.dwProtocol = dwProtocol;
SendPci.cbPciLength = RecvPci.cbPciLength = 8;// sizeof(ScardIoRequest);

lRet = CasTransmit(hCard, &SendPci, SelectAPDU, sizeof(SelectAPDU), NULL, SelectRecvBytes, &SelectRecvLength);

if (lRet == 0) {
int i;
printf(" Success!\n");
printf("\nSelect APDU receive Len:%d ,Stateword:%02X %02X ,Data :\n", SelectRecvLength, SelectRecvBytes[SelectRecvLength- 2], SelectRecvBytes[SelectRecvLength- 1]);
for (i = 0; i<SelectRecvLength; i++) {
printf("%02X ", SelectRecvBytes[i]);
}
printf("\n");
//下達讀取Profile指令
lRet = CasTransmit(hCard, &SendPci, ReadProfileAPDU, sizeof(ReadProfileAPDU), &RecvPci, ProfileRecvBytes, &ProfileRecvLength);
for (i = 0; i<ProfileRecvLength; i++) {
printf("%02X ", ProfileRecvBytes[i]);
}
printf("\n");





搜尋相關Tags的文章: [ 晶片卡讀卡 ] ,
本篇文章發表於2018-02-08 12:31
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

Blue
檢舉此回應
Hi,各位先進大家好:
已找到可用 Sample 了,
初步比對程式,感覺不出差異在那裡,
但,人家的確實是可取得資料,
詳細比較中,
謝謝!
本篇文章回覆於2018-02-08 15:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.