打印

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

[复制链接]
4210|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhaoem82|  楼主 | 2007-1-11 09:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在做门禁考勤系统系统时遇到如何快速识别有效卡的问题,
我现在的方法是将有效卡号存放在flash中,每次读到卡时从flash读出卡号比较,
能在Flash中找到表示该卡号已经授权,没找到为非法卡.
我现在测试用顺序查找方法查找,1000张卡的查找速度要差不多4秒,显然大慢了,
请问大家有什么好查找算法,谢谢!

相关帖子

沙发
zhaoem82|  楼主 | 2007-1-11 09:08 | 只看该作者

能不能对卡号排序

我想将卡号进行排序存放在falsh中,然后用二分法查找,但卡号存在falsh中排序
速度好慢,每次对卡进行授权操作时都可能要对flash中存放的卡号进行大规模
的移动.

使用特权

评论回复
板凳
IC1008| | 2007-1-11 09:08 | 只看该作者

如果将卡的号码先进行顺序排列

然后进行折半查找 就可以查到了
基本上查找10张卡就可以达到目标

使用特权

评论回复
地板
IC1008| | 2007-1-11 09:16 | 只看该作者

录入的机会是很少的

或者再建一个储存数组 专门来记录排名的
数组的pm[0]= 最小卡的储存位置

使用特权

评论回复
5
zhaoem82|  楼主 | 2007-1-11 09:47 | 只看该作者

这样查找判别应该可以

不过授权操作时就要对储存数组进行排序,因为flash读写操作比较慢,可能花费时间比较长,如果一次授权的卡号比较多的话可能等待的时间较长,

使用特权

评论回复
6
IC1008| | 2007-1-11 10:11 | 只看该作者

在RAM中建立一个排序储存数组的影像

修改RAM内容 空闲时候才写入ROM

使用特权

评论回复
7
zhaoem82|  楼主 | 2007-1-11 10:18 | 只看该作者

我用的是stc89c516RD只有1K的内部RAM

没有这么多的空间,现在要求要保存1K张有效卡就要2K字节的空间作储存数组的影像 
才行,每个地址空间要2个字节.

使用特权

评论回复
8
xwj| | 2007-1-11 10:23 | 只看该作者

一般都是PC端授权,排序的工作可以交给电脑来进行

当然,这就需要传输全部数据,可能会导致传输时间过长!

自己看着办吧

使用特权

评论回复
9
zhaoem82|  楼主 | 2007-1-11 10:33 | 只看该作者

这也是个好办法!

使用特权

评论回复
10
btiger2000| | 2007-1-11 13:23 | 只看该作者

一定要存卡号么?

我们处理的一种做法!

 一个位对应一张卡,1000张卡125字节就够!
比如卡号是1---1000,每个字节对应8张卡,即1--8号的卡存储器0字节,以此类推。授权的位置1,未授权的位清0, 查询的时候 (卡号-1)/8 得到字节,(卡号-1)%8得到位! 很快的!当然卡号需要有规律! 

使用特权

评论回复
11
zhaoem82|  楼主 | 2007-1-11 13:34 | 只看该作者

btiger2000大侠,小弟不是好明白,能说清禁点?谢谢!

使用特权

评论回复
12
zhaoem82|  楼主 | 2007-1-11 13:38 | 只看该作者

我们的门禁系统使用的时候卡号可能没有什么规律

使用特权

评论回复
13
lyjian| | 2007-1-11 13:46 | 只看该作者

设置有规律的卡号,通过卡号查找授权的信息

使用特权

评论回复
14
emailli| | 2007-1-11 13:48 | 只看该作者

这样的

 btiger2000的意思是这样的:
 125B用来保存卡的授权情况。
 为什么125B呢?因为 125B*8=1000b
 也就是一共有1000位。
 那么对应位为1就表明卡已经授权,否则为未授权。

 这样方法处理的关键就是,如何最快的将卡号信息和你的位标识信息最快的对应起来?需要你根据你的卡号的规律做一个分析,然后做处理。最好就是移位或者与或几次后就可以获得你的“卡号--位”对应信息。

  以上理解,不知道是否得当?

使用特权

评论回复
15
zhaoem82|  楼主 | 2007-1-11 13:53 | 只看该作者

我们的机器是卖给别人装的

我们不可能要求别人用有规律的卡号,或者后来加卡也不一定能找到有有规律的卡号的卡,这样可能行不通

使用特权

评论回复
16
zhaoem82|  楼主 | 2007-1-11 13:57 | 只看该作者

恳请大侠们帮忙分析

使用特权

评论回复
17
emailli| | 2007-1-11 14:15 | 只看该作者

发一些卡号看看咯

你至少得把你的卡号发一些上来给大家看看吧。

一点规律都没有的东西那你只有改硬件增加RAM来做了。

使用特权

评论回复
18
zhaoem82|  楼主 | 2007-1-11 14:27 | 只看该作者

卡号是这样的

我们的门禁系统要兼容市面上的ID卡,即卡号没规律我们取卡号是8字节十进制数,格式如下:
02062074,02039418

使用特权

评论回复
19
xwj| | 2007-1-11 14:28 | 只看该作者

门禁一般用的是最便宜的ID卡,卡号为8位或18位十进制不重复

卡号不是自己能修改的

使用特权

评论回复
20
stycx| | 2007-1-11 14:31 | 只看该作者

排序并增加授权特征位

每次购进新卡时全部加一位授权特征位后排序写入flash。
用授权特征位标示是否有效卡。
以后授权只须修改该卡特征位,无须再排序。

使用特权

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

本版积分规则

13

主题

75

帖子

0

粉丝