honami520 发表于 2015-6-25 11:10:48

使用RC522读卡,能不能在多张卡叠放的情况,依次读出每张卡

现在要做一个东西,需要使用RC522来进行读卡写卡操作,但是读卡有的时候是会一次放2-3张卡过去,要求,1秒钟内把几张卡的信息都读出来。
我查过RC522有个防冲突读法。好像是可以做到。
不过就是不知道是不是需要什么特殊的算法,还是通用程序就能做得到。又或者RC522不能读这种多张卡叠放的情况。
希望有玩过的朋友给介绍下,多谢了

KongQuan 发表于 2015-6-25 11:55:06

按标准做的防冲突可以做到读多张卡。但是,天线是否匹配,影响防冲突的效果。
实际上,防冲突不能保证100%的成功率。

honami520 发表于 2015-6-25 13:14:25

KongQuan 发表于 2015-6-25 11:55
按标准做的防冲突可以做到读多张卡。但是,天线是否匹配,影响防冲突的效果。
实际上,防冲突不能保证100% ...

多谢回复。防冲突能读到就行。天线匹配这个倒不是特别懂。买来的那种专门的线圈不就可以了吗?最多影响读卡距离。
至于会有出错。可不可以通过多读几次,这种方式进行呢?

ti2086 发表于 2015-6-25 14:26:44

或许可以通过这样的方式实现:每读完一张卡,发指令让该卡休眠,再读下一张卡,具体能不能实现,没有试验过。

honami520 发表于 2015-6-25 16:59:18

ti2086 发表于 2015-6-25 14:26
或许可以通过这样的方式实现:每读完一张卡,发指令让该卡休眠,再读下一张卡,具体能不能实现,没有试验过 ...

多谢回复,还是希望看看有没有做过类似的朋友给个明确点的答案。

lyp103 发表于 2015-6-25 17:13:17

honami520 发表于 2015-6-25 16:59
多谢回复,还是希望看看有没有做过类似的朋友给个明确点的答案。

4楼的方法是对的

yuangaoping 发表于 2015-9-5 23:17:27

今天特意试了下,多张卡叠放,直接去刷,结果一张也读不到。
一张一张的往读卡器上放,读完发送挂起指令,则可以读多张,但超过3张后明显不稳定,经常出错。

kelian 发表于 2015-9-6 09:15:27

处理简单,读一张记录下来,再读另一张再记录,读到的不再重复读,这个应不难
我们做门禁的,要拿开再读下一张,判别方式改一下就行

进0308 发表于 2015-9-6 09:20:32

叠读,防冲撞怎么过得了

kelian 发表于 2015-6-25 11:10:49

本帖最后由 kelian 于 2015-9-6 10:17 编辑

门禁我都试过,两张叠记到一张后再反转读下一张
//*****************************************************
//函数名:WaitCard
//功能:等待卡的撤走。
//出口参数:无。
//入口参数:无。
//*****************************************************
void WaitCard(void)
{
   while(RC530(READ,KEYA,1,Buff,0)==OK);
   DelayMs(250);
   DelayMs(250);
}
读卡S50或S70
这个也是一个方式:读或写的时候加入selective字节,只有这个字节匹配的卡才会回应。这样就不会相互冲突。但要预先知道selective字节,且互不相同。然后遍历。

weuser 发表于 2015-9-6 09:58:36

这个应该和卡有关系。有些卡支持selective指令。读或写的时候加入selective字节,只有这个字节匹配的卡才会回应。这样就不会相互冲突。但要预先知道selective字节,且互不相同。然后遍历。

honami520 发表于 2015-9-6 11:48:25

多谢楼上的回复。这个事情已经搞定了。就是麻烦了点。
因为我是需要验证2张卡。一次放2张卡上去。那么,我的做法很傻。
收先读取卡号,判断同时有2张卡出现。而且卡号不同。
然后,对2个卡号对应的block内容进行读取。

15989357794 发表于 2015-9-8 08:51:48

学习中。。。。。

sml009 发表于 2015-11-14 17:12:59

学习了{:smile:}
页: [1]
查看完整版本: 使用RC522读卡,能不能在多张卡叠放的情况,依次读出每张卡