📄 smartcarddlg.cpp
字号:
//读记录 DDF1.DF04.EF05.11(记录标志0x8A)(用户卡) 医疗证号
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x0B\x04\x11", cmdlen);
sw1sw2 = SendCmd(theApp.icdev, CardSet_User, cmd,cmdlen, resp, &resplen);
if (sw1sw2 != 0x9000)
{
AfxMessageBox("读取医疗证号失败");
}
else
{
//获得读出的数据
memcpy(card_num, resp+2, resplen-2);
card_num[resplen-2] = 0x00;
m_cardno.Format("%s",card_num);
}
//读记录 DDF1.DF04.EF05.12(记录标志0x8B)(用户卡) 基本医疗保险个人账号
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x0C\x04\x0C", cmdlen);
sw1sw2 = SendCmd(theApp.icdev, CardSet_User, cmd,cmdlen, resp, &resplen);
if (sw1sw2 != 0x9000)
{
AfxMessageBox("读取电脑号失败");
}
else
{
//获得读出的数据
memcpy(pc_num, resp+2, resplen-2);
pc_num[resplen-2] = 0x00;
m_pcno.Format("%s",pc_num);
}
}
else if(theApp.m_readerType == 2) //选择的是明华读卡器
{
//用户卡复位
ST = ICC_Reader_PowerOn(theApp.HandleReader1, cardset_user, resp);
if (ST < 0)
{
AfxMessageBox("卡片复位失败");
}
//============================读数据====================================
//选文件MF (用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\x3f\x00", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件MF失败");
}
//选文件DDF1 (用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xDD\xF1", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件DDF1失败");
}
//选文件EF05 (用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xEF\x05", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件EF05失败");
}
//读记录 DDF1.EF05.05(用户卡) 发卡日期
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x05\x04\x06", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("读取发卡日期失败");
}
else
{
//获得读出的数据
memcpy(date,resp+2,resplength-2);
HexToAscii(date,date_asc,resplength-2);
date_asc[(resplength-2)*2] = 0x00;
m_date.Format("%s",date_asc);
}
//选文件MF (用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\x3f\x00", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件MF失败");
}
//选文件DDF1(用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xdd\xf1", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件DDF1失败");
}
//选文件EF06
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xEF\x06", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件EF06失败");
}
//读记录 DDF1.EF06.02(用户卡) 姓名
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x02\x04\x20", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if(SW1SW2 != 0x9000)
{
AfxMessageBox("读取姓名失败");
}
else
{
memcpy(name,resp+2,resplength-2);
name[resplength-2] = 0x00;
m_name.Format("%s",name);
}
//读记录 DDF1.EF06.03(用户卡) 性别
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x03\x04\x03", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("读取姓名失败");
}
else
{
memcpy(sex,resp+2,resplength-2);
if(sex[0x00] == 0x31)
{
m_sex.Format("%s","男");
}
else if(sex[0x00] == 0x32)
{
m_sex.Format("%s","女");
}
}
//读记录 DDF1.EF06.01(用户卡) 公民身份号码
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x01\x04\x14", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("读取身份证号失败");
}
else
{
//获得读出的数据
memcpy(id,resp+2,resplength-2);
id[resplength-2] = 0x00;
m_id.Format("%s",id);
}
//============================读数据====================================
//选文件MF (用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\x3f\x00", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件MF失败");
}
//选文件DDF1(用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xdd\xf1", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件DDF1失败");
}
//用户卡校验密码 (用户卡)
cmdlen = 0x08;
memcpy(cmd, "\x00\x20\x00\x00\x03\x12\x34\x56", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
switch(SW1SW2)
{
case 0x63c3:
AfxMessageBox("还有三次重新输入密码机会");
break;
case 0x63c2:
AfxMessageBox("还有二次重新输入密码机会");
break;
case 0x63c1:
AfxMessageBox("还有一次重新输入密码机会");
break;
case 0x63c0:
AfxMessageBox("再输入错误认证会导致锁定");
break;
default:
AfxMessageBox("认证锁定");
}
}
//选文件DF04
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xDF\x04", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件DF04失败");
}
//选文件EF05
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xEF\x05", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件EF05失败");
}
//读记录 DDF1.DF04.EF05.11(记录标志0x8A)(用户卡) 医疗证号
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x0B\x04\x11", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("读取医疗证号失败");
}
else
{
//获得读出的数据
memcpy(card_num, resp+2, resplength-2);
card_num[resplength-2] = 0x00;
m_cardno.Format("%s",card_num);
}
//读记录 DDF1.DF04.EF05.12(记录标志0x8B)(用户卡) 基本医疗保险个人账号
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x0C\x04\x0C", cmdlen);
SW1SW2 = SENDCMD1(theApp.HandleReader1, cardset_user, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("读取电脑号失败");
}
else
{
//获得读出的数据
memcpy(pc_num, resp+2, resplength-2);
pc_num[resplength-2] = 0x00;
m_pcno.Format("%s",pc_num);
}
}
else if(theApp.m_readerType == 3) //选择的是明华读卡器
{
//用户卡复位
ST = icc_reader_PowerOn(theApp.HandleReader2, cardset_User, resp);
if (ST < 0)
{
AfxMessageBox("卡片复位失败");
}
//============================读数据====================================
//选文件MF (用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\x3f\x00", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件MF失败");
}
//选文件DDF1 (用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xDD\xF1", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件DDF1失败");
}
//选文件EF05 (用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xEF\x05", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件EF05失败");
}
//读记录 DDF1.EF05.05(用户卡) 发卡日期
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x05\x04\x06", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("读取发卡日期失败");
}
else
{
//获得读出的数据
memcpy(date,resp+2,resplength-2);
HexToAscii(date,date_asc,resplength-2);
date_asc[(resplength-2)*2] = 0x00;
m_date.Format("%s",date_asc);
}
//选文件MF (用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\x3f\x00", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件MF失败");
}
//选文件DDF1(用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xdd\xf1", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件DDF1失败");
}
//选文件EF06
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xEF\x06", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件EF06失败");
}
//读记录 DDF1.EF06.02(用户卡) 姓名
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x02\x04\x20", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if(SW1SW2 != 0x9000)
{
AfxMessageBox("读取姓名失败");
}
else
{
memcpy(name,resp+2,resplength-2);
name[resplength-2] = 0x00;
m_name.Format("%s",name);
}
//读记录 DDF1.EF06.03(用户卡) 性别
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x03\x04\x03", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("读取姓名失败");
}
else
{
memcpy(sex,resp+2,resplength-2);
if(sex[0x00] == 0x31)
{
m_sex.Format("%s","男");
}
else if(sex[0x00] == 0x32)
{
m_sex.Format("%s","女");
}
}
//读记录 DDF1.EF06.01(用户卡) 公民身份号码
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x01\x04\x14", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("读取身份证号失败");
}
else
{
//获得读出的数据
memcpy(id,resp+2,resplength-2);
id[resplength-2] = 0x00;
m_id.Format("%s",id);
}
//============================读数据====================================
//选文件MF (用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\x3f\x00", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件MF失败");
}
//选文件DDF1(用户卡)
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xdd\xf1", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件DDF1失败");
}
//用户卡校验密码 (用户卡)
cmdlen = 0x08;
memcpy(cmd, "\x00\x20\x00\x00\x03\x12\x34\x56", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
switch(SW1SW2)
{
case 0x63c3:
AfxMessageBox("还有三次重新输入密码机会");
break;
case 0x63c2:
AfxMessageBox("还有二次重新输入密码机会");
break;
case 0x63c1:
AfxMessageBox("还有一次重新输入密码机会");
break;
case 0x63c0:
AfxMessageBox("再输入错误认证会导致锁定");
break;
default:
AfxMessageBox("认证锁定");
}
}
//选文件DF04
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xDF\x04", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件DF04失败");
}
//选文件EF05
cmdlen = 0x07;
memcpy(cmd, "\x00\xA4\x00\x00\x02\xEF\x05", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("选择文件EF05失败");
}
//读记录 DDF1.DF04.EF05.11(记录标志0x8A)(用户卡) 医疗证号
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x0B\x04\x11", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("读取医疗证号失败");
}
else
{
//获得读出的数据
memcpy(card_num, resp+2, resplength-2);
card_num[resplength-2] = 0x00;
m_cardno.Format("%s",card_num);
}
//读记录 DDF1.DF04.EF05.12(记录标志0x8B)(用户卡) 基本医疗保险个人账号
cmdlen = 0x05;
memcpy(cmd, "\x00\xB2\x0C\x04\x0C", cmdlen);
SW1SW2 = SENDCMD2(theApp.HandleReader2, cardset_User, cmd,cmdlen, resp, &resplength);
if (SW1SW2 != 0x9000)
{
AfxMessageBox("读取电脑号失败");
}
else
{
//获得读出的数据
memcpy(pc_num, resp+2, resplength-2);
pc_num[resplength-2] = 0x00;
m_pcno.Format("%s",pc_num);
}
}
UpdateData(FALSE);
}
void CSmartcardDlg::OnButton4()
{
CCpu dlg;
dlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -