近日有个需求,需要让Intel AMT在做串口重定向的时候能够很好的显示中文。我记得Intel AMT SOL本身应该是支持UTF-8编码格式,可以传输各种语言格式的字符,所立理论上来说,这个需求应该不是问题。拿最新版的Intel DTK(0.51x version)试了一下,用了一张Windows XP的安装光盘测试。打开DTK的Intel IAmtTerm后,首先需要设置终端仿真方式,如下图所示,修改为VT100/UTF-8,然后设置好相关IDER参数,选择重启动到IDER的光驱。
打开Intel AMT Terminal工程的源代码仔细检查后,发现了问题所在:IAmtTerm是这样显示字符的,一个方框一个方框的显示终端字符,方框的大小是根据用户选 择的字体大小来决定的,程序中是取样字符'A'的大小,然后决定字符框的大小,然后在显示的时候,把字符显示在对应位置相应大小的字符框中;很显然,问题 来了,我们知道中文的显示一般是需要占到两个英文字符大小宽度,所以上面出现的问题也就迎刃而解。 解决办法:在显示中文字符时候,把用来显示字符的方框变为原来的两倍大小即可;同时,为了达到和系统显示一样的效果,存储输出数据的数组中的所有中文字符 的下一个元素存储的值将会被抛弃,在存储的时候就需要间开。修改后的显示中文的效果如下图所示:
这里是修改过的源代码,是Intel AMT Controls目录下的TerminalControl.cs,从这里下载
terminalcontrol.zip,解压覆盖原来的就可。
另外,如果你用SDK里面的Putty来做SOL显示的话,只需要设置将起设置中的Window-->Translation中的 "Received data assumed to be in which character set" 设置为 UTF-8 即可。
本文转自Intel_ISN 51CTO博客,原文链接:http://blog.51cto.com/intelisn/131461,如需转载请自行联系原作者