博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WinCE下的远程控制
阅读量:4037 次
发布时间:2019-05-24

本文共 2164 字,大约阅读时间需要 7 分钟。

转自http://blog.chinaunix.net/u3/93290/showart_1984985.html

以前在给别人介绍Windows CE 的开发时,为了演示设备上程序的运行情况,就用Remote Zoomin 来截屏,设备端一刷新,Remote Zoomin 就得去手动Refresh 一下,在CEPC 两边忙得不亦乐乎。当时就想,要是有自动刷新的功能不就省去了这么多麻烦吗。如果能在PC 端直接控制CE 设备,岂不更好?

看了帮助文件,原来WinCE 是支持RDP 的,添加相应的组件,编译完成后,在设备上测试发现CE 真的可以登陆Windows XP ,而且效果还不错!但CE 本身并不能做Server ,只能做Client 。所以直接利用现成的组件是不可能了,只能自己做一个这样的小工具,以免以后又忙得不可开交。

初步分析了一下,为了实现这个功能,CE 端需要做两个事情,第一,实时截屏并发送给PC 。第二,接收PC 端发过来的命令( 主要是鼠标和键盘的消息命令) 并模拟鼠标和键盘事件。而PC 端也只要做对应的两个事情,首先是接收CE 端发来的屏幕内容的BUF 并将其显示,第二是捕获鼠标和键盘的消息并给CE 发送过去。这几件事情都比较容易实现。

先说CE 端的截屏,主要工作就是将屏幕的设备环境拷贝到对应的内存设备环境里去,再发送DIB 里的数据即可,PC 调用函数StretchDIBits() 显示接收到的Color Data 。这里唯一需要注意的就是在截屏时并没有截取鼠标指针的信息,所以在截屏之后得手动画上鼠标的指针。否则,PC 端就不能显示CE 鼠标的位置和动作了。

模拟鼠标和键盘的事件在CE 端是很容易的,用mouse_event()keybd_event() 这两个函数就足够了。而PC 端捕获鼠标和键盘的消息则有两种方法,方法一是在 PreTranslateMessage 中来做,方法二则是在各个消息处理函数中来做。这里需要注意一下,键盘的消息必须在 PreTranslateMessage 中处理,否则捕获不到。刚开始,我还在这里迷惑了一阵。 L

原理的东西就不多讲了,其实跟Windows 下的远程控制类软件的思路是一样的。接下来就考虑一些细节的问题。譬如通信的方式,EVC 中的远程工具是可以通过ActiveSync 来通信的,也可以用Ethernet 。所以为了方便最好也能用这两种方式。另外,如果在使用ActiveSync 时,是否可以利用RAPI ,直接把设备端的程序拷贝到CE 上,并让其运行。这样又省了手动拷贝的麻烦。

仔细琢磨了一阵,发现这些需求都可以实现。把各部分都实现完了以后联调,基本达到了预期的效果。但在CE 分辨率较大时感觉有点迟钝。所以又想了优化的方法。基本上有以下三点,比较、分块、压缩。所谓比较,就是在CE 截屏之后做一个备份,再次截屏时将其与备份进行比较,如果不一致再发送,否则就不用发给PC 做更新。分块是可以和比较一起使用的,如果屏幕只是局部更新,那可以只发送更新的块,而其他块则不发送。压缩理论上是可以提高传输效率的。粗略的比较了一下,一张640*48016Bit 的位图是600K ,而压缩之后的JPG 图片才几十K ,差别还是相当可观的。这三种方法都能节省网络带宽,但也都会增加CPU 的负担,实际效果也不好说。因为这个小工具主要是在局域网中使用,带宽不是问题,所以,暂时就不做优化的工作吧。

后来有一次,有人问起CE 下的触摸屏校准在哪里,CE 同步的连接怎么建立。为了确保他能准确操作,便利用这个远程显示工具和屏幕录像专家录了一个视频,果然效果相当好。后来想想,还不如在这个小工具中集成录屏的功能,这样又免去了开屏幕录像专家的麻烦。于是,找了一个很方便用的从BMP 保存为AVI 的类,添加了录屏功能。当然由于没有压缩,所以录制的AVI 文件很大,一分钟就几十兆!

自从有了这个小工具,演示WindowsCE 下的程序就很从容了,并且还能录制WinCE 下的操作步骤,省了很多口水。现在贴出来跟大家一起分享,也希望能解决你的麻烦。^_^

有关RMC 工具的几点说明:

1.              由于它支持USB ActiveSync 的连接方式,并能够自动拷贝文件到设备上运行,所以在没有LCD 的情况下,你可以用你的电脑显示器作为设备的LCD 显示。( 这两天调试支持多分辨率的Eboot 就用到这个功能,效果还是相当好的)

2.              在使用同步连接,并且希望能自动拷贝设备端程序时,请不要修改设备端程序RMCEC.exe 的文件名,并将其和RMCPC.exe 放在同一个目录下面。

其实,后来在网上也找到了几个功能类似的软件。其中一个是Windows Mobile Power toys ,用了一下,感觉好像比RMC 快一点,但它不支持Ethernet 的连接,只能用USB 同步,而且还要手动拷贝文件到设备上去。另外一个是SOTI 公司出的软件,看起来相当专业,曾经尝试着破解了5.0 的试用版,不知道是破解坏了,还是破解得不彻底,用一会儿自己就关了。还是用自己的RMC 吧,简单又方便。^_^

WinCE 远程控制小工具的下载地址:

转载地址:http://tocdi.baihongyu.com/

你可能感兴趣的文章
linux 驱动开发 头文件
查看>>
/etc/resolv.conf
查看>>
container_of()传入结构体中的成员,返回该结构体的首地址
查看>>
linux sfdisk partition
查看>>
ipconfig,ifconfig,iwconfig
查看>>
opensuse12.2 PL2303 minicom
查看>>
电平触发方式和边沿触发的区别
查看>>
网络视频服务器移植
查看>>
Encoding Schemes
查看>>
移植QT
查看>>
如此调用
查看>>
计算机的发展史
查看>>
带WiringPi库的交叉编译如何处理一
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Spring事务的七种传播行为
查看>>
ES写入找不到主节点问题排查
查看>>
Java8 HashMap集合解析
查看>>
ArrayList集合解析
查看>>
欢迎使用CSDN-markdown编辑器
查看>>
Android计算器实现源码分析
查看>>