基于Windows服務(wù)、網(wǎng)絡(luò )和串口投影機遠程控制設計
網(wǎng)絡(luò )偵聽(tīng)到新的連接后,就建立新線(xiàn)程并生成新的Socket對象,原線(xiàn)程繼續偵聽(tīng)網(wǎng)絡(luò ),新的Socket對象與客戶(hù)端的Socket對象建立連接,并接收客戶(hù)端發(fā)來(lái)的網(wǎng)絡(luò )數據幀。服務(wù)器端Socket對象收到網(wǎng)絡(luò )數據幀后,解析出串口數據幀,并讀出串口號和串口設置,根據串口號初始化本地計算機的 SerialPort串口組件,如波特率、停止位、數據長(cháng)度、握手連接等。以SerialPort組件的Open()方法打開(kāi)相應的串口;把從網(wǎng)絡(luò )數據幀解析出的串口數據,用SerialPort組件的Write()方法發(fā)送出去,以控制投影機的相應動(dòng)作;然后偵聽(tīng)正使用的串口資源,并通過(guò) SerialPort組件的異步方式.Read()方法讀入返回的應答信號。等待規定毫秒時(shí)間延時(shí)后,讀入串口接收緩存器,如有返回的串口數據,就把返回的串口數據加上IP頭,與TCP封裝成網(wǎng)絡(luò )數據幀,按接收到的客戶(hù)端IP地址發(fā)送出去。如在規定時(shí)間里沒(méi)有返回串口數據,表明外界嵌入式設備的串口資源有故障,就生成失敗串口數據封裝網(wǎng)絡(luò )數據幀發(fā)回到原先連接的客戶(hù)端。最后關(guān)閉正使用的Socket對象和串口資源,原Socket,對象同時(shí)繼續網(wǎng)絡(luò )偵聽(tīng)等待新的客戶(hù)端連接。Windows系統關(guān)閉時(shí),Windows服務(wù)控制管理SCM就關(guān)閉網(wǎng)絡(luò )與串口的通信程序,從而退出Win-dows服務(wù)系統后臺運行。
2 投影機遠程控制案例
2.1 “零成本”解決方案
根據上述的網(wǎng)絡(luò )、Windows服務(wù)和串口遠程控制開(kāi)發(fā)流程,可以使設計不再使用網(wǎng)絡(luò )中控硬件,但具備網(wǎng)絡(luò )中控的網(wǎng)絡(luò )與串口通信協(xié)議功能,以“零成本”方式實(shí)現投影機遠程控制。設計如圖3所示的基于網(wǎng)絡(luò )、Windows服務(wù)與串口通信應用。
整個(gè)項目系統中有4個(gè)信號源:計算機數據信號、便攜機數據信號、影碟機視頻信號、錄像機視頻信號,全部由投影機實(shí)現信號切換??刂仆队皺C開(kāi)機關(guān)機及信號源切換控制,由其串口與計算機的串口一連接。根據投影機不同的串口設置,客戶(hù)端發(fā)送的串口數據幀設置與計算機、投影機的串口設置相一致。計算機的串口二與電動(dòng)屏幕的串口連接(電動(dòng)屏幕通過(guò)一個(gè)小型AVR單片機控制的兩個(gè)繼電器來(lái)實(shí)現電動(dòng)屏幕的升、降和停止,AVR單片機有一個(gè)全雙工串口),同樣串口數據幀設置也與電動(dòng)屏幕的串口設置相一致??蛻?hù)端以網(wǎng)絡(luò )套接字Socket對象發(fā)送或接收網(wǎng)絡(luò )數據幀,根據遠程投影機或電動(dòng)屏幕的串口設置發(fā)送串口號和相應串口設置,并由若干串口控制數據代碼組成符合規定的串口數據幀,再按TCP/IP協(xié)議組成網(wǎng)絡(luò )數據幀,實(shí)現基于網(wǎng)絡(luò )、Windows服務(wù)和串口的投影機遠程控制。
2.2 投影機遠程冷啟動(dòng)開(kāi)機和延時(shí)關(guān)機
在沒(méi)有網(wǎng)絡(luò )中控的情況下,如果要實(shí)現投影機的遠程冷啟動(dòng)開(kāi)機和延時(shí)關(guān)機控制。首先要實(shí)現對投影機所連接的計算機進(jìn)行遠程冷啟動(dòng)開(kāi)機(喚醒功能),并能通過(guò)計算機的串口資源控制投影機的冷啟動(dòng)開(kāi)機和延時(shí)關(guān)機。計算機的硬件如主板、網(wǎng)卡等都要符合網(wǎng)絡(luò )開(kāi)機喚醒功能設置;計算機的軟件采用開(kāi)機后即可自動(dòng)運行的Windows服務(wù),以實(shí)現網(wǎng)絡(luò )與串口的數據協(xié)議轉換。
在主控客戶(hù)端確定需要喚醒遠程投影機所連接計算機時(shí),客戶(hù)端通過(guò)Socket廣播發(fā)送相應含有網(wǎng)絡(luò )喚醒數據幀的數據包給網(wǎng)絡(luò )中的計算機。當需要喚醒的計算機控制芯片發(fā)現數據包內包含本網(wǎng)卡的媒體訪(fǎng)問(wèn)控制(Media Access Control,MAC)地址信息的網(wǎng)絡(luò )喚醒數據幀后,就立刻通過(guò)網(wǎng)絡(luò )喚醒(Wake on Lan,WoL)連接線(xiàn)向計算機發(fā)出開(kāi)機信號,通知主板開(kāi)機。在網(wǎng)絡(luò )中,當計算機處于關(guān)機狀態(tài)時(shí),IP地址和計算機名字都不能識別機器的身份,惟一能識別其身份的只有它所帶網(wǎng)卡的物理地址,即MAC地址。每塊網(wǎng)卡的地址是惟一的,也就是說(shuō)網(wǎng)卡的MAc地址可以用來(lái)惟一地標識網(wǎng)絡(luò )上的某臺計算機。
網(wǎng)絡(luò )喚醒數據幀的格式為連續6 B的FF和連續重復16次的MAC地址。若要喚醒電腦網(wǎng)卡的MAC地址00-DF-IE-32-E7-CD,則其對應的網(wǎng)絡(luò )喚醒數據幀如圖4所示。
對于實(shí)現投影機的遠程關(guān)機,客戶(hù)端只需被控計算機的管理員賬號和密碼,就能控制或者進(jìn)入被控計算機的操作系統。其實(shí)現原理是視窗管理規范 (WindowsManagement Instrumentation,WMI)。通過(guò)WMI為客戶(hù)端用戶(hù)提供通用訪(fǎng)問(wèn)管理信息,設置客戶(hù)端在其本地計算機讀?。瘜?xiě)入/執行的權限,也包括關(guān)機設置。當客戶(hù)端發(fā)出遠程關(guān)機命令時(shí),被控計算機通過(guò)WMI確認客戶(hù)端用戶(hù)使用權限,使用上面所述的Windows服務(wù),實(shí)現網(wǎng)絡(luò )數據幀到串口數據幀的協(xié)議轉換,并通過(guò)計算機串口向投影機發(fā)送延時(shí)關(guān)機信號。投影機延時(shí)關(guān)機完成后,根據客戶(hù)端的要求,被控計算機也可隨即關(guān)閉Windows服務(wù),并自動(dòng)關(guān)機,最后整個(gè)系統進(jìn)入遠程冷啟動(dòng)開(kāi)機的功能。
3 結 語(yǔ)
利用基于網(wǎng)絡(luò )、Windows服務(wù)和串口的數據通信技術(shù),通過(guò)計算機作為中介,實(shí)現了對投影機遠程冷啟動(dòng)開(kāi)機和延時(shí)關(guān)機;并使用計算機網(wǎng)絡(luò )套接字 Socket和SeriallPort串口控件,完成了在無(wú)網(wǎng)絡(luò )中控硬件支持的情況下,利用本地計算機網(wǎng)絡(luò )資源和串口資源,以及投影機本身信號源切換資源,實(shí)現對投影機的“零成本”遠程控制。同時(shí)基于網(wǎng)絡(luò )、Windows服務(wù)和串口的數據通信有更多的用途,在只有計算機而又要實(shí)現對被控設備進(jìn)行網(wǎng)絡(luò )遠程控制時(shí),就要應用到這種技術(shù)。
評論