使用Secure CRT登录telnet查看打印,发现输出的英文字符有乱码。
iParamRead:317:Get Param 40 鮛$ Ua_+ M_g 0|F5 0|5F 0|24 0|1 0|E 0|0 Ua_+ M_g 0|F5 0|5F 0|26 0|1 0|0 0|0 Ua_+ M_g 0|F5 0|5F 0|2A 0|1 0|0 0|0 c++-+|/c++_-+ed.c:+O+ed_i+i+:114:O+ed I+i+ D-+e NET: +O+edM_gRc+T_+ +h_ead c_ea+e OK... NET: iO+edM_gP_-ce__T_+2C_ea+e +h_ead c_ea+e OK... c++-+|/b_-adca_+_-_-ce__.c-73: Bi+d S-c+e+ c++-+|/b_-adca_+_-_-ce__.c-80: I+i+ OK c++-+|/c++_+|_-_-ce__.c:iLedS+a++_T_+C_ea+e:1292:LED: C_ea+e +ed -_-ce__ +a_+. c++-+|/c++_+|_-_-ce__.c:iLedS+a++_T_+C_ea+e:1304:LED -_-ce__ +a_+ C_ea+ed OK. c++-+|/c++_+|_-_-ce__.c:iHPDS+a++_T_+C_ea+e:1499:HPD: C_ea+e HPD _+a++_ -_-ce__ +a_+. c++-+|/c++_+|_-_-ce__.c:iHPDS+a++_T_+C_ea+e:1511:HPD -_-ce__ +a_+ C_ea+ed OK. c++-+|/c++_+|_-_-ce__.c:iB_-adCa_+M_gP_-T_+C_ea+e:1756:BROADCAST: C_ea+e b_-adca_+ +_g -_-ce__ +a_+. c++-+|/c++_+|_-_-ce__.c:iB_-adCa_+M_gP_-T_+C_ea+e:1768:BROADCAST -_-ce__ +a_+ C_ea+ed OK.
按照网上操作,排除是字符编码的问题。以前只出现过串口打印有乱码,telnet出现乱码,这还是第一次。一开始怀疑是Secure CRT软件版本太老的问题,我用的版本是v6.2,很老的版本了。升级v8.3、v8.5,问题还是存在。使用其它终端软件putty、xshell,查看打印都是正常的,唯独Secure CRT打印出现乱码。重启电脑、重启设备,问题依旧。昨天下午尝试了很多方法,都解决不了这个问题。已经打算使用其它终端代替Secure CRT了。
今天继续看这个问题的时候,仔细看了打印出现乱码的地方,发现是从固定地方开始的。进一步查看发现是printf输出了一个特殊的ASCII字符“0xE”(val = 0xE),
printf("Set params %d %s\n", param, val);
正是这个字符导致了Sercure CRT后面显示的内容出现乱码。把这个打印去掉,显示就正常了。