请教门禁考勤系统有效卡识别算法

[复制链接]
6171|31
 楼主| zhaoem82 发表于 2007-1-11 14:35 | 显示全部楼层

ID卡号能自己修改吗?

这样门禁系统不是一点安全性都没有了,随便找张卡改改就能开门,不会是这样吧,好像是卡号是出厂时就固化了不能修改.你所说的是不是IC卡,IC卡就能修改,ID卡不行
 楼主| zhaoem82 发表于 2007-1-11 14:43 | 显示全部楼层

回21楼,这样可能灵活性就差了

如果用户后来要追加添卡也一样要重新排序,还有机器买出后可能就很难控制使用者怎样使用了,你没可能叫用户买一大批卡待用,最多只能叫他多要一点备用,还是有可能要追加添卡的
xwj 发表于 2007-1-11 14:48 | 显示全部楼层

呵呵,21楼明显的外行,别理他

 楼主| zhaoem82 发表于 2007-1-11 14:58 | 显示全部楼层

没关系,同样感谢他!

IC1008 发表于 2007-1-11 14:59 | 显示全部楼层

还是采用我说的方法吧

A储存空间进行储存卡信息,不用排序的
B储存空间存储排序信息

增加一个卡信息,只需要在A空间末端增加卡信息

对B储存空间要进行更新,没有办法
在排序空间每个卡占用两个字节的信息
 楼主| zhaoem82 发表于 2007-1-11 15:05 | 显示全部楼层

还是这方法有效,谢谢IC1008!

xwj 发表于 2007-1-11 15:09 | 显示全部楼层

嗯,分为批量授权和少量补充授权,确实是个好办法

qinyp 发表于 2007-1-11 22:12 | 显示全部楼层

re

可以将卡号转为16进制,不必全部保存,一般根据低字节(如3个字节,或者再少点,比如20位、18位等),再用位存储判断的方法即可,这样两张卡占据一个位的概率还是很小的,关键是判断比较快,读卡号、计算、读一个FLASH字节、判断字节中某位即可
IceAge 发表于 2007-1-12 00:52 | 显示全部楼层

同意楼上qinyp的建议

去看看 harsh 算法以及 harsh table 吧,很出名的算法.
 楼主| zhaoem82 发表于 2007-1-12 09:50 | 显示全部楼层

好的,谢谢大家!

lypd96 发表于 2007-1-12 09:51 | 显示全部楼层

RE:

28楼的方法是好,但实际中不好用,如只保存1000张卡就可以了,一般每张卡保存4个字节,只要4K字节存储器就够用了,但按28楼的方法即使每张卡保存18位,也就是要2的18次方=262144个位,要32768个字节才能保存.


楼主是只比较1000张卡,其实可以不用什么算法也就很快比完数据,我做过实验,就是保存了8000张卡(每张卡保存4个字节的数据)在FLASH中,用51MCU,44MHZ的晶振,读数据和比较完8000张也就用了不到1.5S的时间.方法就是(读一个字节比较一个字节,而不是一次读完4个字节后再比较,比较数据时从最低一个字节的数据开始,这样可以省下很多时间)先读存储器中保存的第一张卡的最低一个字节的数据,而后和刚才读到卡的数据最低一个字节比较相等,而后继续读卡剩下的字节,一直到比完4个字节的数据.只要其中一个字节不相等就直接读存储器中的第二张卡的数据,一直到读完8000张卡为止.
 楼主| zhaoem82 发表于 2007-1-12 10:14 | 显示全部楼层

这个也是好办法!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部