中文摘要:
PC机通过网络实现对WinCE设备屏幕的监视。讲述的重点放在WinCE 端。系统使用WinCE提供的GDI(Graphics Device Interface)函数截取设
备屏幕,充分利用嵌入式显示设备和屏幕图像的特性,压缩并传送图像数据,最终实现对WinCE 设备的监视工作。
引 言
目前,嵌入式设备得到广泛的应用。基于
WinCE 的嵌入式设备具有界面美观、操作简单
的特点。现实使用中,可能需要对嵌入式设备进
行监视,以确定设备工作是否良好。本文的目的
就是完成PC 机对
WinCE 嵌入式设备的监视工
作,主要通过屏幕监视实现。
2.1 屏幕截取
WinCE 下
屏幕截取的方法有很多,这里直
接使用
GDI 函数来完成。利用
GDI 函数可以获
得关于屏幕的位图。
位图是Windows 下最常用的一种图像文件
格式,它采用的是RGB 颜色模式,一个像素点对
应于一个R(red)、G(green)、B(blue)的颜
色组合。Windows 环境下,R、G、B 通常各用
一个字节(Byte)来表示,所以一个像素点需要
用24 位(bit)表示,也就是24 位深度的位图,
这时可以表示2 24 种颜色。但是,有些显示设
备不能在一屏内显示224 种颜色,比如只有256
种,这时就引入了调色板。调色板是R 、G 、B
颜色组合的一个子集,它可能只含有256 种或
更少的R 、G 、B 组合。位图数据中,像素点的
RGB 值使用对应的调色板中编号来表示。
2.2 数据压缩和解压
利用
GDI 获得的位图数据是很大的,一幅
2 4 0 x 3 2 0 的1 6 位深度位图,其数据量就有
150KB 。为了减少数据的传送量,采用了两种
方法:
(1)对于PC 端来说,要显示发送过来的图
像, 需要知道图像的宽、高以及位深度等信息。
所以在发送的每一帧图像数据里,除了有每一个
像素点的颜色值,还应该带有图像的宽带、高度
等信息,对有些使用索引的图像,还要发送调色
板给PC 端。实际情况中, 嵌入式显示设备的屏
幕宽度、高度、位深度等信息基本都是固定的,
也就是说每一帧图像的宽度、高度、位深度等是
不变的,所以,在连接建立后,可以先将图像信息发
送过去,若有调色板,将调色板也发送过去,然
后发送一帧一帧的图像。这样,既减少了数据的
传送量,也方便后面将要进行的数据压缩。
(2)
图像压缩技术分为两种,一种为无损压
缩,无损压缩通常是根据字符或字符串在整个
文件中出现的频率来重新编码,达到压缩的目的,
比如常用的GIF 图像格式,就是利用字典来压缩
图像;另一种为有损压缩,有损压缩充分利用人
的视觉、听觉等方面的特点,来达到
图像压缩的
目的,JPEG 图像格式就是有损压缩的典型。
本系统中,截取的屏幕图像与普通的图像
有一些不同,它有一个特点:大部分的图像中存
在广泛的、块状的、相同颜色的像素。由于所截
取的屏幕图像大部分是
WinCE 窗口,
WinCE 窗
口一般会有大片连续的背景色,假设能够将这
些背景色进行压缩,将能够大大的减少图像的
数据量。在无损压缩领域,有一种实现简单,又
很适合上述情况的算法—— RLE (Run
Length Encoding)压缩算法。RLE 压缩算法
描述起来很简单,将连续相同的字节进行计数,
然后用计数值和相同的那个字节值代表这一连
串的字节,例如有连续10 个字节的1,占用10
个字节,RLE 压缩后,只占用两个字节,第一
个字节为1 0 ,第二个字节为1 。