張會銘 陸云龍 雷志華
摘 要:在小型或零星的多媒體教室實現對投影機的網絡遠程控制,仍然值得進一步研究。在此闡述Windows服務的基本特性,分析服務器端網絡數據幀與串口數據幀通信協議的轉換,論述基于Windows服務的軟件設計流程。進而提出在無網絡中控的情況下,對投影機實現遠程控制的“零成本”解決方案,并介紹投影機遠程冷啟動開機和延時關機的方法。基于Windows服務的數據通信有著在特殊應用中的優勢。
關鍵詞:Windows服務;網絡;串口;遠程控制;投影機
中圖分類號: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 引 言
在小型、零星或分散的多媒體教室里,如果吊裝投影機后,再配置一套多媒體教室設備網絡集成中央控制系統(簡稱網絡中控)顯得有些多余。因為網絡中控的主要控制對象是投影機,是圍繞投影機服務而實現多媒體教室設備的集成控制。不過投影機已經具備了信號源的切換功能,與其連接的計算機又有網絡和串口資源,而且網絡中控還必須占用一個目前網絡資源緊張的IP地址。
為了充分利用投影機和計算機自有的硬件軟件資源,這里使用Microsoft Visual Studio 2005[1]集成開發工具和.NET 2.0框架,采用C#編程語言,提出一種既能在運行時不需用戶交戶的窗口界面、不與其它應用進程發生沖突,又能實現投影機的遠程冷啟動開機和延時關機,基于網絡、Windows服務[2]和串口的投影機遠程控制“零成本”解決方案。
1 關鍵技術的實現
1.1 計算機Windows服務技術特征
一個計算機Windows服務程序[2,3]是沒有Windows窗口界面的后臺運行程序,是在Windows操作系統下不要求用戶交互而能在后臺運行特定功能的可執行應用程序。對于自動啟動的Windows服務程序,在Windows啟動或是重啟之后,用戶登錄之前就開始執行,隨Windows系統關閉而最后停止。Windows服務程序的應用范圍很廣,典型的Windows服務程序包含硬件控制、應用程序監視、系統級應用、診斷、報告、Web和文件系統服務等功能。
Windows服務應用程序的啟動由Windows服務控制管理器(Service Control Manager,SCM)完成,而SCM通過維護數據庫對已經安裝到系統的所有服務和驅動程序進行統一而安全的控制和管理,是一個遠程進程調用服務器,在Windows操作系統導入時自動啟動。Windows服務分為服務應用程序啟動、服務程序監控及運行和服務程序安裝三個部分。這三部分通過安裝程序組合為一個完整的.exe文件。
實現投影機的遠程控制,開發用戶主要精力放在網絡與串口通信協議及程序設計上。與投影機連接的計算機設置為服務器端,由服務器端的網絡與串口通信程序轉發客戶端發送的控制信號實現對投影機控制,或作為返回投影機的應答信號。顯然,計算機只是數據信號轉發的硬件軟件中介,網絡與串口通信軟件只能在計算機的Windows操作系統后臺進行,即Windows服務承擔此特殊任務。這是實現硬件控制和應用程序監視,并以軟件設計為主的解決方案。.NET框架簡化了Windows服務程序的創建和控制過程,其中啟動函數OnStart()和關閉函數OnClose()都是Windows服務開發重點。
1.2 網絡數據幀與串口幀的通信協議設計
為了在計算機啟動后立即監聽網絡,及時轉發客戶端發來的控制信號到投影機,使投影機實現相應的動作,則計算機首先必須實現基于Windows服務的網絡和串口的轉換協議,定義圖1所示網絡數據幀和串口數據幀格式。服務器和客戶端都以網絡數據幀來通信,網絡數據幀包含IP頭、TCP頭和若干串口數據幀。由于服務器端的計算機可能要使用多個串口控制嵌入式設備,同時因不同廠家生產投影機的串口波特率、效驗位、數據位、停止位等都不一致。無法確定所有投影機的串口設置,串口幀除了串口數據(N位)外,還需要在串口數據前加串口號(1位)、串口設置(1位)。為了編程方便,設定統一串口幀長度,對于不夠長度的,以填充位(為0)來補齊。在允許網絡數據幀最大長度的情況下,可以一個網絡數據幀包含若干個串口數據幀,各個串口數據幀以串口幀頭和串口幀尾區分開。

