串口调试助手2.2使用教程

串口调试助手2.2使用教程串口调试助手和网络调试助手使用总结串口调试助手和网络调试助手是用的比较多的两款工具。先来看看串口调试助手。本人用的比较多的串口助手是正点原子的XCOM以及大虾丁丁的SSCOM首先,解决下串

串口调试助手和网络调试助手使用总结   串口调试助手和网络调试助手是用的比较多的两款工具。   先来看看串口调试助手。   本人用的比较多的串口助手是正点原子的XCOM以及大虾丁丁的SSCOM   
串口调试助手2.2使用教程   首先,解决下串口收发时的统计问题。   
串口调试助手2.2使用教程   注意:这里统计的单位是字节。   串口工具发送时,就只统计你发了多少个字节,发几个就是几个,不考虑底层的协议位。   接收时呢?具体是怎么统计的呢?   比如,我在程序里用printf向串口发了个uint8_t类型的数据100   
串口调试助手2.2使用教程   然后在串口工具上看到了一次发送的统计是5,也就是5个字节,我就觉得很奇怪,明明只发送了一个字节,怎么有这么多呢?   加上开始位结束位,也就一共10bit,另外再加上回车和换行,也就3个字节加上2bit,不管怎么算,都是没有5字节的。   于是,我在串口中以HEX形式来显示接收到的数据。   
串口调试助手2.2使用教程   确实是每次收到了5个字节31 30 30 0D 0A   然后去ascii码中对比,发现了这几个字节正好对应的是:   “字符1字符0字符0回车换行”   原来如此!串口接收并显示,实际上是显示的字符串,当串口工具接收到数据时,为了显示出来,会将其转换成字符串形式,然后以一个一个字符的形式展示出来。   也就是说,串口的接收统计也没有统计底层的协议位,只是统计了数据转成字符串后一共有多少个字符。   当然,这只是串口工具的统计逻辑,其他地方的统计逻辑不一定是这样,不要一概而论。   按照这个逻辑,如果我发送了一个9876,那么串口会显示多少呢?   加上回车换行应该是6位,而不必去考虑这个数发送的时候是什么类型的,只需要考虑发送的数据有多少个字符即可。4个数字字符+1个回车+1个换行,就是=6。   经验证,确实如此。   这样看来,这个接收统计并不能反应接收到了多少字节的数据,只能反应接收到了多少个字符。   知道了这个,回过头看一下,如果发送时不勾选以16进制发送的话,也是按照字符个数来统计的。经验证,也确实如此。   以上程序向串口发送时使用的十进制,那么,如果直接就发的是十六进制呢?跟发十进制是一样的。比如发了个0x64,串口助手照样显示100,照样显示一次接收5个字节。   然后,我试了下不用%d而是用%x去发送   
串口调试助手2.2使用教程   显示的就是十六进制的3456。   由此可见,printf时,串口是按照printf函数指定的形式去展示的。   但是,统计仍然是按照字符形式去统计,以十六进制显示时,也是按照字符一个一个显示。   即,串口按照printf指定的形式,将实际的数据用字符串表示出来。   这么说吧,在显示屏上能看到一切内容,都是字符串的形式,不管底层是什么编码,最终展现出来的都是字符串形式。   所以说,串口工具中是怎么显示的,就要看你printf是怎么指定的,此时,选择以十六进制显示,只是以字符的ascii码的形式展示出来而已。   还有另外一种情况,就是不用printf来发送,直接使用串口发送。   这时候,串口工具是用什么形式来接收呢?   这里又引出了一个问题,这个显示格式化,是由串口工具来处理的,还是由printf来处理后发出的,然后串口工具只是所收即所得,所得即所见呢?   也就是说,串口工具只负责接收并显示,并不去格式化处理。举个例子,有个数据100,我用printf发送,格式为%X,那么,printf就将数据格式化成字符6和4,然后直接发送字符6和字符4的ascii给串口,串口接收到数据,直接先显示出来了,如果是十六进制展示,那么就直接显示收到的ascii码,如果不以ascii码的形式显示,就直接显示对应的字符。   这个问题的确认,就需要不使用printf来发送数据。   直接从串口引出一根数据线加上一根地线,监控串口发送的数据。   本质上,串口工具接收到的是一个一个的二进制位,此时,串口中用十六进制显示,就显示的是对应的十六进制,如果不用十六进制显示,就要看此时十六进制有没有对应的字符,如果有,就可以显示出来,如果没有,就显示不出来,所以,这种情况下,就会经常出现各种各样的乱码。   为什么用printf发送时,不会出现乱码呢?因为本来就是将预期的有序数据通过printf转成了对应字符的ascii码,再将其还原到串口工具时,自然还是预期的数据。   这也能引申出一个问题,那就是为什么有时候编码错了,会出现乱码,那是因为接收到的编码,在当前编码库里找不到对应的符号,无法显示对应的字符,所以就乱码了。   总结来说   屏幕字符串显示的背后,是各种编码。   收到一种编码,然后根据编码来显示对应的字符,实际显示字符时,就需要向屏幕打点或者做出对应的动作,如果是可显示字符,就打点显示,如果不是可显示字符,比如换行,就让屏幕进行换行操作。   串口是你发啥就显示啥,要么直接显示ascii码,要么显示对应的符号。   用printf发送时,是由该函数自己来格式化处理的,制定成什么形式,该函数就将数据格式化成什么形式,然后再发送对应的ascii编码,串口工具接收后,并不做处理,直接按照ascii编码或者字符串形式显示即可。   接着解决下波特率计算的问题   可直接参考这篇文章   通过串口波特率计算数据传输速率(每秒字节数)_串口传输速率_地球被支点撬走啦的博客-CSDN博客   在只有起始位和1位停止位的情况下,传输一个字节的数据包长度为 10 个 bits ,这种情况下的每秒钟可以传输的字节数为 :9600/10=960 bytes 。如果考虑奇偶校验位的话就是 9600/11=872.72 bytes 。   也就是说,是波特率除以10,而不是直接除以8。   这里要注意的是,串口时序是,每个字节都有一个开始位和一个结束位,而不是开始位+好多字节的数据+结束位,而是开始位+一个字节+结束位,然后又是开始位+一个字节+结束位   
串口调试助手2.2使用教程   这就是为什么指定数据位的位数,如果是好多数据,那么指定这个数据位的位数就没有意义了。   再简单说下串口工具的用法   
串口调试助手2.2使用教程   选择十六进制发送时,只能输入十六进制。   通常在发送协议时,都需要选择16进制发送和16进制显示。   
串口调试助手2.2使用教程   其他同类型工具大同小异。   
串口调试助手2.2使用教程   注意,这个工具在发送多字符串指令时,需要勾选前面的HEX框,才会以16进制发送,否则当做字符串发送。   然后说下网络调试助手   可以使用网络调试助手NetAssist或者大虾丁丁的SSCOM   
串口调试助手2.2使用教程   使用方法大同小异,这里以网络调试助手NetAssist为例讲解。   直接参考:   NetAssist使用_故里2130的博客-CSDN博客   
串口调试助手2.2使用教程   比较简单,略。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/82472.html

(0)
上一篇 2024年 7月 28日 下午8:12
下一篇 2024年 7月 28日

相关推荐

关注微信