基于ARM与WinCE的演示系统软件设计
扫描二维码
随时随地手机看文章
引言
演示系统从最初的纯光学幻灯机开始,已经有了数十年的历史。发展至今,凭借与PC的整合优势,数字投影技术已经成为主流。传统意义上的数字演示系统由PC和投影设备组成,实现控制器、信号源和光学投影3部分功能。在演示过程中,由演示者直接操作PC,并由PC将待显示信号输出到投影设备。PC作为控制器和信号源,处于核心地位。在这一结构中,以PC作为信号源有利于发挥其较强的处理能力,能够带来比较好的演示效果;同时,作为控制器,PC可以利用其丰富的人机交互能力提供便捷的操作。但另一方面,以PC为核心的演示系统也存在以下局限性:
① 对PC的依赖性。演示系统必须配备1台PC,作为操作和提供演示信号之用,为演示带来不便。
② 演示者的使用环境不能无缝迁移。在一些专业性较强的领域,演示者往往需要可以运行专业软件的环境,而专用于演示的PC往往不具备这种条件,演示效果自然受到很大影响。
1 总体设计思路和流程
1.1 实现目标
针对传统演示系统存在的上述不足,以提高演示系统便携性、易用性为目标,嵌入式演示系统希望通过其他手段取代PC在演示系统的核心地位,从而使演示人员借助尽量少的设备,甚至不需要额外设备就能完成演示,并具有良好的环境适应能力,使演示者获得更好的使用体验。
1.2 实现途径和方法
现阶段,设备厂商主要通过配备USB、1394、读卡器等接口的方式来提高系统的便携性和易用性。这些接口通过投影机内部的嵌入式处理器,读取优盘、SD卡、移动硬盘等外置存储器内的文件,将文件信息转换为视频信号,输出到投影设备上,从而实现无PC演示,如EPSONEMP1815。
从结构上看,这种方法就是将嵌入式系统作为演示系统的控制器,优盘、闪存卡等移动存储设备作为演示信息源,从而将PC取代。虽然这样能够实现脱离PC的演示,但整个系统还存在以下局限:
① 硬件层的性能尚不足以实现对复杂文档和数据的处理。虽然目前嵌入式系统相当于1个精简的PC系统,经过近几年的发展,其硬件性能已经取得了很大进步,但是相对于PC的处理能力来说还是有较大差距,以现阶段嵌入式系统的处理能力,还无法完美地执行大多数PC上的文档数据处理和应用。
② 软件层方面,嵌入式系统应用软件存在局限性。虽然嵌入式系统的软硬件条件已经与PC很接近,但无论是嵌入式的Windows系统还是Linux系统,都是其PC版本的精简,大部分PC上的专业软件都还没有对应于嵌入式系统的版本,无法满足专业演示的多样化需求。
1.3 设计方案
为满足要求,嵌入式演示系统在设计上主要有以下两方面的考虑:
(1) 基于嵌入式系统自身处理能力的本地文件演示
现有的嵌入式演示系统,都是通过USB接口、读卡器等读取优盘、闪存卡等存储介质,来实现对本地文件的支持。虽然这种依赖嵌入式系统自身处理能力的方式具有之前分析的软硬件方面的不足,但已完全能胜任一些对运算要求不高的演示任务。
(2) 基于网络的瘦客户端方案
瘦客户端(thin client)指的是在客户端—服务器网络体系中基本无需应用程序的计算机终端。它通过接入局域网,经由特定协议与服务器通信。瘦客户端将其鼠标、键盘等输入传送到服务器处理,服务器再把处理结果回传至客户端显示。
瘦客户端方案充分地利用了嵌入式系统的网络连接能力,可以很好地克服嵌入式系统自身的局限和不足。[!--empirenews.page--]
主要体现在如下两方面。
① 运算量小,适合嵌入式系统。嵌入式系统作为瘦客户端,在整个系统的实现过程中仅仅需要负责接收与显示服务器端回传的远程操作画面,较低的硬件要求就可以实现媲美PC的显示效果。
② 直接利用PC端成熟的软件体系,具有良好的软件兼容性。由于嵌入式系统作为瘦客户端,直接将远程服务器作为远程桌面,达到间接操作远程服务器的目的,所以用户在客户端操作的软件环境和文档数据都与服务器端完全一致,从而能够提供使用环境和习惯从远程服务器端到客户端无缝“迁移”的良好用户体验。
但基于瘦客户端的应用也有其不足之处,比如对远程服务器和网络的依赖性,一旦脱离网络环境就无法工作等。
综上所述,结合目前的软硬件环境,采取兼顾上述2种途径的方案是最为可行的。
1.4 硬件平台简介
本嵌入式演示系统基于以三星S3C2440为核心的ARM9嵌入式系统,通过辅助输出电路将开发板输出的数字显示信号转换为模拟VGA信号,最终输出到投影仪。开发板硬件自带USB接口、读卡器、网卡接口,用以与外界作数据交换。
1.5 软件需求分析
本设计的软件部分需要实现的功能主要有:
① 实现本地文件资源的管理,通过开发板自带的USB、读卡器等接口,与外置存储设备交换数据。
② 在嵌入式系统上实现本地文档、视频、图片等文件的打开和播放,满足基本演示要求。
③ 作为瘦客户端实现远程连接功能,能对远程服务器端进行控制和回显。
1.6 系统结构
500)this.style.width=500;" border="0" />
图1 嵌入式演示系统
系统结构如图1所示,嵌入式系统硬件位于系统的最底层,第2层的嵌入式操作系统向下驱动底层硬件,向上对应用程序提供接口,调度管理嵌入式系统的软硬件资源。整个嵌入式系统包含1套完整的软硬件架构,并具有一定的运算能力,可以运行简单的程序,实现管理本地资源的功能。
通过系统自带的RJ45以太网接口接入,嵌入式系统在局域网中可作为1个能够获得独立IP地址的网络瘦客户端,通过远程连接程序与远程服务器端相联,发送鼠标键盘等简单输入信息。服务器端经运算后,回显处理结果,达到在瘦客户端间接实现复杂应用和处理的效果。
2 主要技术和实现
在软件方面,主要涉及系统层和应用程序层。
2.1 系统层
本设计的嵌入式系统采用微软公司的嵌入式操作系统Windows CE 5.0。Windows CE在秉承Windows桌面操作系统高效易用特点的基础上,兼容常见的嵌入式硬件,封装了底层硬件接口,便于开发者开发基于嵌入式的应用程序。在Windows CE 5.0上,微软提供了兼容.net framework的开发平台.net compact framework,使开发人员能够在尽可能接近桌面应用程序的环境下开发嵌入式应用程序,提高了程序的开发效率和不同平台下的可移植性。
本设计的重点就是在Windows CE上进行远程控制和本地资源管理模块的应用程序开发。
2.2 远程控制模块
远程控制是在网络上由1台电脑(主控端Remote/客户端)远距离控制另一台电脑(被控端Host/服务器端)的技术,控制程序一般分2部分(客户端程序Client和服务器端程序Server),开始控制的时候,由Client端向Server端发出请求, Server端接受请求后与Client端建立连接。
2.2.1 UltraVNC
使用UltraVNC作为远程控制程序,与其他远程控制程序类似,采用客户端/服务器架构,允许经由TCP/IP网络连接,监视和控制远程PC。UltraVNC作为以 RealVNC为基础开发的远程控制程序,具有以下特点:
◆ 遵循业界广泛应用的RFB协议;
◆ 经过优化,有效降低了网路连接时的系统资源占用,适合在嵌入式等性能有限的设备上使用;
◆ 免费程序,并在GPL协议下开放源代码,便于进行二次开发。
要实现远程控制,需要在远程PC上安装服务器端程序,在嵌入式系统上安装客户端程序。对于WinCE平台,UltraVNC并没有官方发布的兼容客户端,所以需要将UltraVNC官方客户端程序移植到WinCE平台的嵌入式设备上。
2.2.2 RFB协议
RFB(Remote FrameBuffer)是远程图形用户的简单协议,工作在帧缓存级别上,所以它可以兼容于目前的主流操作系统,包括Windows、Linux和Mac OS。
RFB是真正意义上的“瘦客机”协议。RFB协议设计的重点在于减少对客户端的硬件需求。这样客户端就可以运行在不同的硬件上,客户机的任务实现上就会尽量简单。
RFB协议对于客户端是无状态的。也就是说,如果客户端从服务器端断开,那么当它重新连接相同的服务器,客户端的状态会被保存。甚至,1个不同的客户端可以用来连接相同的 RFB服务器,而在新的客户端已经能够获得与前一个客户端相同的用户状态。因此,用户的应用接口变得非常便捷。只要合适的网络连接存在,那么用户就可以使用自己的应用程序,并且这些应用会一直保存,即使在不同的接入点也不会变化。这样无论在哪,系统都会给用户提供一个熟悉、独特的计算环境。[!--empirenews.page--]
2.2.3 程序结构与实现流程
程序定义的常用数据结构:
① “class Conn”。连接实现的核心类,主要负责与UltraVNC Server端的连接,内容的显示,以及Server端回传信息的处理。
② “class ConnOpts”。ConnOps类中定义了连接UltraVNC Server端所需要的连接参数,如连接模式、IP地址、端口、连接密码等。
③ “class NetworkConn”。NetworkConn封装了WinCE中网络连接相关的函数,便于程序调用
④ “namespace Vnc.RfbProto”。Vnc.RfbProto命名空间封装了RFB协议的基本数据结构和函数,作为远程控制模块的底层软件调用。
⑤ “class VncAuth”。系统安全组件,用于加密传输用户连接密码。
程序功能实现基本流程:
① 通过获取到的输入连接参数,建立与远程Server端的网络连接。
ConnOpts connOpts = new ConnOpts(textBox_IP.Text.Trim(),5900, textBox_passWord.Text.Trim(), viewOpts);//获取Server端IP地址、端口、连接密码等信息,新建连接设置对象connOpts
……
if(opts == null)
GetConnDetails();
EstNetworkConn();
if(opts.ConnMode == ConnMode.Active)//建立与server端的网络连接
Connect();
else
Listen();
② 确认远程连接协议版本,验证用户身份,初始化本地、远程端。
NegoProtoVer();//与server端匹配通信协议
Auth();//验证用户信息
SendCliInit();//发送客户端初始化信息
ReadServInit();//读取Server端初始化信息
SetPixelFormat();//设置分辨率格式
SetEncodings();
③ 开始连接,显示远程画面。
CreateDisp();//生成显示画面
④ 持续传输操作指令,返回更新的结果画面。
if(opts.ViewOpts.ServScaling != ServScaling.Default)//发送画面刷新信息
SendSetScale((byte)opts.ViewOpts.ServScaling);
SendUpdReq(0, 0, frameBufWidth, frameBufHeight, false);
2.3 本地资源管理模块
为了便于管理嵌入式系统的本地资源,需要为应用程序添加本地资源管理功能。程序能够在本地通过USB接口、读卡器等外部接口访问所连接的资源,从而实现本地文档、图片等资源的简单演示功能。
本地资源管理功能主要通过.net compact framework实现。.net compact framework类库包含了访问和管理本地文件的System.IO.File类,调用相关方法可以实现文件的打开、剪切、复制、粘贴等功能。系统目前可以直接打开的文件有Word文档(*.doc)、图片文件(*.jpg, *.gif)。
部分功能代码:
public voidShowTree()//生成文件结构树
public voidAddNode(stringdir,TreeNodeparentNode)//添加子节点
private voidbutton5_Click(objectsender, EventArgse)//打开文件
2.4 功能整合
要应用到实际产品中,还需要将上述2部分程序整合到统一的界面中。同时,为了提供友好的用户界面,原有WinCE系统的菜单、任务栏等界面元素需要在程序中隐藏,应用程序提供一个全屏的显示界面。
隐藏任务栏和全屏显示代码:
//调用系统动态链接库
[DllImport("CoreDll")]
public static extern IntPtrFindWindow(stringlpClassName, stringlpWindowName);
[DllImport("CoreDll")]
public static extern boolShowWindow(IntPtrhwnd, intnCmdShow);
[DllImport("aygshell.dll")]
static extern uintSHFullScreen(IntPtrhwndRequester, uintdwState);
[DllImport("coredll.dll")]
public static extern IntPtrGetCapture()//全屏显示
public voidShowFullScreen(System.Windows.Forms.FormobjForm)//隐藏任务栏
public voidHideHHTaskBar()[!--empirenews.page--]
3 性能和效果测试
① 程序执行后通过2个按钮实现远程控制和本地管理功能的切换。
② 点击左边窗口的文件结构树就可以浏览本地文件,并预览Word文档和图片。
③ 远程控制成功连接后,用户就可以完全按PC上的使用习惯,打开和编辑复杂的文件,继续使用Server端的软件运行环境,无需学习和适应新的操作方法。
系统测试效果如图2~图4所示。
500)this.style.width=500;" border="0" />
图2程序初始界面 图3本地文件管理
500)this.style.width=500;" border="0" />
图4远程控制
结语
本设计将现有的嵌入式演示系统向网络瘦客户端概念拓展,提出了一个更为完善的嵌入式演示系统的设计并具体实现。通过本地资源管理模块,可以实现本地文件管理和显示;通过远程控制模块,实现了从现有PC环境向嵌入式系统的无缝迁移,用户的所有文档数据和应用程序都可以在嵌入式系统所控制的投影仪上显示和控制,从而解决了现有嵌入式演示系统存在的软硬件方面的局限。
目前,该系统仍处于初期阶段,尚存在一些问题,主要体现在:
① 远程控制模块的运行效果仍然不够理想,在远程控制过程中画面回显仍有延时。这需要在以后的开发过程中进一步优化远程控制软件的运行效率,同时改进硬件,选用运算能力更强的嵌入式处理器。
② 现阶段仅支持有线网络下远程控制,随着WiFi等无线网络技术的越来越普及,下一步考虑在系统中加入无线网络的支持,提高演示过程的便捷性。
③ 本地文件管理方面,现阶段能支持的文件格式偏少,尚不能满足演示需求,计划在性能允许的情况下增加对更多文档、视频、图片格式的支持,加强演示设备的通用性。
参考文献
[1] 刘治,董小国.基于RFB协议跨平台网络远程监控系统研究与实现[J].网络安全技术与应用,2009(5).
[2] 汤海冰,秀平,耿浩. 基于RFB协议的双向远程控制模型及实现[J].科学技术与工程, 2005(12).
[3] 王建. 远程桌面控制协议研究与实现[D].成都:电子科技大学,2006.
[4] Sloss Andrew N, Symes Dominic. ARM嵌入式系统开发——软件设计与优化[M].北京:北京航空航天大学出版社 2005