音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請教門禁考勤系統(tǒng)有效卡識別算法

作者:zhaoem82 欄目:單片機
請教門禁考勤系統(tǒng)有效卡識別算法
我在做門禁考勤系統(tǒng)系統(tǒng)時遇到如何快速識別有效卡的問題,
我現(xiàn)在的方法是將有效卡號存放在FLASH中,每次讀到卡時從FLASH讀出卡號比較,
能在FLASH中找到表示該卡號已經(jīng)授權(quán),沒找到為非法卡.
我現(xiàn)在測試用順序查找方法查找,1000張卡的查找速度要差不多4秒,顯然大慢了,
請問大家有什么好查找算法,謝謝!

2樓: >>參與討論
zhaoem82
能不能對卡號排序
我想將卡號進行排序存放在falsh中,然后用二分法查找,但卡號存在falsh中排序
速度好慢,每次對卡進行授權(quán)操作時都可能要對FLASH中存放的卡號進行大規(guī)模
的移動.

3樓: >>參與討論
IC1008
如果將卡的號碼先進行順序排列
然后進行折半查找 就可以查到了
基本上查找10張卡就可以達(dá)到目標(biāo)

4樓: >>參與討論
IC1008
錄入的機會是很少的
或者再建一個儲存數(shù)組 專門來記錄排名的
數(shù)組的pm[0]= 最小卡的儲存位置

5樓: >>參與討論
zhaoem82
這樣查找判別應(yīng)該可以
不過授權(quán)操作時就要對儲存數(shù)組進行排序,因為FLASH讀寫操作比較慢,可能花費時間比較長,如果一次授權(quán)的卡號比較多的話可能等待的時間較長,

6樓: >>參與討論
IC1008
在RAM中建立一個排序儲存數(shù)組的影像
修改RAM內(nèi)容 空閑時候才寫入ROM

7樓: >>參與討論
zhaoem82
我用的是STC89C516RD只有1K的內(nèi)部RAM
沒有這么多的空間,現(xiàn)在要求要保存1K張有效卡就要2K字節(jié)的空間作儲存數(shù)組的影像
才行,每個地址空間要2個字節(jié).

8樓: >>參與討論
xwj
一般都是PC端授權(quán),排序的工作可以交給電腦來進行
當(dāng)然,這就需要傳輸全部數(shù)據(jù),可能會導(dǎo)致傳輸時間過長!

自己看著辦吧

9樓: >>參與討論
zhaoem82
這也是個好辦法!
 
10樓: >>參與討論
btiger2000
一定要存卡號么?
我們處理的一種做法!

一個位對應(yīng)一張卡,1000張卡125字節(jié)就夠!
比如卡號是1---1000,每個字節(jié)對應(yīng)8張卡,即1--8號的卡存儲器0字節(jié),以此類推。授權(quán)的位置1,未授權(quán)的位清0, 查詢的時候 (卡號-1)/8 得到字節(jié),(卡號-1)%8得到位! 很快的!當(dāng)然卡號需要有規(guī)律! 

11樓: >>參與討論
zhaoem82
btiger2000大俠,小弟不是好明白,能說清禁點?謝謝!
 
12樓: >>參與討論
zhaoem82
我們的門禁系統(tǒng)使用的時候卡號可能沒有什么規(guī)律
 
13樓: >>參與討論
lyjian
設(shè)置有規(guī)律的卡號,通過卡號查找授權(quán)的信息
 
14樓: >>參與討論
emailli
這樣的
 btiger2000的意思是這樣的:
125B用來保存卡的授權(quán)情況。
為什么125B呢?因為 125B*8=1000b
也就是一共有1000位。
那么對應(yīng)位為1就表明卡已經(jīng)授權(quán),否則為未授權(quán)。

這樣方法處理的關(guān)鍵就是,如何最快的將卡號信息和你的位標(biāo)識信息最快的對應(yīng)起來?需要你根據(jù)你的卡號的規(guī)律做一個分析,然后做處理。最好就是移位或者與或幾次后就可以獲得你的“卡號--位”對應(yīng)信息。

  以上理解,不知道是否得當(dāng)?

15樓: >>參與討論
zhaoem82
我們的機器是賣給別人裝的
我們不可能要求別人用有規(guī)律的卡號,或者后來加卡也不一定能找到有有規(guī)律的卡號的卡,這樣可能行不通

16樓: >>參與討論
zhaoem82
懇請大俠們幫忙分析
 
17樓: >>參與討論
emailli
發(fā)一些卡號看看咯
你至少得把你的卡號發(fā)一些上來給大家看看吧。

一點規(guī)律都沒有的東西那你只有改硬件增加RAM來做了。



