張會銘 陸云龍 雷志華
摘 要:在小型或零星的多媒體教室實現(xiàn)對投影機的網(wǎng)絡遠程控制,仍然值得進一步研究。在此闡述Windows服務的基本特性,分析服務器端網(wǎng)絡數(shù)據(jù)幀與串口數(shù)據(jù)幀通信協(xié)議的轉(zhuǎn)換,論述基于Windows服務的軟件設計流程。進而提出在無網(wǎng)絡中控的情況下,對投影機實現(xiàn)遠程控制的“零成本”解決方案,并介紹投影機遠程冷啟動開機和延時關(guān)機的方法?;赪indows服務的數(shù)據(jù)通信有著在特殊應用中的優(yōu)勢。
關(guān)鍵詞:Windows服務;網(wǎng)絡;串口;遠程控制;投影機
中圖分類號:TP393文獻標識碼:B
文章編號:1004-373X(2009)10-080-03
Design of Remote Control of Projector Based on Windows Service and Network Serial Interface
ZHANG Huiming,LU Yunlong,LEI Zhihua
(Modern Educational Technology Center,Huazhong University of Science and Technology,Wuhan,430074,China)
Abstract:It is still desirable to study and develop remote control on the projector in miniature or scattered multimedia classroom.The basic characteristics of Windows service is elaborated in this paper,and the communication protocol between network data frames and serial interface data frames is ananlyzed,and the software design process based on Windows service is discussed.Furthermore,a solution withzero-cost of the remote control on projector has been put forward when there is no availability of central network control.The method of remote coldstart-on and postpone-off of projector has been introduced at the same time.The data communication based on Windows service is innovative points.The advantage of this technique in some special application has been illuminated.
Keywords:Windows service;network;serial interface;remote control;projector
0 引 言
在小型、零星或分散的多媒體教室里,如果吊裝投影機后,再配置一套多媒體教室設備網(wǎng)絡集成中央控制系統(tǒng)(簡稱網(wǎng)絡中控)顯得有些多余。因為網(wǎng)絡中控的主要控制對象是投影機,是圍繞投影機服務而實現(xiàn)多媒體教室設備的集成控制。不過投影機已經(jīng)具備了信號源的切換功能,與其連接的計算機又有網(wǎng)絡和串口資源,而且網(wǎng)絡中控還必須占用一個目前網(wǎng)絡資源緊張的IP地址。
為了充分利用投影機和計算機自有的硬件軟件資源,這里使用Microsoft Visual Studio 2005[1]集成開發(fā)工具和.NET 2.0框架,采用C#編程語言,提出一種既能在運行時不需用戶交戶的窗口界面、不與其它應用進程發(fā)生沖突,又能實現(xiàn)投影機的遠程冷啟動開機和延時關(guān)機,基于網(wǎng)絡、Windows服務[2]和串口的投影機遠程控制“零成本”解決方案。
1 關(guān)鍵技術(shù)的實現(xiàn)
1.1 計算機Windows服務技術(shù)特征
一個計算機Windows服務程序[2,3]是沒有Windows窗口界面的后臺運行程序,是在Windows操作系統(tǒng)下不要求用戶交互而能在后臺運行特定功能的可執(zhí)行應用程序。對于自動啟動的Windows服務程序,在Windows啟動或是重啟之后,用戶登錄之前就開始執(zhí)行,隨Windows系統(tǒng)關(guān)閉而最后停止。Windows服務程序的應用范圍很廣,典型的Windows服務程序包含硬件控制、應用程序監(jiān)視、系統(tǒng)級應用、診斷、報告、Web和文件系統(tǒng)服務等功能。
Windows服務應用程序的啟動由Windows服務控制管理器(Service Control Manager,SCM)完成,而SCM通過維護數(shù)據(jù)庫對已經(jīng)安裝到系統(tǒng)的所有服務和驅(qū)動程序進行統(tǒng)一而安全的控制和管理,是一個遠程進程調(diào)用服務器,在Windows操作系統(tǒng)導入時自動啟動。Windows服務分為服務應用程序啟動、服務程序監(jiān)控及運行和服務程序安裝三個部分。這三部分通過安裝程序組合為一個完整的.exe文件。
實現(xiàn)投影機的遠程控制,開發(fā)用戶主要精力放在網(wǎng)絡與串口通信協(xié)議及程序設計上。與投影機連接的計算機設置為服務器端,由服務器端的網(wǎng)絡與串口通信程序轉(zhuǎn)發(fā)客戶端發(fā)送的控制信號實現(xiàn)對投影機控制,或作為返回投影機的應答信號。顯然,計算機只是數(shù)據(jù)信號轉(zhuǎn)發(fā)的硬件軟件中介,網(wǎng)絡與串口通信軟件只能在計算機的Windows操作系統(tǒng)后臺進行,即Windows服務承擔此特殊任務。這是實現(xiàn)硬件控制和應用程序監(jiān)視,并以軟件設計為主的解決方案。.NET框架簡化了Windows服務程序的創(chuàng)建和控制過程,其中啟動函數(shù)OnStart()和關(guān)閉函數(shù)OnClose()都是Windows服務開發(fā)重點。
1.2 網(wǎng)絡數(shù)據(jù)幀與串口幀的通信協(xié)議設計
為了在計算機啟動后立即監(jiān)聽網(wǎng)絡,及時轉(zhuǎn)發(fā)客戶端發(fā)來的控制信號到投影機,使投影機實現(xiàn)相應的動作,則計算機首先必須實現(xiàn)基于Windows服務的網(wǎng)絡和串口的轉(zhuǎn)換協(xié)議,定義圖1所示網(wǎng)絡數(shù)據(jù)幀和串口數(shù)據(jù)幀格式。服務器和客戶端都以網(wǎng)絡數(shù)據(jù)幀來通信,網(wǎng)絡數(shù)據(jù)幀包含IP頭、TCP頭和若干串口數(shù)據(jù)幀。由于服務器端的計算機可能要使用多個串口控制嵌入式設備,同時因不同廠家生產(chǎn)投影機的串口波特率、效驗位、數(shù)據(jù)位、停止位等都不一致。無法確定所有投影機的串口設置,串口幀除了串口數(shù)據(jù)(N位)外,還需要在串口數(shù)據(jù)前加串口號(1位)、串口設置(1位)。為了編程方便,設定統(tǒng)一串口幀長度,對于不夠長度的,以填充位(為0)來補齊。在允許網(wǎng)絡數(shù)據(jù)幀最大長度的情況下,可以一個網(wǎng)絡數(shù)據(jù)幀包含若干個串口數(shù)據(jù)幀,各個串口數(shù)據(jù)幀以串口幀頭和串口幀尾區(qū)分開。
1.3 網(wǎng)絡與串口通信軟件設計
由上面論述可知,與投影機連接的計算機設置為服務器端。其軟件設計[4,5]采用客戶機/服務器(C/S)模型,與遠程客戶端實現(xiàn)網(wǎng)絡通信,都要建立通信網(wǎng)絡套接字Socket對象,以后服務器端和客戶端通過這個套接字進行網(wǎng)絡通信。.NET 2.0提供了SerialPort串口組件,以完成與投影機或其他嵌入式設備的串口數(shù)據(jù)信號轉(zhuǎn)發(fā)。
在服務器端,基于計算機Windows服務的關(guān)鍵程序是網(wǎng)絡與串口通信程序設計,網(wǎng)絡與串口通信主程序流程圖如圖2所示。服務控制管理器SCM在Windows系統(tǒng)啟動后就調(diào)用網(wǎng)絡與串口通信程序的OnStart()函數(shù)。在OnStart()函數(shù)里建立新的線程,并建立新的Socket對象,使用bind()函數(shù)綁定本地計算機的IP地址和協(xié)議端口,通過listen()函數(shù)監(jiān)聽該協(xié)議端口。為了提高計算機的運行效率,采用非阻塞異步Socket編程。
網(wǎng)絡偵聽到新的連接后,就建立新線程并生成新的Socket對象,原線程繼續(xù)偵聽網(wǎng)絡,新的Socket對象與客戶端的Socket對象建立連接,并接收客戶端發(fā)來的網(wǎng)絡數(shù)據(jù)幀。服務器端Socket對象收到網(wǎng)絡數(shù)據(jù)幀后,解析出串口數(shù)據(jù)幀,并讀出串口號和串口設置,根據(jù)串口號初始化本地計算機的SerialPort串口組件,如波特率、停止位、數(shù)據(jù)長度、握手連接等。以SerialPort組件的Open()方法打開相應的串口;把從網(wǎng)絡數(shù)據(jù)幀解析出的串口數(shù)據(jù),用SerialPort組件的Write()方法發(fā)送出去,以控制投影機的相應動作;然后偵聽正使用的串口資源,并通過SerialPort組件的異步方式Read()方法讀入返回的應答信號。等待規(guī)定毫秒時間延時后,讀入串口接收緩存器,如有返回的串口數(shù)據(jù),就把返回的串口數(shù)據(jù)加上IP頭,與TCP封裝成網(wǎng)絡數(shù)據(jù)幀,按接收到的客戶端IP地址發(fā)送出去。如在規(guī)定時間里沒有返回串口數(shù)據(jù),表明外界嵌入式設備的串口資源有故障,就生成失敗串口數(shù)據(jù)封裝網(wǎng)絡數(shù)據(jù)幀發(fā)回到原先連接的客戶端。最后關(guān)閉正使用的Socket對象和串口資源,原Socket對象同時繼續(xù)網(wǎng)絡偵聽等待新的客戶端連接。Windows系統(tǒng)關(guān)閉時,Windows服務控制管理SCM就關(guān)閉網(wǎng)絡與串口的通信程序,從而退出Windows服務系統(tǒng)后臺運行。
2 投影機遠程控制案例
2.1 “零成本”解決方案
根據(jù)上述的網(wǎng)絡、Windows服務和串口遠程控制開發(fā)流程,可以使設計不再使用網(wǎng)絡中控硬件,但具備網(wǎng)絡中控的網(wǎng)絡與串口通信協(xié)議功能,以“零成本”方式[6,7]實現(xiàn)投影機遠程控制。設計如圖3所示的基于網(wǎng)絡、Windows服務與串口通信應用。
整個項目系統(tǒng)中有4個信號源:計算機數(shù)據(jù)信號、便攜機數(shù)據(jù)信號、影碟機視頻信號、錄像機視頻信號,全部由投影機實現(xiàn)信號切換??刂仆队皺C開機關(guān)機及信號源切換控制,由其串口與計算機的串口一連接。根據(jù)投影機不同的串口設置,客戶端發(fā)送的串口數(shù)據(jù)幀設置與計算機、投影機的串口設置相一致。計算機的串口二與電動屏幕的串口連接(電動屏幕通過一個小型AVR單片機[8]控制的兩個繼電器來實現(xiàn)電動屏幕的升、降和停止,AVR單片機有一個全雙工串口),同樣串口數(shù)據(jù)幀設置也與電動屏幕的串口設置相一致??蛻舳艘跃W(wǎng)絡套接字Socket對象發(fā)送或接收網(wǎng)絡數(shù)據(jù)幀,根據(jù)遠程投影機或電動屏幕的串口設置發(fā)送串口號和相應串口設置,并由若干串口控制數(shù)據(jù)代碼組成符合規(guī)定的串口數(shù)據(jù)幀,再按TCP/IP協(xié)議組成網(wǎng)絡數(shù)據(jù)幀,實現(xiàn)基于網(wǎng)絡、Windows服務和串口的投影機遠程控制。
2.2 投影機遠程冷啟動開機和延時關(guān)機
在沒有網(wǎng)絡中控的情況下,如果要實現(xiàn)投影機的遠程冷啟動開機和延時關(guān)機[9,10]控制。首先要實現(xiàn)對投影機所連接的計算機進行遠程冷啟動開機(喚醒功能),并能通過計算機的串口資源控制投影機的冷啟動開機和延時關(guān)機。計算機的硬件如主板、網(wǎng)卡等都要符合網(wǎng)絡開機喚醒功能設置;計算機的軟件采用開機后即可自動運行的Windows服務,以實現(xiàn)網(wǎng)絡與串口的數(shù)據(jù)協(xié)議轉(zhuǎn)換。
在主控客戶端確定需要喚醒遠程投影機所連接計算機時,客戶端通過Socket廣播發(fā)送相應含有網(wǎng)絡喚醒數(shù)據(jù)幀的數(shù)據(jù)包給網(wǎng)絡中的計算機。當需要喚醒的計算機控制芯片發(fā)現(xiàn)數(shù)據(jù)包內(nèi)包含本網(wǎng)卡的媒體訪問控制(Media Access Control,MAC)地址信息的網(wǎng)絡喚醒數(shù)據(jù)幀后,就立刻通過網(wǎng)絡喚醒(Wake on Lan,WoL)連接線向計算機發(fā)出開機信號,通知主板開機。在網(wǎng)絡中,當計算機處于關(guān)機狀態(tài)時,IP地址和計算機名字都不能識別機器的身份,惟一能識別其身份的只有它所帶網(wǎng)卡的物理地址,即MAC地址。每塊網(wǎng)卡的地址是惟一的,也就是說網(wǎng)卡的MAC 地址可以用來惟一地標識網(wǎng)絡上的某臺計算機。
網(wǎng)絡喚醒數(shù)據(jù)幀的格式為連續(xù)6 B的FF和連續(xù)重復16次的MAC地址。若要喚醒電腦網(wǎng)卡的MAC地址00-DF-1E-32-E7-CD,則其對應的網(wǎng)絡喚醒數(shù)據(jù)幀如圖4所示。
對于實現(xiàn)投影機的遠程關(guān)機,客戶端只需被控計算機的管理員賬號和密碼,就能控制或者進入被控計算機的操作系統(tǒng)。其實現(xiàn)原理是視窗管理規(guī)范(Windows Management Instrumentation,WMI)[11]。通過WMI為客戶端用戶提供通用訪問管理信息,設置客戶端在其本地計算機讀取/寫入/執(zhí)行的權(quán)限,也包括關(guān)機設置。當客戶端發(fā)出遠程關(guān)機命令時,被控計算機通過WMI確認客戶端用戶使用權(quán)限,使用上面所述的Windows服務,實現(xiàn)網(wǎng)絡數(shù)據(jù)幀到串口數(shù)據(jù)幀的協(xié)議轉(zhuǎn)換,并通過計算機串口向投影機發(fā)送延時關(guān)機信號。投影機延時關(guān)機完成后,根據(jù)客戶端的要求,被控計算機也可隨即關(guān)閉Windows服務,并自動關(guān)機,最后整個系統(tǒng)進入遠程冷啟動開機的功能。
3 結(jié) 語
利用基于網(wǎng)絡、Windows服務和串口的數(shù)據(jù)通信技術(shù),通過計算機作為中介,實現(xiàn)了對投影機遠程冷啟動開機和延時關(guān)機;并使用計算機網(wǎng)絡套接字Socket和SerialPort串口控件,完成了在無網(wǎng)絡中控硬件支持的情況下,利用本地計算機網(wǎng)絡資源和串口資源,以及投影機本身信號源切換資源,實現(xiàn)對投影機的“零成本”遠程控制。同時基于網(wǎng)絡、Windows 服務和串口的數(shù)據(jù)通信有更多的用途,在只有計算機而又要實現(xiàn)對被控設備進行網(wǎng)絡遠程控制時,就要應用到這種技術(shù)。
參考文獻
[1]鄒建峰,周山峰,項細威.C#企業(yè)級開發(fā)案例精解[M].北京:人民郵電出版社,2006.
[2]顏聽,李臘元.Windows的服務質(zhì)量機制及其實現(xiàn)[J].計算機應用研究,2004(5):241,257.
[3]廖樂林.通用并發(fā)客戶服務程序設計技術(shù)研究[J].科技促進發(fā)展,2007,31(6):8-10.
[4]白日東,范悅.基于Windows Sockets的通信應用程序開發(fā)[J].吉林工程技術(shù)師范學院學報,2007,23(12):60-61.
[5]華澤璽,王長林,尹忠科,等.基于主動發(fā)送/串口監(jiān)聽模式的實時數(shù)據(jù)采集[J].西南交通大學學報,2005,40(1):35-38.
[6]薛紅.在金盤系統(tǒng)中實現(xiàn)基于.NET和Windows服務的超期借閱電子郵件催還服務[J].現(xiàn)代圖書情報技術(shù),2006(6):80-84.
[7]田先亮,劉文蘋.Windows服務在計算機房管理中的應用[J].中國科技信息,2007(12):109-110.
[8]馬潮.AVR單片機嵌入式系統(tǒng)原理與應用實踐[M].北京:北京航空航天大學出版社,2007.
[9]彭建業(yè),王海峰.基于VB 6.0的計算機遠程關(guān)機的設計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2007,30(22):85-86.
[10]陸云龍,張會銘,雷志華.多媒體教室設備遠程冷啟動開機和次序延時關(guān)機的設計[J].中國現(xiàn)代教育裝備,2007(8):51-53.
[11]周中雨.基于WMI的Windows服務器監(jiān)視系統(tǒng)的研究與實現(xiàn)[J].計算機系統(tǒng)應用,2004(10):52-54.