ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:18.32KB ,
资源ID:4588669      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4588669.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(VxWorks汉字显示解决方案.docx)为本站上传会员【人****来】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

VxWorks汉字显示解决方案.docx

1、VxWorks汉字显示解决方案摘要:论述VxWorks上WindML对多字节码的显示支持,着重讨论其存储结构和意义,并给出汉字显示的实现方法。关键词:VxWorks操作系统 WindML组件 汉字点阵 国标编码1 VxWorks操作系统图形显示方案VxWorks作为嵌入式实时操作系统,在国内应用已非常广泛,但VxWorks原厂商没有直接提供完备的汉字显示解决方案。本文这个热点论题,通过对VxWorks显示组件的分析,具体给出一种汉字显示的方案。VxWorks的汉字显示首先需要一种图形解决方案,只有工作在图形模式下才可能显示汉字。VxWorks有三种显示方案可供选择。WindML+ZincWin

2、dML是Wind River Mutli-media Library的简称,其中包含UGL。该组件直接控制显示硬件,主要提供显示模式设置、标准输入输出控制、点线面作图等函数,编程接口很类似于Torbo C、Borland C里的图形库。Zinc基于WindML,提供了类Widnows风格的接口,有各种控件被封装于内,编程接口很类似于Windows编程。WindML+JworksJworks提供Java的支持,在VxWorks上启动Java虚拟机来解释Java语言;图形开发编程接口是Java语言,Java虚拟机的图形实现基于WindML。Web Server+WindML+Jworks+Brow

3、serWeb Werver使显示编程接口成为编写网页,可以通过远程的Browser来访问而使设备具有远程显示接口,也可以在本机做Browser使设备具有本机显示接口。该Browser的实现需要WindML或Jworks的支持。上述方案内,纯Web Server的方案不需要本地汉字显示,只要在网页上放国标码或Unicode码等,由远程的Browser去实现显示;其它方案基本上都需要WindML的支持,这是因为VxWorks系统里所有底层的显示操作都是通过WindML实现的。2 汉字显示方案实现本地汉字显示的方案一定会涉及到WindML,只是不同的方案对WindML的依赖程度有所不同,一般有如下几

4、种。利用WindML对双字节编码的支持,实现对汉字的点阵存储、点阵获取、点阵显示的全过程,并使用WindML的双字节显示函数实现汉辽码到汉字显示。这种方法使用了系统机制,最根本的解决方法,并使WindML的其它上层组件很方便地实现汉字显示。自己开发点阵存储、点阵获取、点阵显示,改造WindML的双字节和单字节显示函数,使其能判断汉字码,一旦判断出汉字码,则使用自己开发的点阵获取、点阵显示等把汉字显示出来。该方法对点阵的操作更加灵活,适合非标准的点阵算法,或者当开发者已有成熟的点阵操作方法时,把该方法绑接到WindML上。完全自己开发一套点阵存储、点阵获取、点阵显示、汉字显示函数,使用者使用特定

5、的汉字显示函数把汉字显示出来。该方法具有最大的灵活性,甚至不理睬WindML的任何机制,直接在上层组件里实现,但这种方法使程序的中英文混合显示变得复杂,程序可移植性也比较差。本文将就第一种显示方案和第一种汉字显示方案详细论述WindML的双字节编码机制,并利用该机制构建WindML汉字显示框架,并论述Zinc如何使用该框架。这些机制和思路其实是任何方案都需要考虑的,对绕开WindML的方案也具指导和借鉴意义。3 WindML的点阵参数每个字模都有一个占据的空间,该空间对于点阵字库里的每个字是一样大的,所有字符点阵的大小都不应该超过该空间,如果超过,显示时超出部分将被截掉。相关参数有maxAdv

6、ance最大宽度大小,以点为单位。MaxAscent,maxDescentmaxAscent+maxDescend是最大长度大小,两数的交界决定了一个baseline,maxAscent是baseline以上的长度,maxDescent是baseline以下的部分。Baseline对于定位具体字符点阵的打点起始位置非常重要,另外如果有一行来自同一个字符集的字符串,则这些字符的baseline是在一条线上的。maxAscent+maxDescent有时被称为字符表高度height,注意要与下面所述的字符高度区别开来。每个字符点阵也有一个范围大小,其大小与每个字符有关。该大小一般不会填满整个字模空

