##项目背景
公司有台测试设备是基于嵌入式linux的, 支持framebuff。该测试设备自带显卡,并且绝大多数的操作需要据需要本地键盘操作,所有运行结果均显示在本机屏幕。公司现基于同一管理的需要。所有的物理设备均需要放入机房。这给在该设备进行开发和测试的人员以很大的不方便。因此尝试开发一套基于嵌入式linux远程控制软件,并命名mini-vnc。
##软件原理
在普通linux系统上通常使用VNC作为远程控制工具。而嵌入式设备远程控制的工具很少,也许是我没有找到。最近实现了一个基于嵌入式linux的远程控制工具。嵌入式作为服务器端。 winxp作为客户端。
服务器端可以分为设备层和网络传输层。设备层在设计中被分为完全独立的模块:图像截取和键盘模拟。图像截取模块负责从嵌入式设备里面读取当前屏幕的像素点信息。利用framebuffer直接对内存数据进行操作。该模块在用户空间进行操作,直接读取各个像素点的RGB值。如果需要调色板的话,需要另外读取掉色板信息。键盘模拟模块负责模拟给定的键盘消息。并发送给内核中input_device的缓冲区队列。该内核可加载模块模拟一个的物理设备实现对键盘消息的传递。
网络传输层:负责发送屏幕图像信息,接受远程键盘消息,并与设备层交互数据。基于局域网内传输和对系统性能的考虑,传输层采用UDP协议。但没有限定Session个数,因此可以支持多个客户端。但在实际才是过程中,发现对系统性能消耗比较大。目前的系统cpu为mipsel、400MHZ,采用256色640×480的图片质量传输,同时采用zlib库对图像进行压缩。最终每幅图片大小在3-8k左右。对cpu的消耗接近10%。
客户端是个简单的MFC程序。接受图像数据并根据调色板信息绘图。检测键盘按键消息并转化为linux键盘消息并发送。
##存在问题
- cpu消耗过大。
- 图像不连续。最多4帧每秒。
##展望
有机会把它做得更完善,客户端界面更友好。受本人能力所限,客户端界面不够漂亮。同时提示信息特少。