位置:51电子网 » 技术资料 » 单 片 机

VxWorks汉字显示解决方案

发布时间:2008/5/27 0:00:00 访问次数:621

来源:单片机及嵌入式系统应用 作者:董 磊 周金明 杨 磊

摘要:论述vxworks上windml对多字节码的显示支持,着重讨论其存储结构和意义,并给出汉字显示的实现方法。

关键词:vxworks操作系统 windml组件 汉字点阵 国标编码

1 vxworks操作系统图形显示方案vxworks作为嵌入式实时操作系统,在国内应用已非常广泛,但vxworks原厂商没有直接提供完备的汉字显示解决方案。本文这个热点论题,通过对vxworks显示组件的分析,具体给出一种汉字显示的方案。

vxworks的汉字显示首先需要一种图形解决方案,只有工作在图形模式下才可能显示汉字。vxworks有三种显示方案可供选择。

(1)windml+zinc

windml是wind river mutli-media library的简称,其中包含ugl(universal graphics library)。该组件直接控制显示硬件,主要提供显示模式设置、标准输入输出控制、点线面作图等函数,编程接口很类似于torbo c、borland c里的图形库。zinc基于windml,提供了类widnows风格的接口,有各种控件被封装于内,编程接口很类似于windows编程。

(2)windml+jworks

jworks提供java的支持,在vxworks上启动java虚拟机来解释java语言;图形开发编程接口是java语言,java虚拟机的图形实现基于windml。

(3)web server+windml+jworks+browser

web werver使显示编程接口成为编写网页,可以通过远程的browser来访问而使设备具有远程显示接口,也可以在本机做browser使设备具有本机显示接口。该browser的实现需要windml或jworks的支持。

上述方案内,纯web server的方案不需要本地汉字显示,只要在网页上放国标码或unicode码等,由远程的browser去实现显示;其它方案基本上都需要windml的支持,这是因为vxworks系统里所有底层的显示操作都是通过windml实现的。

2 汉字显示方案实现本地汉字显示的方案一定会涉及到windml,只是不同的方案对windml的依赖程度有所不同,一般有如下几种。

①利用windml对双字节编码的支持,实现对汉字的点阵存储、点阵获取、点阵显示的全过程,并使用windml的双字节显示函数实现汉辽码到汉字显示。这种方法使用了系统机制,最根本的解决方法,并使windml的其它上层组件很方便地实现汉字显示。

②自己开发点阵存储、点阵获取、点阵显示,改造windml的双字节和单字节显示函数,使其能判断汉字码,一旦判断出汉字码,则使用自己开发的点阵获取、点阵显示等把汉字显示出来。该方法对点阵的操作更加灵活,适合非标准的点阵算法,或者当开发者已有成熟的点阵操作方法时,把该方法绑接到windml上。

③完全自己开发一套点阵存储、点阵获取、点阵显示、汉字显示函数,使用者使用特定的汉字显示函数把汉字显示出来。该方法具有最大的灵活性,甚至不理睬windml的任何机制,直接在上层组件里实现,但这种方法使程序的中英文混合显示变得复杂,程序可移植性也比较差。

本文将就第一种显示方案和第一种汉字显示方案详细论述windml的双字节编码机制,并利用该机制构建windml汉字显示框架,并论述zinc如何使用该框架。这些机制和思路其实是任何方案都需要考虑的,对绕开windml的方案也具指导和借鉴意义。

3 windml的点阵参数①每个字模都有一个占据的空间,该空间对于点阵字库里的每个字是一样大的,所有字符点阵的大小都不应该超过该空间,如果超过,显示时超出部分将被截掉。相关参数有:

maxadvance——最大宽度(横向)大小,以点为单位。

maxascent,maxdescent——maxascent+maxdescend是最大长度(即纵向)大小,两数的交界决定了一个baseline,maxascent是baseline以上的长度,maxdescent是baseline以下的部分。baseline对于定位具体字符点阵的打点起始位置非常重要,另外如果有一行来自同一个字符集的字符串,则这些字符的baseline是在一条线上的。maxascent+maxdescent有时被称为字符表高度height,注意要与下面所述的字符高度区别开来。

②每个字符点阵也有一个范围大小,其大小与每个字符有关。该大小一般不会填满整个字模空间。相关参数有:

width——宽度。

height——高度。

ascent——点阵打点开始位置在baseline之上的偏移,如果是负数,则点阵在baseline之下开始打点。

ascent和height决定了点阵从字模的多少行开始打点,要打多少行。而列的打点起始位置,固定是0,即字模的最左边,所以只有width描述打点的宽度。

