网络侦听到新的连接后,就建立新线程并生成新的Socket对象,原线程继续侦听网络,新的Socket对象与客户端的Socket对象建立连接,并接收客户端发来的网络数据帧。服务器端Socket对象收到网络数据帧后,解析出串口数据帧,并读出串口号和串口设置,根据串口号初始化本地计算机的 SerialPort串口组件,如波特率、停止位、数据长度、握手连接等。以SerialPort组件的Open()方法打开相应的串口;把从网络数据帧解析出的串口数据,用SerialPort组件的Write()方法发送出去,以控制投影机的相应动作;然后侦听正使用的串口资源,并通过 SerialPort组件的异步方式.Read()方法读入返回的应答信号。等待规定毫秒时间延时后,读入串口接收缓存器,如有返回的串口数据,就把返回的串口数据加上IP头,与TCP封装成网络数据帧,按接收到的客户端IP地址发送出去。如在规定时间里没有返回串口数据,表明外界嵌入式设备的串口资源有故障,就生成失败串口数据封装网络数据帧发回到原先连接的客户端。最后关闭正使用的Socket对象和串口资源,原Socket,对象同时继续网络侦听等待新的客户端连接。Windows系统关闭时,Windows服务控制管理SCM就关闭网络与串口的通信程序,从而退出Win-dows服务系统后台运行。
2 投影机远程控制案例
2.1 “零成本”解决方案
根据上述的网络、Windows服务和串口远程控制开发流程,可以使设计不再使用网络中控硬件,但具备网络中控的网络与串口通信协议功能,以“零成本”方式实现投影机远程控制。设计如图3所示的基于网络、Windows服务与串口通信应用。
整个项目系统中有4个信号源:计算机数据信号、便携机数据信号、影碟机视频信号、录像机视频信号,全部由投影机实现信号切换。控制投影机开机关机及信号源切换控制,由其串口与计算机的串口一连接。根据投影机不同的串口设置,客户端发送的串口数据帧设置与计算机、投影机的串口设置相一致。计算机的串口二与电动屏幕的串口连接(电动屏幕通过一个小型AVR单片机控制的两个继电器来实现电动屏幕的升、降和停止,AVR单片机有一个全双工串口),同样串口数据帧设置也与电动屏幕的串口设置相一致。客户端以网络套接字Socket对象发送或接收网络数据帧,根据远程投影机或电动屏幕的串口设置发送串口号和相应串口设置,并由若干串口控制数据代码组成符合规定的串口数据帧,再按TCP/IP协议组成网络数据帧,实现基于网络、Windows服务和串口的投影机远程控制。
2.2 投影机远程冷启动开机和延时关机
在没有网络中控的情况下,如果要实现投影机的远程冷启动开机和延时关机控制。首先要实现对投影机所连接的计算机进行远程冷启动开机(唤醒功能),并能通过计算机的串口资源控制投影机的冷启动开机和延时关机。计算机的硬件如主板、网卡等都要符合网络开机唤醒功能设置;计算机的软件采用开机后即可自动运行的Windows服务,以实现网络与串口的数据协议转换。
在主控客户端确定需要唤醒远程投影机所连接计算机时,客户端通过Socket广播发送相应含有网络唤醒数据帧的数据包给网络中的计算机。当需要唤醒的计算机控制芯片发现数据包内包含本网卡的媒体访问控制(Media Access Control,MAC)地址信息的网络唤醒数据帧后,就立刻通过网络唤醒(Wake on Lan,WoL)连接线向计算机发出开机信号,通知主板开机。在网络中,当计算机处于关机状态时,IP地址和计算机名字都不能识别机器的身份,惟一能识别其身份的只有它所带网卡的物理地址,即MAC地址。每块网卡的地址是惟一的,也就是说网卡的MAc地址可以用来惟一地标识网络上的某台计算机。
网络唤醒数据帧的格式为连续6 B的FF和连续重复16次的MAC地址。若要唤醒电脑网卡的MAC地址00-DF-IE-32-E7-CD,则其对应的网络唤醒数据帧如图4所示。
对于实现投影机的远程关机,客户端只需被控计算机的管理员账号和密码,就能控制或者进入被控计算机的操作系统。其实现原理是视窗管理规范 (WindowsManagement Instrumentation,WMI)。通过WMI为客户端用户提供通用访问管理信息,设置客户端在其本地计算机读取/写入/执行的权限,也包括关机设置。当客户端发出远程关机命令时,被控计算机通过WMI确认客户端用户使用权限,使用上面所述的Windows服务,实现网络数据帧到串口数据帧的协议转换,并通过计算机串口向投影机发送延时关机信号。投影机延时关机完成后,根据客户端的要求,被控计算机也可随即关闭Windows服务,并自动关机,最后整个系统进入远程冷启动开机的功能。
3 结 语
利用基于网络、Windows服务和串口的数据通信技术,通过计算机作为中介,实现了对投影机远程冷启动开机和延时关机;并使用计算机网络套接字 Socket和SeriallPort串口控件,完成了在无网络中控硬件支持的情况下,利用本地计算机网络资源和串口资源,以及投影机本身信号源切换资源,实现对投影机的“零成本”远程控制。同时基于网络、Windows服务和串口的数据通信有更多的用途,在只有计算机而又要实现对被控设备进行网络远程控制时,就要应用到这种技术。