孫永偉
(山東省淄博市工業學校,山東淄博,255400)
在本設計中,密碼模塊包括密碼鍵盤和顯示電路,都與智能門禁控制器直接通信,軟件流程圖如圖1所示。

圖1 智能門禁控制器與密碼模塊的通訊流程圖
業主在電梯前將電梯呼叫到達,然后進入電梯通過密碼鍵盤輸入密碼,點擊“確定鍵”,智能門禁控制器接收到密碼后,將其與數據庫里的信息對比,判斷密碼是否正確,如果正確,將在顯示電路上顯示“密碼正確”并允許業主操作電梯,如果錯誤,將在顯示電路上顯示“密碼錯誤”并不允許業主操作電梯。密碼正確后,業主選擇自己所要到達的目的樓層,智能門禁控制器接收到信息后將其發送給電梯控制器,業主即可到達目的樓層。以下是部分密碼鍵盤和顯示電路的單片機掃描程序:


本設計為了保證電梯運行狀態的更新效果,采用了Handler對象,接收線程和更新數據線程分別占用不同的線程,用以實現線程與線程之間的通信,Hander采用的原則是先進先出,對不同線程中運行的多個任務進行有序的排隊,Hander可以發送和處理的對象包括消息對象和Runnable對象,每一個Handler對象都關聯一個線程以及線程所對應的消息隊列。當一個Handler對象被創建時,相關聯的線程以及線程所對應的消息隊列也就被創建了[4]。Handler主要有兩個作用:
(1)安排消息或Runnable 在某個主線程中某個地方執行;
(2)安排一個動作在不同的線程中執行。
本設計主要包括兩個線程,一個是主線程,主線程主要是更新操作界面的顯示,電梯的運行方向、所在樓層以及電梯的模擬動畫等,另一個是接收線程,用于接收WIFI模塊發送來的信息。接收線程接收到智能門禁控制器通過WIFI通訊模塊傳送來的數據,判斷接收到的數據的長度,如果為空,則返回;如果不為空,則將數據通過handler.sendMessage(message)發送到主線程,然后主線程進行更新數據。關鍵程序如下所示。
電梯控制主要是按照設定好的通信協議格式將用戶的命令發送到智能門禁控制器,控制過程如圖2所示。

圖2 電梯控制流程圖
首先加載控件Up、Down、Start按鈕,為按鈕up、down、start設置監聽器,如果有按鈕按下,首先判斷是哪個按鈕,如果是Up鍵,發送呼叫電梯上行命令,如果是Down鍵,發送呼叫電梯下行命令,如果是Start鍵,發送電梯向目的樓層出發命令,最終通過sendMessage(bytes)發送出去[5]。關鍵程序如下所示。


本系統的軟件設計和硬件設計工作至此基本結束,后期根據實驗室設備條件進行了軟硬件的測試實驗,基本能夠滿足用戶要求。由于場地和實驗室條件限制的原因,智能門禁控制系統只進行了實驗室測試系統調試。實驗室試驗中,不配置電梯,因此系統只有單片機(門禁控制器)、密碼鍵盤(完成密碼輸入和選層兩個功能)一個液晶顯示器、一個步進電機、WIFI模塊和一臺手機,其中一臺顯示器用來顯示單片機接收到來自鍵盤和手機的指令。由于沒有電梯,手機用戶在通過驗證后單片機只向其發送設置好的電梯運行狀態并接收呼梯、樓層請求,采用步進電機模擬實現,電梯向上運行一層樓時電機正轉一圈,電梯向下運行一層樓時反轉一圈[7]。
(1) 按照正確的方式將門禁控制器、密碼模塊、WIFI模塊、顯示電路以及電源模塊進行連接,檢查無誤后給電源模塊上電,觀察液晶顯示模塊是否正常顯示電梯的運行狀況。
(2) 通過密碼鍵盤輸入用戶密碼,然后呼叫樓層,觀察電機是否按照期望旋轉方向和旋轉轉數進行旋轉,當電梯到達用戶所在樓層后,輸入目的樓層并確定,再觀察電機是否按照期望旋轉方向和旋轉轉數進行旋轉。
(3) 打開手機上的智能電梯軟件,首先顯示的是登錄界面,輸入用戶名和密碼,點擊登陸按鈕,觀察是否跳轉到操作界面,如果沒有跳轉到操作界面就會提示“用戶名或密碼錯誤”,需要重新輸入正確的用戶名和密碼,如果跳轉到操作界面,觀察是否正常顯示電梯的運行狀況。
(4) 在操作界面中輸入用戶所在樓層,然后點擊“呼叫電梯上行”按鈕,觀察電機是否按照期望旋轉方向和旋轉轉數進行旋轉并到達用戶所在樓層,然后輸入目的樓層,點擊“啟動電梯”按鈕,察電機是否按照期望旋轉方向和旋轉轉數進行旋轉并到達用戶目的樓層。
通過上述實驗發現整套系統可以正確的完成各項功能,而且步進電機模擬運轉準確,運行穩定。