③字符横向和纵向都要有额外空间,以防止字符粘接重

来源:单片机及嵌入式系统应用 作者:董 磊 周金明 杨 磊

摘要:论述vxworks上windml对多字节码的显示支持,着重讨论其存储结构和意义,并给出汉字显示的实现方法。

关键词:vxworks操作系统 windml组件 汉字点阵 国标编码

1 vxworks操作系统图形显示方案vxworks作为嵌入式实时操作系统,在国内应用已非常广泛,但vxworks原厂商没有直接提供完备的汉字显示解决方案。本文这个热点论题,通过对vxworks显示组件的分析,具体给出一种汉字显示的方案。

vxworks的汉字显示首先需要一种图形解决方案,只有工作在图形模式下才可能显示汉字。vxworks有三种显示方案可供选择。

(1)windml+zinc

windml是wind river mutli-media library的简称,其中包含ugl(universal graphics library)。该组件直接控制显示硬件,主要提供显示模式设置、标准输入输出控制、点线面作图等函数,编程接口很类似于torbo c、borland c里的图形库。zinc基于windml,提供了类widnows风格的接口,有各种控件被封装于内,编程接口很类似于windows编程。

(2)windml+jworks

jworks提供java的支持,在vxworks上启动java虚拟机来解释java语言;图形开发编程接口是java语言,java虚拟机的图形实现基于windml。

(3)web server+windml+jworks+browser

web werver使显示编程接口成为编写网页,可以通过远程的browser来访问而使设备具有远程显示接口,也可以在本机做browser使设备具有本机显示接口。该browser的实现需要windml或jworks的支持。

上述方案内,纯web server的方案不需要本地汉字显示,只要在网页上放国标码或unicode码等,由远程的browser去实现显示;其它方案基本上都需要windml的支持,这是因为vxworks系统里所有底层的显示操作都是通过windml实现的。

2 汉字显示方案实现本地汉字显示的方案一定会涉及到windml,只是不同的方案对windml的依赖程度有所不同,一般有如下几种。

①利用windml对双字节编码的支持,实现对汉字的点阵存储、点阵获取、点阵显示的全过程,并使用windml的双字节显示函数实现汉辽码到汉字显示。这种方法使用了系统机制,最根本的解决方法,并使windml的其它上层组件很方便地实现汉字显示。

②自己开发点阵存储、点阵获取、点阵显示,改造windml的双字节和单字节显示函数,使其能判断汉字码,一旦判断出汉字码,则使用自己开发的点阵获取、点阵显示等把汉字显示出来。该方法对点阵的操作更加灵活,适合非标准的点阵算法,或者当开发者已有成熟的点阵操作方法时,把该方法绑接到windml上。

③完全自己开发一套点阵存储、点阵获取、点阵显示、汉字显示函数,使用者使用特定的汉字显示函数把汉字显示出来。该方法具有最大的灵活性,甚至不理睬windml的任何机制,直接在上层组件里实现,但这种方法使程序的中英文混合显示变得复杂,程序可移植性也比较差。

本文将就第一种显示方案和第一种汉字显示方案详细论述windml的双字节编码机制,并利用该机制构建windml汉字显示框架,并论述zinc如何使用该框架。这些机制和思路其实是任何方案都需要考虑的,对绕开windml的方案也具指导和借鉴意义。

3 windml的点阵参数①每个字模都有一个占据的空间,该空间对于点阵字库里的每个字是一样大的,所有字符点阵的大小都不应该超过该空间,如果超过,显示时超出部分将被截掉。相关参数有:

maxadvance——最大宽度(横向)大小,以点为单位。

maxascent,maxdescent——maxascent+maxdescend是最大长度(即纵向)大小,两数的交界决定了一个baseline,maxascent是baseline以上的长度,maxdescent是baseline以下的部分。baseline对于定位具体字符点阵的打点起始位置非常重要,另外如果有一行来自同一个字符集的字符串,则这些字符的baseline是在一条线上的。maxascent+maxdescent有时被称为字符表高度height,注意要与下面所述的字符高度区别开来。

②每个字符点阵也有一个范围大小,其大小与每个字符有关。该大小一般不会填满整个字模空间。相关参数有:

width——宽度。

height——高度。

ascent——点阵打点开始位置在baseline之上的偏移,如果是负数,则点阵在baseline之下开始打点。

ascent和height决定了点阵从字模的多少行开始打点,要打多少行。而列的打点起始位置,固定是0,即字模的最左边,所以只有width描述打点的宽度。

③字符横向和纵向都要有额外空间,以防止字符粘接重

相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!