打印

基于RC500读写器,设计每对卡读写一次后,马上关断寻卡问题

[复制链接]
3789|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
daiqh|  楼主 | 2011-11-9 23:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 daiqh 于 2011-11-9 23:22 编辑

我想把读写器功能设计如下:
读写器是一个扣费系统,当事件解发扣费请求后,通过查询M500PiccCommonRequest(0x52,0x02)子程序监测卡片是否进入天线范围,而当有卡片进入天线范围且正确扣费后,马上关闭查询,使其卡若不小心再次进入天线范围时而不至于多次扣费而误扣。

现在的设计思路如下:
设置一标志位,初始值置1。以标志位为循环条件,判断是否需要进入查询寻卡子程序。当判断有卡进入后,标志位清0,跳出循环。主程序如下:
void main(void)
{
    static bit find_flag=1;//加一个寻卡标志位
  EA=0; //禁止中断
  PortInit();
    init();
    init_value =500;  //初始化值
  InitCard();        //初始化卡
  SPEAKER =0;
    EA=1; //打开中断
  while(find_flag)//如果寻卡成功则跳出循环
  {
        while(M500PiccCommonRequest(0x52,0x02));//寻卡,直到有卡再跳出
    {  
            find_flag=0;//位变量,成功寻卡标志
      DecCard(10);  //作减,减值为10
              Delaylong(50);            
              M500PiccHalt(); //终止卡操作
      }
  }        
}
其余子程序均参考飞利浦给的源码示例编写。
调试发现放卡到天线板上会出现连续读写卡现象,并不是只读写一次就跳出。想请教一下,这样的问题是出于哪里?如何解决呢?谢谢

相关帖子

沙发
xyz769| | 2011-11-9 23:43 | 只看该作者
  while(M500PiccCommonRequest(0x52,0x02));//寻卡,直到有卡再跳出

 改为:

  while(M500PiccCommonRequest(0x26,0x02));//寻卡,直到有卡再跳出

 试试。。

使用特权

评论回复
板凳
daiqh|  楼主 | 2011-11-9 23:53 | 只看该作者
  while(M500PiccCommonRequest(0x52,0x02));//寻卡,直到有卡再跳出

 改为:

  while(M500PiccCommonRequest(0x26,0x02));//寻卡,直到有卡再跳出

 试试。。
xyz769 发表于 2011-11-9 23:43

0x26也试过了,不行,结果也是一样呢,加了块LCD,显示也看到不断循环初始化卡值那里,不是初始化卡值一次,而是会多次,大概5次左右又会退出.

使用特权

评论回复
地板
xyz769| | 2011-11-11 11:25 | 只看该作者
你的代码不全,假设你的代码都是正确的,那你可能要想其它办法了。。

 比如记录下前一次的卡序列号,相同的话就跳过。。

使用特权

评论回复
5
anjing82| | 2011-11-30 20:52 | 只看该作者
交易完毕后,给卡片发送Deslect命令即可。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

95

帖子

2

粉丝