宋志強(qiáng)
摘要: 對基于RS-485總線的指紋鎖監(jiān)控管理系統(tǒng)進(jìn)行了研究,實(shí)現(xiàn)了與指紋鎖相關(guān)的通信協(xié)議。介紹了主要功能模塊,給出了顯式調(diào)用動(dòng)態(tài)鏈接庫的方法,使用Victor串口VCL控件與指紋鎖進(jìn)行通信。主機(jī)軟件采用C++ Builder 6開發(fā),數(shù)據(jù)庫采用InterBase 6.5。通過軟硬件結(jié)合的模塊化設(shè)計(jì),使系統(tǒng)能以主從模式或?qū)Φ饶J竭M(jìn)行節(jié)點(diǎn)間通信。實(shí)際應(yīng)用結(jié)果表明,該系統(tǒng)運(yùn)行穩(wěn)定可靠,具有一定的實(shí)用性和推廣價(jià)值。
關(guān)鍵詞: 指紋鎖; C++ Builder; 串口通信; 監(jiān)控
中圖分類號:TP311.52文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2012)11-21-02
Design of monitoring and control system for fingerprint locks based on RS-485 bus
Song Zhiqiang
(Department of Information, Suzhou Institute of Trade & Commerce, Suzhou, Jiangsu 215009, China)
Abstract: The monitoring and control system for fingerprint locks based on RS-485 bus is investigated. The communication protocol relevant to fingerprint locks is realized. The main function modules are introduced. The host software is developed by using C++ Builder 6 and the database by InterBase 6.5. Because of module design of hardware and software, the system can work at master-slave mode or peer-to-peer mode. The real application shows that this system runs stably and accurately. The technology and methods adopted in this system are practical and worthy to be promoted.
Key words: fingerprint lock; C++ Builder; serial communication; monitoring and control
0 引言
指紋鎖是一種以人體指紋為識別載體和手段的智能鎖具,它是計(jì)算機(jī)信息技術(shù)、電子技術(shù)、機(jī)械技術(shù)和現(xiàn)代五金工藝的完美結(jié)合體。指紋鎖一般由電子識別與控制、機(jī)械聯(lián)動(dòng)系統(tǒng)兩部分組成。指紋的惟一性和不可復(fù)制性決定了指紋鎖是目前所有鎖具中最為安全的鎖種[1]。隨著人們生活水平的不斷提高,人們對生活品質(zhì)的追求也日益提高,越來越多的人過上了智能化的生活,只需手指輕觸一下,便能開門。指紋鎖安全、方便、實(shí)用,非常適合寫字樓、辦公室、物業(yè)、賓館、酒店等集中統(tǒng)一管理。
1 系統(tǒng)總體結(jié)構(gòu)
本指紋鎖的核心為Analog Devices公司生產(chǎn)的嵌入式微處理器ADSP-BF533,指紋鎖與主機(jī)通過RS-485總線相連,系統(tǒng)結(jié)構(gòu)框圖如圖1所示,RS-485接口連接成半雙工通信方式[2]。由于PC機(jī)只帶有RS232接口,故采用Moxa公司的TCC-80I作為RS-232/RS-485轉(zhuǎn)換器。在單片機(jī)端通過MAX487芯片將485信號轉(zhuǎn)換成單片機(jī)需要的串口信號,系統(tǒng)中可連接的下位機(jī)最多可擴(kuò)展至128個(gè)[3]。
2 指紋鎖工作原理
指紋鎖是基于RS-485總線的聯(lián)網(wǎng)型指紋鎖,采用鋰電池供電,既可以獨(dú)立工作,又可以聯(lián)網(wǎng)使用。首次使用時(shí),可以通過指紋鎖或主機(jī)監(jiān)控管理軟件進(jìn)行指紋登錄。之后,當(dāng)用戶需要開門時(shí),只需將手指平壓在指紋采集窗口上,系統(tǒng)便自動(dòng)完成指紋圖像的采集和特征提取,與存儲在Flash中的指紋特征進(jìn)行1:N比對,若比對通過,則指紋鎖控制電機(jī)轉(zhuǎn)動(dòng)開門,同時(shí)指紋鎖記錄下開門信息,如時(shí)間、指紋ID等,以便主機(jī)進(jìn)行查詢。
圖1系統(tǒng)結(jié)構(gòu)框圖
本文采用了軟硬件結(jié)合的方法實(shí)現(xiàn)了載波監(jiān)聽多點(diǎn)接入/沖突檢測[4-6],如果系統(tǒng)檢測到不少于2個(gè)的指紋鎖同時(shí)使用總線時(shí),則令讓出總線避障。指紋鎖根據(jù)各自的優(yōu)先級,在等待一段隨機(jī)時(shí)延后,再重新偵聽。這樣就能解決因?yàn)槎嘀鞫鴰淼目偩€沖突問題,優(yōu)先級較高的指紋鎖可優(yōu)先發(fā)送數(shù)據(jù)。
3 通信協(xié)議設(shè)計(jì)
PC機(jī)(上位機(jī))與指紋鎖(下位機(jī))通信采用自定義的通信協(xié)議,波特率為9600bps,8位數(shù)據(jù),1位停止位,無校驗(yàn)。協(xié)議的幀格式如表1所示。
表1通信協(xié)議的幀格式
[[STX\&SID\&DID\&FC\&CMD/ACK\&Len_L\&Len_H\&DATA\&DES\&CRC8\&ETX\&1B\&1B\&1B\&1B\&1B\&1B\&1B\&不定\&1B\&1B\&1B\&]]
STX:幀首,固定為0XA0;
SID:源地址;
DID:目的地址,0XFF時(shí),表示任意節(jié)點(diǎn)都需響應(yīng);
FC:幀計(jì)數(shù)位,重發(fā)幀標(biāo)志;
CMD/ACK:命令/應(yīng)答標(biāo)志;
Len_L:數(shù)據(jù)長度低位;
Len_H:數(shù)據(jù)長度高位;
DATA:要傳送的參數(shù)或數(shù)據(jù)。數(shù)據(jù)長度不定,若傳輸指紋特征數(shù)據(jù)時(shí),最多可達(dá)512個(gè)字節(jié);
DES:0X00:數(shù)據(jù)未加密;0X01:表示數(shù)據(jù)采用DES加密,接收方收到數(shù)據(jù)后要先進(jìn)行解密;
CRC8:CRC類型為CRC-8-Dallas/Maxim,多項(xiàng)式為x8+x5+x4+1。其值是對“SID”、“DID”、“FC”、“CMD/ACK”、“Len_L”、“Len_H”、“DATA”、“LEN”,“DES”校驗(yàn)得到的。幀首和幀尾不參與校驗(yàn);
ETX:幀尾,固定為0XA1。
4 監(jiān)控管理系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)采用面向?qū)ο蟮脑O(shè)計(jì)思想和面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,采用Borland C++ Builder 6作為開發(fā)工具,操作系統(tǒng)為Windows XP Professional,數(shù)據(jù)庫選用InterBase 6.5。
4.1 系統(tǒng)主要模塊
監(jiān)控管理系統(tǒng)主要由系統(tǒng)設(shè)置、指紋登錄、指紋下載、串口設(shè)置、用戶管理、查詢、報(bào)警、下載程序等模塊組成。
系統(tǒng)設(shè)置:主要用于指紋鎖地址與房間號的設(shè)置、指紋鎖安全級別設(shè)置等。
指紋登錄:完成用戶指紋圖像的采集、提取、比對、存儲等操作,根據(jù)特定需要可對用戶的開門權(quán)限進(jìn)行設(shè)置,如對允許的開門時(shí)間段進(jìn)行設(shè)置,登記成功的指紋特征信息存儲在數(shù)據(jù)庫中。
查詢:管理系統(tǒng)存儲了所有的進(jìn)出記錄、狀態(tài)記錄,管理員可以按不同的條件進(jìn)行查詢,對查詢結(jié)果可以生成報(bào)表,同時(shí)該模塊也具備考勤功能。
報(bào)警:指紋鎖具有自動(dòng)檢測功能,非法侵入或低電壓時(shí),指紋鎖會發(fā)出報(bào)警提示音,同時(shí)將報(bào)警信息傳送給PC端的監(jiān)控管理系統(tǒng),以便管理人員及時(shí)作出響應(yīng)。
4.2 動(dòng)態(tài)鏈接庫調(diào)用
本文通過Windows的API函數(shù)來顯式調(diào)用動(dòng)態(tài)鏈接庫(DLL),步驟如下:
⑴ 調(diào)用LoadLibrary函數(shù)裝載DLL獲得句柄;
⑵ 調(diào)用GetProcAddress函數(shù)獲取導(dǎo)出函數(shù)的指針;
⑶ 用函數(shù)的指針調(diào)用函數(shù);
⑷ 使用完成后,用FreeLibrary釋放DLL。
顯式調(diào)用DLL不需要在工程中加入lib庫和相應(yīng)的頭文件,只需把動(dòng)態(tài)庫放入指定的目錄下即可。本系統(tǒng)的核心調(diào)用代碼如下:
HINSTANCE hLIBFinger; //定義句柄變量
//指向FeatureExtraction函數(shù)的指針
Short (*FeatureExtraction1)(unsigned char *idata,
unsigned char *fdata,unsigned char *var);
//裝載XTYDSP.dll
hLIBFinger=LoadLibrary("XTYDSP.dll");
//得到指向特征提取函數(shù)FeatureExtraction的指針
FeatureExtraction1=(short(*)(unsigned char*, unsigned char*,
unsigned char*))GetProcAddress (hLIBFinger,
"FeatureExtraction");
…
//調(diào)用特征提取函數(shù)提取指紋特征值
k=FeatureExtraction1(Buffer,F(xiàn)eatureData,var);
…
//將XTYDSP.dl從程序中卸載
FreeLibrary(hLIBFinger);
4.3 串口通信實(shí)現(xiàn)
C++ Builder 6可以利用 Windows的API函數(shù)或控件來實(shí)現(xiàn)串口通信。本文采用的控件為Victor串口通信控件,該控件功能較為強(qiáng)大。
對于一些正常的開門信息,實(shí)時(shí)性要求不高,系統(tǒng)采用主從模式,由主機(jī)通過定時(shí)器控件循環(huán)輪詢各指紋鎖,各指紋鎖收到數(shù)據(jù)幀后將自身的地址與數(shù)據(jù)幀中的地址對比,若相同則作出響應(yīng)。對于非法侵入、低電壓報(bào)警等信息,則由指紋鎖以多主模式發(fā)送,這樣提高了系統(tǒng)的實(shí)時(shí)性和快速響應(yīng)性。
5 實(shí)際運(yùn)用案例
該監(jiān)控管理系統(tǒng)已經(jīng)投入到多個(gè)科技園的寫字樓中試運(yùn)行,管理系統(tǒng)連續(xù)不間斷運(yùn)行了近6個(gè)月,沒有出現(xiàn)死機(jī)等異?,F(xiàn)象,效果良好。指紋鎖監(jiān)控管理系統(tǒng)界面如圖2所示。
圖2指紋鎖監(jiān)控管理系統(tǒng)界面
6 結(jié)束語
本文利用C++ Builder通過串口通信控件獲取數(shù)據(jù),該系統(tǒng)已經(jīng)通過實(shí)驗(yàn)驗(yàn)證,完全達(dá)到了所提出的技術(shù)要求。開發(fā)的基于RS-485總線的指紋鎖監(jiān)控管理系統(tǒng)軟件運(yùn)行穩(wěn)定可靠,使用方便。目前該系統(tǒng)已成功交付用戶使用并得到用戶好評,證明了其適用性和可靠性。
參考文獻(xiàn):
[1] 中國指紋產(chǎn)品網(wǎng).指紋鎖[EB/OL].http://www.zhiwenwangcn.com/
zhiwensuo/.
[2] B&B Electronics.RS-422 and RS-485 Application Notes[EB/OL].
http://www.bb-elec.com,2001.
[3] 吳秋明,和衛(wèi)星,陳曉平,黃孟波,吉奕.基于RS-485總線的PC與多
單片機(jī)間的串行通信[J].微計(jì)算機(jī)信息,2006.22(23):143-145
[4] 徐煒,尤佳,王治祥.具有硬件CSMA/CD的RS-485總線控制網(wǎng)設(shè)
計(jì)[J].武漢理工大學(xué)學(xué)報(bào),2003.25(8):60-62
[5] 胡興剛.基于差別延時(shí)解決RS-485總線沖突的一種方法[J].測控技
術(shù),2008.27(2):57-59
[6] Jia H,Guo Z.Research on the technology of RS485 over Ethernet
[C].Henan,China:IEEE Computer Society,2010.