7、间。相关参数有width宽度。height高度。ascent点阵打点开始位置在baseline之上的偏移,如果是负数,则点阵在baseline之下开始打点。Ascent和height决定了点阵从字模的多少行开始打点,要打多少行。而列的打点起始位置,固定是0,即字模的最左边,所以只有width描述打点的宽度。字符横向和纵向都要有额外空间,以防止字符粘接重叠。相关参数有leading行间距。对字符的一些变换选项,字符读取的标志等。相关参数有pixelSixe平均行、列大小。weight行、列加粗属性。italic斜体属性。spacing字符行间距属性。charSet字符集标志。faceName字符

8、集名称。familyName字符集的家族名称。scalable字符放大缩小比例。WindML显示字符时,以maxAscent+maxDescend作为字符高度,以width作为字符宽度;根据字符ascent和字符height取出字符点阵数据,进行weight、italic、scalable等运算,然后输出到屏幕。4 WindML的点阵存储结构和操作方法WindML双字节编码显示的参数和实现思路集中体现在点阵存储文件的结构上,该文件的框架如下UGL_LOCAL const unsigned char UGL_FAR_DATApage0Data=/*0x0023(#)*/0,/*page*/0x2

9、3,/*index*/0,/*size(MSB)*/20,/*size(LSB)*/8,/*width*/16,/*high*/14,/*ascent*/0x00,0x00,0x00,0x00,0x44,0x44,0x44,0xfe,0x44,0x44,0x44,0xfe,0x44,0x44,0x44,0x00,/*数据*/*0x0024和其它字符*/*结束*/0,0,0,0/*西文扩展为双字节编码的点阵表*/*上表解析page+index就是该字符的ASCII编码,过扩成了双字节;size(MSB)+size(LSB)是该字节的点阵信息长度,注意实际描述体的长度是2+该长度+1,而ascen

10、t之后的真正点阵数据的大小是该大小减4;width+height是该点阵资料的宽度和高度;ascent是点阵处在baseline以上的偏移位置,baseline的位置要看整个字符表描述结构的定义;data是按行扫描得到的点阵资料,是列递增把行显示效果排成一个连续空间后,按字节来描述每位的打点状态;如果行宽是8位的整数倍,不会把位补0去凑8位整数倍 。字符点阵描述数据依次往下排列,直到以4个0标志结束。*/UGL_LOCAL const unsigned char UGL_FAR_DATAPage1Data= 0x81,/*page*/0x40,/*index*/0,/*size*/36,/*s

11、ize*/16,/*width*/16,/*hight*/14,/*ascent*/0x00,0x08,0xff,0xfc,0x04,0x00,0x04,0x00,0x08,0x00,0x08,0x10,0x1f,0xf8,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x02,0x20,0x01,0x40,0x00,0x80,/*其它字符*/*结束*/0,0,0,0*/国标码对应的点阵表*/*上表解析数据含义与西文表类似,注意字码是双字节国标码*/UGL_LOCAL const unsigned char *const

12、 pageArray page0Data,page1Data,UGL_NULL;/*总的点阵资料表*/*上表解析把分类的点阵资料表汇集成一张表,总表以UGL_NULL结束,注意各个分表是以0,0,0,0结束。可以把汉字表按GB2312编码的page分类,构建多个汉字分表,然后把分表指针填入该表。当然,也可以做成一个汉字大表,把指针放在该表,甚至也可以把中西文点阵做成的中西文混合大表,然后把该表指针放在该数组里。*/const UGL_BMF_FONT_DESC uglBMFFont_Song_16=/*UGL_FONT_DESC结束*/16,16, /*点阵大小*/UGL_FONT_BOLD_

