用了一周的时间,有了点体会,可以使用了。
首先将两个文件引入工程。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);