1.3 網絡與串口通信軟件設計
由上面論述可知,與投影機連接的計算機設置為服務器端。其軟件設計[4,5]采用客戶機/服務器(C/S)模型,與遠程客戶端實現網絡通信,都要建立通信網絡套接字Socket對象,以后服務器端和客戶端通過這個套接字進行網絡通信。.NET 2.0提供了SerialPort串口組件,以完成與投影機或其他嵌入式設備的串口數據信號轉發。
在服務器端,基于計算機Windows服務的關鍵程序是網絡與串口通信程序設計,網絡與串口通信主程序流程圖如圖2所示。服務控制管理器SCM在Windows系統啟動后就調用網絡與串口通信程序的OnStart()函數。在OnStart()函數里建立新的線程,并建立新的Socket對象,使用bind()函數綁定本地計算機的IP地址和協議端口,通過listen()函數監聽該協議端口。為了提高計算機的運行效率,采用非阻塞異步Socket編程。

網絡偵聽到新的連接后,就建立新線程并生成新的Socket對象,原線程繼續偵聽網絡,新的Socket對象與客戶端的Socket對象建立連接,并接收客戶端發來的網絡數據幀。服務器端Socket對象收到網絡數據幀后,解析出串口數據幀,并讀出串口號和串口設置,根據串口號初始化本地計算機的SerialPort串口組件,如波特率、停止位、數據長度、握手連接等。以SerialPort組件的Open()方法打開相應的串口;把從網絡數據幀解析出的串口數據,用SerialPort組件的Write()方法發送出去,以控制投影機的相應動作;然后偵聽正使用的串口資源,并通過SerialPort組件的異步方式Read()方法讀入返回的應答信號。等待規定毫秒時間延時后,讀入串口接收緩存器,如有返回的串口數據,就把返回的串口數據加上IP頭,與TCP封裝成網絡數據幀,按接收到的客戶端IP地址發送出去。如在規定時間里沒有返回串口數據,表明外界嵌入式設備的串口資源有故障,就生成失敗串口數據封裝網絡數據幀發回到原先連接的客戶端。最后關閉正使用的Socket對象和串口資源,原Socket對象同時繼續網絡偵聽等待新的客戶端連接。Windows系統關閉時,Windows服務控制管理SCM就關閉網絡與串口的通信程序,從而退出Windows服務系統后臺運行。
2 投影機遠程控制案例
2.1 “零成本”解決方案
根據上述的網絡、Windows服務和串口遠程控制開發流程,可以使設計不再使用網絡中控硬件,但具備網絡中控的網絡與串口通信協議功能,以“零成本”方式[6,7]實現投影機遠程控制。設計如圖3所示的基于網絡、Windows服務與串口通信應用。

整個項目系統中有4個信號源:計算機數據信號、便攜機數據信號、影碟機視頻信號、錄像機視頻信號,全部由投影機實現信號切換。控制投影機開機關機及信號源切換控制,由其串口與計算機的串口一連接。根據投影機不同的串口設置,客戶端發送的串口數據幀設置與計算機、投影機的串口設置相一致。計算機的串口二與電動屏幕的串口連接(電動屏幕通過一個小型AVR單片機[8]控制的兩個繼電器來實現電動屏幕的升、降和停止,AVR單片機有一個全雙工串口),同樣串口數據幀設置也與電動屏幕的串口設置相一致。客戶端以網絡套接字Socket對象發送或接收網絡數據幀,根據遠程投影機或電動屏幕的串口設置發送串口號和相應串口設置,并由若干串口控制數據代碼組成符合規定的串口數據幀,再按TCP/IP協議組成網絡數據幀,實現基于網絡、Windows服務和串口的投影機遠程控制。
2.2 投影機遠程冷啟動開機和延時關機
在沒有網絡中控的情況下,如果要實現投影機的遠程冷啟動開機和延時關機[9,10]控制。首先要實現對投影機所連接的計算機進行遠程冷啟動開機(喚醒功能),并能通過計算機的串口資源控制投影機的冷啟動開機和延時關機。計算機的硬件如主板、網卡等都要符合網絡開機喚醒功能設置;計算機的軟件采用開機后即可自動運行的Windows服務,以實現網絡與串口的數據協議轉換。
在主控客戶端確定需要喚醒遠程投影機所連接計算機時,客戶端通過Socket廣播發送相應含有網絡喚醒數據幀的數據包給網絡中的計算機。當需要喚醒的計算機控制芯片發現數據包內包含本網卡的媒體訪問控制(Media Access Control,MAC)地址信息的網絡喚醒數據幀后,就立刻通過網絡喚醒(Wake on Lan,WoL)連接線向計算機發出開機信號,通知主板開機。在網絡中,當計算機處于關機狀態時,IP地址和計算機名字都不能識別機器的身份,惟一能識別其身份的只有它所帶網卡的物理地址,即MAC地址。每塊網卡的地址是惟一的,也就是說網卡的MAC 地址可以用來惟一地標識網絡上的某臺計算機。
網絡喚醒數據幀的格式為連續6 B的FF和連續重復16次的MAC地址。若要喚醒電腦網卡的MAC地址00-DF-1E-32-E7-CD,則其對應的網絡喚醒數據幀如圖4所示。

