董海桃
(山西機電職業技術學院 山西省長治市 046011)
智能控制工業設備開發目標是為滿足工業設備的智能測控,通過無線傳感網絡實現溫濕度數據的讀取與顯示,通過人體傳感器、煙霧傳感器、紅外對射傳感器監測是否有人在工業現場、是否有煤氣泄漏的危險發生以及是否有人通過門窗入侵,從而控制相應的燈、報警燈開啟,風扇開停等操作。文章以開關燈的控制為例子,具體闡述如何使用Java 語言的IDEA 集成開發環境完成界面下串口控制開關燈功能。
物聯網仿真設備上連接燈泡如圖1所示。具體的連接方法是,在物聯網行業實訓仿真設備上:設備PC 連接220V 電源,數據采集設備adam4150 通過繼電器連接24V 電源,設備燈泡通過繼電器連接12V 電源,數據采集設備4150 通過串口工具485=232 和PC端的COM 口相連。設置PC 端的配置為如圖2所示:COM 端口號波特率為9600,虛擬串口為COM200。通過串口工具測試連接正確,端口數據“01,05,00,11,FF,00,DC,3F”測試可以開燈,端口數據“01,05,00,11,00,00,9D,CF”可以實現關燈。
為了能夠自如的控制開燈和關燈操作,用戶希望通過電腦或者手機的界面操作燈泡的開和關,使用Java 語言的IDEA 集成開發環境為例介紹窗口界面的設計,IDEA 全稱 IntelliJ IDEA,是Java 編程語言開發的集成環境。IntelliJ 在業界被公認為最好的Java 開發工具。窗口的設計包含可以讓用戶識別窗口的標題、窗口的大小和能控制開燈關燈的兩個按鈕控件對象。由于構造函數在創建窗口類對象的時候自動調用,所以以上的這些功能可以在窗口類的構造函數內完成。其程序為:


圖1:物聯網仿真設備上連接燈泡

圖2:PC 端的配置
程序中創建了兩個按鈕分別是“開燈”和“關燈”,而且在初始化函數里調用add 函數將兩個按鈕加入到窗體中,程序的執行的界面效果如圖3所示。或許,你現在已經發現了問題,如果沒有setLayout(new FlowLayout());這一行語句,后面的界面元素將前面的界面元素覆蓋了,只能看到最后一個界面元素如圖4所示。那么setLayout(new FlowLayout())是什么呢?
在Swing 編程中使用布局管理器能夠非常有效地對窗口或者其它容器中的組件進行有條理并且美觀的擺放。布局管理器也是有很多種的,包括流布局、邊框布局、網格布局、和空布局等,其中流布局FlowLayout 是是依照組件的添加順序依次將組件添加到容器里,是最簡單的布局。
當界面完成的界面的設置后,單擊“開燈”按鈕,在仿真系統里燈并沒有完成相應的操作,即仿真系統里的燈沒有打開,這是因為沒有編寫按鈕的事件代碼,這個按鈕事件的功能是單擊按鈕后仿真系統中燈能打開和關閉,完成相應功能。
首先需要搭建框架,給”onLamp”和“offLamp”按鈕和添加事件代碼。在構造方法中給按鈕onLamp 添加代碼,單擊按鈕的事件是addActionListener()方法,響應的事件是:ActionListener(),選定后,事件需要實現虛擬方法actionPerformed (),在虛擬方法內添加通過發送的的事件便可。

圖3:程序界面效果圖

圖4:不設置布局效果圖

圖5:單擊開燈,仿真燈亮
通過串口工具SerialPortManager 的方法sendToPort 發送數據到仿真系統,該函數的兩個參數分別是這樣的,參數1 首先需要打通串口,將OpenPort 的值設置為:SerialPortManager.openPort("COM200",9600);也就是連接PC 的端口。參數2 根據確定是打開操作或者是關閉操作的16 進制數據組。特別要注意對于窗口管理器發送串口數據的時候,可能會產生異常,所以要將此命令放置在try-catch 里。具體代碼如下:

最后以上程序完成以后,在仿真系統打開模擬實驗,運行程序,驗證程序的運行結果,如圖5所示:當單機窗口里開燈按鈕的時候,仿真系統燈點亮。當單機窗口里關燈按鈕的時候,仿真系統燈熄滅。
文章只是對燈實現了界面控制的功能,對于風扇、報警設備的連接方式和實現方法和開關燈的實現方法相似。串口控制在智能家居和智能工業領域中有著舉足輕重的地位。'