vc++ 德卡(IC卡)D3-U设密与读写应用

来源:互联网 发布:c语言读写ini配置文件 编辑:程序博客网 时间:2024/05/21 19:50

用了一周的时间,有了点体会,可以使用了。

首先将两个文件引入工程。dcrf32.h 和 dcrf32.lib,通过  工程-添加到工程-文件

/////////////////////////////////////////////////////////////////////////////////////

设密码,


    HANDLE icdev ;
    icdev=(HANDLE)dc_init(100,9600);//初始化串口1,波特率9600
    CString s;
__int16 st = -1;
     unsigned char *snr;


     st=dc_card_hex(icdev,0,snr);


       if(st) 
        {
                MessageBox("寻卡失败");
                return;
        }


st = dc_authentication(icdev,0,6);   //第6个分区
       if(st) 
      {
               MessageBox("核对密码失败");
               return;
       }


unsigned char data[16]={0xFF,0xFF,0xFF,0xFF,0xFA,0xBC,0xFF,0x07,0x80,0x69,0xFF,0xFF,0xFF,0xFF,0xFA,0xBC};
st=dc_write(icdev,27,data);      //第6个区的密码块为27=6*4+3,该块有16个字节,前6和后6字节为密码,中间4个字节是控制位。
if(st) 
{
MessageBox("写卡失败");
return;
}
MessageBox("成功");


验证密码

HANDLE icdev ;
    icdev=(HANDLE)dc_init(100,9600);//初始化串口1,波特率9600
    CString s;
s.Format("%d",icdev);
//MessageBox(s);


__int16 st = -1;
     unsigned char *snr;


     st=dc_card_hex(icdev,0,snr);


       if(st) 
        {
                MessageBox("寻卡失败");
                return;
        }


st = -1;
unsigned char password[6]={0xFF,0xFF,0xFF,0xFF,0xFA,0xBC};  //6个字节
st = dc_authentication_pass(icdev,0,6,password);  //第6区
if(st) 
{
MessageBox("核对密码失败");
return;
}
MessageBox("核对密码成功");
return;


写数据 

UpdateData();
BYTE bt[33]="\0";
memcpy(bt,m_ss.GetBuffer(0),m_ss.GetLength());  //m_ss为CString 类


HANDLE icdev ;
    icdev=(HANDLE)dc_init(100,9600);//初始化串口1,波特率9600
    CString s;
__int16 st = -1;
     unsigned char *snr;


     st=dc_card_hex(icdev,0,snr);


       if(st) 
        {
                MessageBox("寻卡失败");
                return;
        }


st = dc_authentication(icdev,0,7);
       if(st) 
      {
               MessageBox("核对密码失败");
               return;
       }




st=dc_write(icdev,28,bt);//写第7区第一块 28=7*4+0
if(st) 
{
MessageBox("写卡失败");
return;
}
MessageBox("成功");


读数据

     HANDLE icdev ;
    icdev=(HANDLE)dc_init(100,9600);//初始化串口1,波特率9600
    CString s;
s.Format("%d",icdev);
MessageBox(s);


__int16 st = -1;
     unsigned char *snr;


     st=dc_card_hex(icdev,0,snr);


       if(st) 
        {
                MessageBox("寻卡失败");
                return;
        }


st = dc_authentication(icdev,0,7);
       if(st) 
      {
               MessageBox("核对密码失败");
               return;
       }




    st=-1;
unsigned char data[33] = {"\0"};
st=dc_read(icdev,28,data);  //读1卡块4的数据
MessageBox(".....");
if(st) 
{
MessageBox("读卡失败");
return;
}
s.Format("%s",data);
MessageBox(s);
dc_exit(icdev);



原创粉丝点击