DTK串口重定向(SOL)时中文显示问题解决方法

作者: 李铎锋--Duofeng Li (Intel) (84 篇文章) 日期: 五月 28, 2008 在 10:40 下午

近日有个需求,需要让Intel AMT在做串口重定向的时候能够很好的显示中文。我记得Intel AMT SOL本身应该是支持UTF-8编码格式,可以传输各种语言格式的字符,所立理论上来说,这个需求应该不是问题。拿最新版的Intel DTK(0.51x version)试了一下,用了一张Windows XP的安装光盘测试。打开DTK的Intel IAmtTerm后,首先需要设置终端仿真方式,如下图所示,修改为VT100/UTF-8,然后设置好相关IDER参数,选择重启动到IDER的光驱。
sol-chinese-sel-utf8-01.PNG

    iAMT机器通过IDER从中文版XP安装盘启动后,发现中文显示不正常,如下图所示。看起来好像时每个中文字符被截去了半边,并且挤在一堆,而里面的英文字符却都能显示正常。
sol-with-erro-chinese-01.PNG

 打开Intel AMT Terminal工程的源代码仔细检查后,发现了问题所在:IAmtTerm是这样显示字符的,一个方框一个方框的显示终端字符,方框的大小是根据用户选择的字体大小来决定的,程序中是取样字符'A'的大小,然后决定字符框的大小,然后在显示的时候,把字符显示在对应位置相应大小的字符框中;很显然,问题来了,我们知道中文的显示一般是需要占到两个英文字符大小宽度,所以上面出现的问题也就迎刃而解。 解决办法:在显示中文字符时候,把用来显示字符的方框变为原来的两倍大小即可;同时,为了达到和系统显示一样的效果,存储输出数据的数组中的所有中文字符的下一个元素存储的值将会被抛弃,在存储的时候就需要间开。修改后的显示中文的效果如下图所示:
sol-with-right-chinese-01.PNG

   这里是修改过的源代码,是Intel AMT Controls目录下的TerminalControl.cs,从这里下载terminalcontrol.zip,解压覆盖原来的就可。

    另外,如果你用SDK里面的Putty来做SOL显示的话,只需要设置将起设置中的Window-->Translation中的 "Received data assumed to be in which character set" 设置为 UTF-8 即可。

分类: 可管理性

如需了解英特尔软件产品相关的性能和优化选项,请参阅优化注意事项.

 评论 (3)

2008年11月11日 10:24


英特尔® 软件网络博客 - 中文 » DOS程序SOL中文输出经验
[...] 我们知道,DOS的输出是采用终端(Console)输出的方式,默认情况下,我们只需要让iAMT客户机以SOL方式启动,就能自动在控 制台的SOL终端显示和控制界面来显示远程客户机的DOS输出,以及直接输入控制命令来操作远程客户机的DOS系统,和本地操作DOS的效 果是一样的。一般情况下,我们使用的DOS都是英文版本,如果需要输出中文,就需要安装中文环境,比如非常有名的UC-DOS。 安装这样的中文环境一般来说不是很方便,并且会增加DOS系统的所需的空间。那么,如何在没有DOS中文的的环境,通过SOL的方式,远程 能显示中文呢? 理论上来说,是可行的,只需要终端控制台能识别中文编码。我们可以在Windows或其他中文环境下写好程序,输出时候使用中文,那么编译 器编译好后的程序输出就是中文,通过SOL的串口传给远程控制台后,控制台能识别中文编码的话,就能自动识别和显示出来。 如果是用SDK里面的Putty来做SOL显示,那么只需要通过Setting里面选择相应的Character set就行。如果是用MDK的Commander和IAMTTerm,那么这里可能需要注意一点就是,默认情况下,iAMTTerm只支持 两种编码:扩展的ANSCII和UTF-8。 如果你按上面方法写的程序,发现SOL控制台总是输出的中文是乱码,不管选择何种编码格式的话,那你需要检查一下你的源代码文件本身的编码 格式了,其本身编码格式会导致编译器编译以后的二进制执行文件的输出也是相应的格式。为了保险起见,推荐使用UTF-8的编码方式,iAM TTerm和Putty都能很好的支持。您所需要做的是,使用功能比较强的编辑器,将您的源代码保存成UTF-8的编码格式后再编译。 如果使用UTF-8编码后,用iAMTTerm来显示SOL输出,发现中文输出不正常的话,可以参考我以前的一篇文章进行调整:http://software.intel.com/zh-cn/blogs/2008/05/28/dtksol [...]
2008年11月11日 14:26


路人甲
terminal 的characterset 處理沒哪麼困難, 是intel 白痴而已.
2008年11月11日 14:37

李铎锋--Duofeng Li (Intel)
李铎锋--Duofeng Li (Intel)总分:
9,850
黑带
Intel是白痴的话,楼上的哪来的电脑在这里回帖呢?

这里的问题只是针对Intel的DTK的Commander工具的问题,软件实现上对中文支持的bug而已,如果用SDK里面的Putty 来作terminal,是没问题的。

 引用 (0)


 写评论  

欲获得技术支持,请访问软件支持页面.
姓名 (必填)*

电子邮件 (必填,不在本页面显示)*

您的 URL (可选)


评论*