ZLG500B读卡模块上位机库函数使用遇到奇怪的问题。

dullhe 2004-12-21 11:34:16
周立功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) //读取第二块的数据”这句读数据就失败了,什么原因,我搞不懂,大家帮帮忙了。
...全文
104 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dullhe 2005-01-20
  • 打赏
  • 举报
回复
搞定了。
dullhe 2004-12-21
  • 打赏
  • 举报
回复
不是“延时”的问题,试过了,一但ShowMessage或用自己的窗体来提示成功时,下一个函数调用就不成功了。
MEFULEU 2004-12-21
  • 打赏
  • 举报
回复
延时的问题吧

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