數字化小區信息發布系統設計與實現
2.2.2 用戶機硬件設計
在用戶機中,需要著重提到的是液晶顯示模塊,它是數字化區信息發布系統的信息顯示載體。液晶模塊與CPU三線連接,采用串行方式通信,節約了CPU的資源。信息存儲在串行EEPROM中,當用戶按下按鍵查看信息時,CPU從存儲器中讀取信息,并在液晶模塊上顯示。
存儲器中除了存儲信息發布的信息外,還有一些固定的參數,比如:層號、房間號、撤布防的密碼、振鈴時間、主碼等,這些參數均可以通過鍵盤進行軟設定。采用軟件設置的辦法,避免了采用跳線或撥碼開關進行參數設置的傳統做法。用戶機框圖如圖2所示。
本文引用地址:http://cqxgywz.com/article/173702.htm鍵盤完成的功能主要有:呼叫、開鎖、設定參數、信息翻屏、撤布防等。報警輸入模塊接收來自傳感器的信號。CPU接收到報警信號后通過CAN總線上傳,最終到達上位機。用戶機的其它功能模塊比較簡單,限于篇幅,這里就不再做過多敘述了。
2.3 智能小區管理軟件的實現
2.3.1 打開串口
使用函數CreateFile()打開串口。其聲明如下:
HANDLE CreateFile(
LPCTSTR lpFileName, //指向文件或串口的指針
DWORD dwDesiredAccess, //讀寫模式
DWORD dwShareMode, //共享方式
LPSECURITY_ATTRIBUTES lpSecurityAttributes,//安全屬性
DWORD dwCreationDistribution,//創建方式
DWORD dwFlagsAndAttributes, //文件屬性
HANDLE hTemplateFile); // 用于拷貝文件屬性的句柄
2.3.2 關閉串口
關閉串口比打開串口要簡單得多,只需要調用CloseHandle()函數關閉由CreateHandle()函數返回的句柄即可。CloseHandle函數的聲明如下:
BOOL CloseHandle(
HANDLE hObject;) //指向串口的句柄
2.3.3 異步操作
異步(重疊)I/O操作是指應用程序可以在后臺讀或者寫數據,而在前臺做其他事件。首先介紹一個結構OVERLAPPED,這個結構對于執行串口的異步操作來說是必需的。其定義如下:
typedef struct _OVERLAPPED{
DWORD Internal;
DWORD InternalHigh;
DWORD Offset;
DWORD OffsetHigh;
HANDLE hEvent;
} OVERLAPPED;
在這個結構中,前兩個參數為操作系統所保留。接下來的兩個參數在對串口操作時是無效的。對于串行口而言僅hEvent成員有效,其余成員必須為0。在設置了異步I/O操作后,I/O操作和函數返回有以下兩種情況:當函數返回時I/O操作已經完成,此時結果好像是同步執行的,但實際上這是異步執行的結果。當函數返回時I/O操作還沒有完成,此時一方面,函數返回值為零,并且GetLastError()函數返回ERROR_IO_PENDING;另一方面,系統將OVERLAPPED中的信號事件設為無信號狀態。I/O操作完成時,系統要把它設置為有信號狀態。異步I/O操作的結果可以由GetOverLappedResult()函數來獲取,也可以使用Windows的信號函數來處理。
3 結束語
通過對系統進行詳細分析和功能設計,采用 CAN總線和C++ 技術,縮短了系統的開發周期,提高了開發者的效率,實現了功能強大而又比較靈活的小區信息發布系統。本系統經過測試,包括軟件仿真和系統聯機調試,結果證明這種信息發布的方案是可行的。相信隨著數字化社區的不斷發展,其應用前景也將越來越廣泛。
4 創新點總結
本文的創新點在于提出了一種新的小區信息發布的方案。CAN總線通信速率高、通信距離遠、可靠性高,可以滿足信息發布系統的通信要求。將CAN總線技術應用于信息發布,改變了以往電子公告牌靜態的發布模式,具有高度的靈活性和廣泛的實適用性。











評論