18樓: >>參與討論
zhaoem82
卡號是這樣的
我們的門禁系統(tǒng)要兼容市面上的ID卡,即卡號沒規(guī)律我們?nèi)】ㄌ柺?字節(jié)十進制數(shù),格式如下:
02062074,02039418

19樓: >>參與討論
xwj
門禁一般用的是最便宜的ID卡,卡號為8位或18位十進制不重復(fù)值
卡號不是自己能修改的

20樓: >>參與討論
stycx
排序并增加授權(quán)特征位
每次購進新卡時全部加一位授權(quán)特征位后排序?qū)懭?a target="_blank" href="http://m.58mhw.cn/stock-ic/FLASH.html">FLASH。
用授權(quán)特征位標(biāo)示是否有效卡。
以后授權(quán)只須修改該卡特征位,無須再排序。

21樓: >>參與討論
zhaoem82
ID卡號能自己修改嗎?
這樣門禁系統(tǒng)不是一點安全性都沒有了,隨便找張卡改改就能開門,不會是這樣吧,好像是卡號是出廠時就固化了不能修改.你所說的是不是IC卡,IC卡就能修改,ID卡不行

22樓: >>參與討論
zhaoem82
回21樓,這樣可能靈活性就差了
如果用戶后來要追加添卡也一樣要重新排序,還有機器買出后可能就很難控制使用者怎樣使用了,你沒可能叫用戶買一大批卡待用,最多只能叫他多要一點備用,還是有可能要追加添卡的

23樓: >>參與討論
xwj
呵呵,21樓明顯的外行,別理他
 
24樓: >>參與討論
zhaoem82
沒關(guān)系,同樣感謝他!
 
25樓: >>參與討論
IC1008
還是采用我說的方法吧
A儲存空間進行儲存卡信息,不用排序的
B儲存空間存儲排序信息

增加一個卡信息,只需要在A空間末端增加卡信息

對B儲存空間要進行更新,沒有辦法
在排序空間每個卡占用兩個字節(jié)的信息

26樓: >>參與討論
zhaoem82
還是這方法有效,謝謝IC1008!
 
27樓: >>參與討論
xwj
嗯,分為批量授權(quán)和少量補充授權(quán),確實是個好辦法
 
28樓: >>參與討論
qinyp
re
可以將卡號轉(zhuǎn)為16進制,不必全部保存,一般根據(jù)低字節(jié)(如3個字節(jié),或者再少點,比如20位、18位等),再用位存儲判斷的方法即可,這樣兩張卡占據(jù)一個位的概率還是很小的,關(guān)鍵是判斷比較快,讀卡號、計算、讀一個FLASH字節(jié)、判斷字節(jié)中某位即可

29樓: >>參與討論
IceAge
同意樓上qinyp的建議
去看看 harsh 算法以及 harsh table 吧,很出名的算法.

30樓: >>參與討論
zhaoem82
好的,謝謝大家!
 
31樓: >>參與討論
lypd96
RE:
28樓的方法是好,但實際中不好用,如只保存1000張卡就可以了,一般每張卡保存4個字節(jié),只要4K字節(jié)存儲器就夠用了,但按28樓的方法即使每張卡保存18位,也就是要2的18次方=262144個位,要32768個字節(jié)才能保存.


樓主是只比較1000張卡,其實可以不用什么算法也就很快比完數(shù)據(jù),我做過實驗,就是保存了8000張卡(每張卡保存4個字節(jié)的數(shù)據(jù))在FLASH中,用51MCU,44MHZ的晶振,讀數(shù)據(jù)和比較完8000張也就用了不到1.5S的時間.方法就是(讀一個字節(jié)比較一個字節(jié),而不是一次讀完4個字節(jié)后再比較,比較數(shù)據(jù)時從最低一個字節(jié)的數(shù)據(jù)開始,這樣可以省下很多時間)先讀存儲器中保存的第一張卡的最低一個字節(jié)的數(shù)據(jù),而后和剛才讀到卡的數(shù)據(jù)最低一個字節(jié)比較相等,而后繼續(xù)讀卡剩下的字節(jié),一直到比完4個字節(jié)的數(shù)據(jù).只要其中一個字節(jié)不相等就直接讀存儲器中的第二張卡的數(shù)據(jù),一直到讀完8000張卡為止.

* - 本貼最后修改時間:2007-1-12 9:56:18 修改者:lypd96

32樓: >>參與討論
zhaoem82
這個也是好辦法!
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
51系列,采用過最快的波特率是多少?230.4K?
單片機程序必須是個死循環(huán)嗎?汗。。。。
某一時刻讓16個數(shù)碼管同時亮用什么驅(qū)動呢
請教大家了
我讀寫AT45DB041B的BUFFER1出現(xiàn)怪問題。
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號