摘 要:在基于無線通信方式控制的智能多媒體教室系統(tǒng)中,有兩種控制設(shè)備工作的方式:一種是遙控器(鍵盤)控制;一種是上位機控制,本文介紹上位機控制系統(tǒng)的設(shè)計方案。在上位機上設(shè)計控制代碼,然后通過串口進行計算機與單片機之間的通信,單片機與工作設(shè)備之間通過無線通信方式進行控制,從而實現(xiàn)了上位機與工作設(shè)備之間的無線通信。
關(guān)鍵詞:上位機 串口通信 無線控制
中圖分類號:G64 文獻標(biāo)識碼:A 文章編號:1673-9795(2013)04(a)-0145-02
在智能多媒體教室控制系統(tǒng)中,可以設(shè)計上位機圖形界面的操作方式,教師通過鼠標(biāo)操作來簡單方便地實現(xiàn)對多媒體教室中的設(shè)備的控制。
在本次設(shè)計中,上位機部分采用基于Windows 系統(tǒng)下的Visual C++6.0[1]開發(fā),使用了Visual Studio 6.0中集成的Microsoft Communications Control控件,實現(xiàn)了計算機與單片機之間的通信,從而實現(xiàn)了通過計算機對多媒體教室中不同工作設(shè)備的控制,如環(huán)境燈、投影儀、幕布、窗簾等,使用起來簡單方便。
1 工作系統(tǒng)的控制流程
整個工作系統(tǒng)的控制分為兩種方式(見圖1所示):一種是上位機系統(tǒng)的圖形界面控制;一種是按鍵(遙控)控制方式,兩種方式都要求盡可能簡單,看到功能菜單即可操作。
無論是圖形界面的命令或者按鍵的命令都是發(fā)送給單片機,單片機通過無線發(fā)射裝置將命令和地址發(fā)送出去,接收裝置將自己的地址與發(fā)射命令中的地址進行對比,如果是自己則接收并執(zhí)行命令,從而實現(xiàn)了上位機或鍵盤對執(zhí)行設(shè)備的控制。
2 上位機界面設(shè)計
在上位機開機的情況下,打開上位機控制系統(tǒng)的界面,見圖2所示。
目前已完成四個部分功能模塊的控制工作,分別是投影儀、幕布、窗簾和環(huán)境燈,在此基礎(chǔ)上可以增加其他模塊,比如操作臺、電腦、音響、攝像頭等,相應(yīng)地增加其操作界面,后臺打開或者屏蔽掉相應(yīng)的代碼即可。
界面部分使用Visual studio 6.0開發(fā),選用MFC AppWizard(EXE)基于對話框的程序界面,其選項或功能用戶一目了然。
在Windows應(yīng)用程序的主函數(shù)中,首先要注冊窗口類,然后創(chuàng)建并顯示窗口。
Windows應(yīng)用程序是靠消息來驅(qū)動的,消息是一個描述事件的結(jié)構(gòu)。創(chuàng)建窗口后程序就進入消息循環(huán),在消息循環(huán)中,程序不斷地獲得消息并將消息派送給對應(yīng)的窗口函數(shù)進行處理。
窗口函數(shù)是處理事件的地方,用函數(shù)對Windows應(yīng)用程序進行封裝可以使程序的結(jié)構(gòu)更為清晰。
CWinApp類是MFC對Windows主函數(shù)的封裝,通過派生 CWinApp可以得到自己的應(yīng)用程序類,在應(yīng)用程序類中主要實現(xiàn)了全局初始化操作,應(yīng)用程序類創(chuàng)建了主窗口后便進入了消息循環(huán)。
應(yīng)用程序的主窗口一般都是CFrame Wnd的派生類,可以通過派生該類得到自己的主窗口類。
Windows應(yīng)用程序的窗口函數(shù)封裝到CCmdTarget類中,所有希望相應(yīng)消息的類都應(yīng)該以CCmdTarget為基類來派生。
在開發(fā)上位機軟件時,事件驅(qū)動都采用了鼠標(biāo)單擊的形式,把程序分成了串口設(shè)置區(qū)域、功能控制區(qū)域和狀態(tài)顯示區(qū)域三個部分。
串口控制區(qū)域使用下拉列表框,讓用戶自己來選擇串口、波特率、數(shù)據(jù)校驗位和停止位等。由于這些數(shù)據(jù)一般都是固定的幾個選項,所以采用了下拉列表框,以方便用戶進行選擇。在串口設(shè)置沒有成功的時候“狀態(tài)欄”和“控制欄”都是不可用的,當(dāng)串口設(shè)置成功時這兩個區(qū)域變成可用狀態(tài)。
在功能區(qū)域(控制欄)中,使用復(fù)選框和按鈕來顯示所需要的功能。其中窗簾和幕布分別有三個狀態(tài),即開、關(guān)和暫停,投影儀有兩個狀態(tài),即開和關(guān),用戶可以簡單地進行選擇即可。燈光部分我們使用按鈕控件,因為燈光只有兩種狀態(tài),即開和關(guān),通過控制燈光的開、關(guān)從而控制了室內(nèi)的亮度。
在顯示部分(狀態(tài)欄)中選用了靜態(tài)文本框。在用戶每觸發(fā)一個事件的時候,顯示框馬上更新其相關(guān)狀態(tài)和處理細節(jié)。
3 上位機與單片機的協(xié)議
在上位機中對無線模塊進行編碼,使用無線發(fā)射模塊PT2262中的4個數(shù)據(jù)位和4個地址位對相關(guān)設(shè)備的狀態(tài)進行編碼,從而使每個設(shè)備的每個狀態(tài)都有一個唯一的編碼,截取電動幕布的具體編碼見表1所示。
上位機與單片機的通信通過CMSComm控件來實現(xiàn),該控制提供了一系列的接口,如串口數(shù)據(jù)的接收、發(fā)送,根據(jù)表1中的協(xié)議,每次執(zhí)行某個設(shè)備的某個操作就發(fā)送一個字符,通過CMSComm控件將數(shù)據(jù)發(fā)送給單片機。
4 結(jié)語
上位機控制系統(tǒng)的設(shè)計主要包括兩個方面:一個是界面和相應(yīng)代碼的設(shè)計;另一個是協(xié)議的制定和代碼實現(xiàn),通過設(shè)計一個簡單易用的界面,同時,實現(xiàn)上位機與單片機之間的通信,這樣就可以通過上位機來無線控制相應(yīng)設(shè)備的操作。
參考文獻
[1]陳國建.Visual C++寶典[M].電子工業(yè)出版社,2011.
[2]編碼解碼芯片PT2262/PT2272芯片原理簡介[EB/OL].http://www.51c51.com/test/c51test/B16.htm.