新手上路
- 积分
- 48
- 金钱
- 48
- 注册时间
- 2013-7-29
- 在线时间
- 0 小时
|
发表于 2013-9-16 18:38:36
|
显示全部楼层
回复【楼主位】周日党:
---------------------------------
回复【2楼】正点原子:
---------------------------------
回复【5楼】玻璃之城2046:
---------------------------------
回复【7楼】hwl1023:
---------------------------------
回复【8楼】tuqiao820:
---------------------------------
回复【9楼】cmc:
---------------------------------
回复【11楼】miracode:
---------------------------------
以上各位,我在战舰板子上也遇到这种问题,看起来好像是数据丢失了,而且回车换行也不太对。
后来分析了十六进制数据,发现数据并没有丢失。
1. 这个问题就是字符串'\0'和sscom串口助手的问题。
2. 程序中sizeof()计算字符串长度会将字符串末尾的\0计算进去,发送时也会最后发送一个字节0x00,在sscom软件中判断双字节字符的算法遇到这个情况就会出错了,会把0x00 后面的一个或几个字节废掉显示不出来,导致大家看到好像是丢了数据。
3. 可以将程序源码中,cnt = sizeof("字符串"); 改为====》 cnt = sizeof("字符串")-1; 再发送就没有问题了。
4. 回车换行的故障也是这个'\0' 导致的,改后回车换行也正常了。
5. 另外,还发现一个sscom的诡异之处,如果不改源码,在sscom窗口选中Hex显示后,再取消Hex显示,数据显示就正常了!真的诡异。 |
|