ZLG500B读卡模块上位机库函数使用遇到奇怪的问题。
周立功ZLG500B读卡器的demo中有如下代码:
unsigned char cardaddrlen;
unsigned char cardaddr[255];
unsigned long snr;
unsigned short type;
unsigned char size;
unsigned char data[16];
unsigned char szpwd[6]={0xff,0xff,0xff,0xff,0xff,0xff};
for(int i=0;i<16;i++)
{
data[i]=i;
}
long value=0x500;
zlg500B_init(1,9600); //打开端口和设定波特率
zlg500B_config();
zlg500B_load_key (0,0,szpwd); //往第0 密钥区装载密钥A
Sleep(2); //操作间延时2ms 可以修改
while(1)
{
if(zlg500B_request (0,type)!=0) //对第一个读卡器进行操作
continue;
Sleep(2);
if(zlg500B_anticoll(0,snr)!=0) //进行防碰撞选择成功则返回卡号
continue;
Sleep(2);
if(zlg500B_select(snr,size)!=0) //选择卡
continue;
Sleep(2);
if(zlg500B_authentication(0,0)!=0) //验证第0 扇区的密钥A
continue;
Sleep(2);
if(zlg500B_write(2,data)!=0) //往第二块写入数据
continue;
ShowMessage("写卡成功");//这句是我加上去的
Sleep(2);
if(zlg500B_read(2,data)!=0) //读取第二块的数据
continue;
Sleep(2);
for(i=0;i<16;i++)
{
printf("%x ",data[i]);
}
printf("\n");
if(zlg500B_writeval(1,value)!=0) //往第一块写入数值value
continue;
Sleep(2);
if(zlg500B_increment (1,value)!=0) //把第一块的数值加上value,存到内部寄存器中
continue;
Sleep(2);
if(zlg500B_transfer(1)!=0) //把内部寄存器中的值存到块1 中
continue;
Sleep(2);
if(zlg500B_readval(1,value)!=0) //读取第一块的数值
continue;
Sleep(2);
printf("%x\n",value);
zlg500B_halt(); //使卡进入halt 状态
zlg500B_buzzer(240,25,25,1); //让蜂鸣器响一次
Sleep(50);
}
/////////////////////////////////////////////////////////////////////////////////
如果无我加上去的这句“ShowMessage("写卡成功")”程序运行完全正确,我加上这个提示后,
紧跟着的“if(zlg500B_read(2,data)!=0) //读取第二块的数据”这句读数据就失败了,什么原因,我搞不懂,大家帮帮忙了。