對于實現投影機的遠程關機,客戶端只需被控計算機的管理員賬號和密碼,就能控制或者進入被控計算機的操作系統。其實現原理是視窗管理規范(Windows Management Instrumentation,WMI)[11]。通過WMI為客戶端用戶提供通用訪問管理信息,設置客戶端在其本地計算機讀取/寫入/執行的權限,也包括關機設置。當客戶端發出遠程關機命令時,被控計算機通過WMI確認客戶端用戶使用權限,使用上面所述的Windows服務,實現網絡數據幀到串口數據幀的協議轉換,并通過計算機串口向投影機發送延時關機信號。投影機延時關機完成后,根據客戶端的要求,被控計算機也可隨即關閉Windows服務,并自動關機,最后整個系統進入遠程冷啟動開機的功能。
3 結 語
利用基于網絡、Windows服務和串口的數據通信技術,通過計算機作為中介,實現了對投影機遠程冷啟動開機和延時關機;并使用計算機網絡套接字Socket和SerialPort串口控件,完成了在無網絡中控硬件支持的情況下,利用本地計算機網絡資源和串口資源,以及投影機本身信號源切換資源,實現對投影機的“零成本”遠程控制。同時基于網絡、Windows 服務和串口的數據通信有更多的用途,在只有計算機而又要實現對被控設備進行網絡遠程控制時,就要應用到這種技術。
參考文獻
[1]鄒建峰,周山峰,項細威.C#企業級開發案例精解[M].北京:人民郵電出版社,2006.
[2]顏聽,李臘元.Windows的服務質量機制及其實現[J].計算機應用研究,2004(5):241,257.
[3]廖樂林.通用并發客戶服務程序設計技術研究[J].科技促進發展,2007,31(6):8-10.
[4]白日東,范悅.基于Windows Sockets的通信應用程序開發[J].吉林工程技術師范學院學報,2007,23(12):60-61.
[5]華澤璽,王長林,尹忠科,等.基于主動發送/串口監聽模式的實時數據采集[J].西南交通大學學報,2005,40(1):35-38.
[6]薛紅.在金盤系統中實現基于.NET和Windows服務的超期借閱電子郵件催還服務[J].現代圖書情報技術,2006(6):80-84.
[7]田先亮,劉文蘋.Windows服務在計算機房管理中的應用[J].中國科技信息,2007(12):109-110.
[8]馬潮.AVR單片機嵌入式系統原理與應用實踐[M].北京:北京航空航天大學出版社,2007.
[9]彭建業,王海峰.基于VB 6.0的計算機遠程關機的設計與實現[J].現代電子技術,2007,30(22):85-86.
[10]陸云龍,張會銘,雷志華.多媒體教室設備遠程冷啟動開機和次序延時關機的設計[J].中國現代教育裝備,2007(8):51-53.
[11]周中雨.基于WMI的Windows服務器監視系統的研究與實現[J].計算機系統應用,2004(10):52-54.