下面介绍的是在Windows平台下,基于无线网络的远程视频监控的客户端的实现。这里主要是参考了spcaview的实现机制,对网络视频流进行传输,并且调用Windows本地平台的SDL库来进行显示。
SDL是Simple DirectMedia Layer(简易直控媒体层)的缩写。它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了音频、键盘和鼠标(事件)、游戏摇杆等。当然,最重要的是提供了2D图形帧缓冲(Frame Buffer)的接口,以及为OpenGL与各种操作系统之间提供了统一的标准接口,以实现3D图形。
SDL支持主流的操作系统,包括Windows和Linux。它也支持其他平台(如BeOS,MacOS、MacOSX、FreeBSD、NetBSD、OpenBSD、BSD/OS、Solaris、IRIX和QNX等)。虽然SDL时常被比较为跨平台的DirectX,然而事实上SDL是定位成以精简的方式来完成基础的功能,它大幅度简化了控制图像、声音和输入/输出等工作所需撰写的代码。
这里主要分析程序的工作流程图,如图15-8所示。
图15-8 程序的工作流程图
1)首先,初始化Winsock。
2)接下来,初始化SDL。
3)建立套接字。
4)绑定端口。
5)进行监听。
6)读写sock,获取图像信息。(www.xing528.com)
7)获取系统时间。
8)调整图像大小,调用SDL显示。
当用户按下键盘上的<s>键时,通过SDL截获相应的请求,并将当前的一帧图像以系统时间命名保存到磁盘上。
通过无线网络连接到开发板上,两种视频监控方式比照如图15-9所示,该图是同时开启两种视频监控方式并且进行对比的截图。
图15-9 两种视频监控方式比照
下面可以使用基于SSH协议的Windows平台下的开源客户端PuTTY,通过无线网络登录到开发板上,对嵌入式系统进行远程维护和实时控制。基于SSH协议的远程管理和维护如图15-10所示。
图15-10 基于SSH协议的远程管理和维护
其中,可以通过top命令来查看嵌入式Linux系统的进程运行状态以及系统负载。当系统出现异常状况时,可以使用kill命令发送信号终止相应的进程。通过cat命令可以查看系统日志,以便获取系统详细信息。通过调用/etc/rc.d/init.d目录下的脚本可以开启或者关闭网络服务、视频服务器、Web服务器以及SSH服务器,甚至可以进行重启操作。这样,方便了管理员远程登录对开发板进行相应的维护,而不必亲自到现场通过串口对开发板进行操作。
这里,由于PuTTY无法直接使用ssh-keygen生成的私钥,所以需要通过PuTTYgen来进行私钥的格式转换。这样就可以直接通过私钥来进行远程登录。采用密钥的好处就是可以对通信过程中的所有数据进行加密,没有密钥是无法登录系统的,从而保证了整个通信过程的安全性。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。