13、OFF,UGL_FONT_BOLD_OFF,/*宽度*/UGL_FONT_UPRIGHT, /*斜体*/UGL_FONT_PROPORTIONAL,/*行间距属性*/UGL_FONT_UNICODE, /*字符集*/“Song 16x16Dot”, /*字体名称*/“Song” /*字体系列名称*/*点阵名称等点阵属性表*/*UGL_BMF_FONT_DESC结构*/*点阵表的属性和位置*/2, /*行间距*/14, /*最大上偏移位置*/2, /*最大下偏移位置*/14, /*最大宽度*/pageArray /*字形页*/;/*点阵描述结构*/*上表解析首先是定义属性表,然后是定义字模和间距

14、,并定义总的点阵描述表指针。*/最后定义的const UGL_BMF_FONT_DESC uglBMFFont_Song_16包含了该点阵的所有信息。只要能定位该结构,则任何能在该点阵表内匹配出字码的字都可以显示出来。WindML选择不同的点阵就是选择不同的该结构去做点阵寻址,其实现的大体过程WIND_BASE/target/src/ugl/config/uglBmfCfge文件描述了整个系统能使用的字符集,如extern const UGL_BMF_FONT_DESC uglBMFFont_Courier_12;extern const uglBMFFont_Song_16;/*就是上面的例

15、子*/const UGL_BMF_FONT_DESC * uglBMFFontData=&uglBMFFont_Courier_12,&uglBMFFont_Song_16,NULL;通过如uglDriverFind (UGL_FONT_ENGINE_TYPE,0,(UGL_UINT32*)&fontDrvId);的调用定位点阵驱动,即控制对点阵表访问、打点等操作的函数;通过如uglFontFindString(fontDrvId,“familyName=Song;pixelSize=16”&systemFontDef);的调用定位点阵描述结构;通过如fontSystem=uglFontCre

16、ate(fontDrvId,&systemFontDef);的调用绑接点阵和点阵驱动,并标识为fontSystem;如此重复创建多个字符集的点阵标识。通过如:uglFontSet(gc,fontSystem);的调用设置当前字符集;通过如uglTextDrawW(gc,iX,iY,iLength,caString);的调用在iX,iY的位置显示caString里的字码。可见,只要开发者根据上述的存储结构开发出对应的字符点阵,然后把点阵描述结构加入到uglBMFFontData,便可以用系统的函数使用这些点阵了。在Dos/Windosw、Linux系统下一些应用程序,可以把操作系统的点阵导出为C

17、文件或数组,把这些导出的文件加以调整,就可以得到VxWorks系统支持的格式。5 Zinc对汉字的支持只要WindML的汉字支持做成功,则可以按如下方法使Zinc支持汉字WIND_BASE/target/src/zinc/generic/i_文件是WindML与Zic的接口文件,在ZafScreenDisplay:ZafScreenDisplay函数里使用上述的函数定义了Zinc要使用的字符集。把这些字符集改成汉字字符集,并且把Zinc配置成支持UNICODE的方式重新编译,则Zinc就自然支持汉字显示了。6 注意事项和总结在使用过程中,还要注意几个问题。Tornado对汉字的编译,如果把汉字

18、定义为如short ca=董,0x00,则编译生成的目标码是正序的国标码;如果定义为“董”,则编译生成的目标码是反序的国标码。这样,就必须约定一种定义以根据该约定产生的国标码来构建字符点阵表。如果使用双引导定义汉字字符中,要注意该串数据是以一个字节0结束,使用uglTextDrawW要求是以字为单位,所以,需要在该字节串结尾补一个0。有些字库表的字码是UNICODE的编码,尤其是使用一些操作系统的点阵导出程序生成的字库表。UNICODE编码与国际码有一一对应关系,可以把这样的字库表转换过来或者在程序里适当位置把要显示的内容转化为UNICODE再显示。本文就嵌入式操作系统上作用汉字这一热门论题,论述了VxWorks上的图形实现方案、汉字开发方案,图形组件WindML对多字节码的支持特性,并在论述特性的同时,列举了宋体16点阵的框架,帮助汉字开发者理解点阵实现的细节。在论述WindML汉字操作函数之后,提出了在Zinc层实现汉字显示的方法和编程时注意事项。这套方案已经成功地实现,并在上海大众的导航产品、南京电力的电力控制产品等项目上获得成功的应用。文章的作者都在VxWorks操作系统上做了多年的开发和支持,感兴趣或需要帮助的朋友可通过donleo与我们联系。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服