串口调试助手和网络调试助手使用总结

news2024/11/23 20:51:46

串口调试助手和网络调试助手是用的比较多的两款工具。

先来看看串口调试助手。

本人用的比较多的串口助手是正点原子的XCOM以及大虾丁丁的SSCOM

首先,解决下串口收发时的统计问题。

注意:这里统计的单位是字节。

串口工具发送时,就只统计你发了多少个字节,发几个就是几个,不考虑底层的协议位。

接收时呢?具体是怎么统计的呢?

比如,我在程序里用printf向串口发了个uint8_t类型的数据100

然后在串口工具上看到了一次发送的统计是5,也就是5个字节,我就觉得很奇怪,明明只发送了一个字节,怎么有这么多呢?

加上开始位结束位,也就一共10bit,另外再加上回车和换行,也就3个字节加上2bit,不管怎么算,都是没有5字节的。

于是,我在串口中以HEX形式来显示接收到的数据。

确实是每次收到了5个字节31 30 30 0D 0A

然后去ascii码中对比,发现了这几个字节正好对应的是:

“字符1字符0字符0回车换行”

原来如此!串口接收并显示,实际上是显示的字符串,当串口工具接收到数据时,为了显示出来,会将其转换成字符串形式,然后以一个一个字符的形式展示出来。

也就是说,串口的接收统计也没有统计底层的协议位,只是统计了数据转成字符串后一共有多少个字符。

当然,这只是串口工具的统计逻辑,其他地方的统计逻辑不一定是这样,不要一概而论。

按照这个逻辑,如果我发送了一个9876,那么串口会显示多少呢?

加上回车换行应该是6位,而不必去考虑这个数发送的时候是什么类型的,只需要考虑发送的数据有多少个字符即可。4个数字字符+1个回车+1个换行,就是=6。

经验证,确实如此。

这样看来,这个接收统计并不能反应接收到了多少字节的数据,只能反应接收到了多少个字符。

知道了这个,回过头看一下,如果发送时不勾选以16进制发送的话,也是按照字符个数来统计的。经验证,也确实如此。

以上程序向串口发送时使用的十进制,那么,如果直接就发的是十六进制呢?跟发十进制是一样的。比如发了个0x64,串口助手照样显示100,照样显示一次接收5个字节。

然后,我试了下不用%d而是用%x去发送

显示的就是十六进制的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。

这里要注意的是,串口时序是,每个字节都有一个开始位和一个结束位,而不是开始位+好多字节的数据+结束位,而是开始位+一个字节+结束位,然后又是开始位+一个字节+结束位

这就是为什么指定数据位的位数,如果是好多数据,那么指定这个数据位的位数就没有意义了。

再简单说下串口工具的用法

选择十六进制发送时,只能输入十六进制。

其他同类型工具大同小异。

然后说下网络调试助手

可以使用网络调试助手NetAssist或者大虾丁丁的SSCOM

使用方法大同小异,这里以网络调试助手NetAssist为例讲解。

直接参考:

NetAssist使用_故里2130的博客-CSDN博客

比较简单,略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1184634.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

05-MySQL-进阶-存储引擎索引SQL优化

一、存储引擎 涉及资料 链接:https://pan.baidu.com/s/1M1oXN_pH3RGADx90ZFbfLQ?pwdCoke 提取码:Coke ①:MySQL体系结构 1.连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 T…

掌握未来:PureBasic for Mac引领BASIC语言编辑器的新潮流

PureBasic for Mac是一种创新的BASIC语言编辑器,它赋予了编程更多的可能性。在这个充满机遇的时代,掌握编程就等于掌握了一种强大的工具,能够更好地理解和塑造世界。而PureBasic for Mac,正是这样一个让你轻松上手,高效…

超图Web许可无法访问

1. 报错 docker 容器(7f6f88XXXXX)找不到许可,查看日志,发现报错日志 2. 原因: 查看管理页面,发现许可被172.17.0.8占用 根据容器id寻找容器,找不到,猜测可能是以前删除过的容器,占用了名额 解决…

Flink -- 并行度

1、并行度: 对于一个Flink任务是有Source、Transformation和Sink等任务组成,一个任务由多个并行实例来执行,一个任务的并行实例数目被称为该任务的并行度。 2、TaskManager和Solt Flink是一个分布式流处理框架,它基于TaskManager…

高效自学-网络安全(黑客技术)

一、网络安全应该怎么学? 1.计算机基础需要过关 这一步跟网安关系暂时不大,是进入it行业每个人都必须掌握的基础能力。 计算机网络计算机操作系统算法与数据架构数据库 Tips:不用非要钻研至非常精通,可以与学习其他课程同步进行。 2.渗透技…

定时删除指定目录下的文件,文件名按时间有规律,定时删除过期文件

#!/bin/bash# 指定目录 directory"path/to/directory"# 当前日期 current_date$(date %Y-%m-%d)# 计算7天前的日期 seven_days_ago$(date -d "$current_date -7 days" %Y-%m-%d)# 遍历目录中的文件,按文件名过滤并删除7天前的文件 for file in …

双11“万亿交易额”背后,浪潮信息助力银行扛住交易洪流

双十一,不仅是网络购物的狂欢,更是中国支付清算业务的大考。 举目望去,双十一的台前幕后可谓是“不一样的精彩”。一方面台前的主角是消费者,全球超200个国家和地区的人们捧着手机、电脑,在阿里、京东、抖音、拼多多等…

第七章 块为结构建模 P2|系统建模语言SysML实用指南学习

仅供个人学习记录 流建模 对系统不同组成之间的流做出定义可提供它们之间交互作用的抽象视图 项是定义为流动事物的通用术语。流属性定义了该块可以流入或流出的项 为流动的项建模 项item用于描述一类流动的实体,可以是物质流(如物质和能量&#xff…

SpectralDiff论文阅读笔记

高光谱图像分类是遥感领域的一个重要问题,在地球科学中有着广泛的应用。近年来,人们提出了大量基于深度学习的HSI分类方法。然而,现有方法处理高维、高冗余和复杂数据的能力有限,这使得捕获数据的光谱空间分布和样本之间的关系具有挑战性。 为了解决这一问题,我们提出了一…

【Unity之UI编程】在Unity中如何打图集,来降低DrowCall

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:UI_…

win11右键菜单切换为win10样式

最近更新了win11,右键菜单和我的使用习惯很不一致,于是打算切换回去,看了网上好多教程,决定使用以下方法,记录以下,防止忘记。 一、切换win10 1、管理员运行命令提示符 2、输入 reg add "HKCU\Soft…

P1506 拯救oibh总部(BFS洪水灌溉)

题目: 样例1: 输入 4 5 00000 00*00 0*0*0 00*00 输出 1 样例2: 输入 5 5 ***** *0*0* **0** *0*0* ***** 输出 5 思路: 洪水灌溉,思路:给该图外面包围一圈可遍历的的点,作为引流灌溉。 BFS…

python自动化测试(3)- 自动化框架及工具

1、概述 手续的关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化接口测试性价比最高接口测试可以做自动化 后面所谈到的 测试自动化 也将围绕着 接口自动化 来介绍。 本系列选择的测试语言是 python 脚本语言。由于其官…

node项目调试

node 版本要在16.8版本或以上,12点几没有这个调试功能 ctrlshiftp debug: toggle auto attach 将自动附加打开,打断点,然后执行命令 node --inspect ./bin/mvc.js,然后就进入调试

MySQL索引事务存储引擎

索引:是一个排序的列表 列表中存储的是索引的值和包含这个值数据所在行的物理地址 索引的作用 利用索引数据库可以快速定位 大大加快查询速度表的数据很大 或查询需要关联多个表 使用索引也可以查询速度加快表与表之间的连接速度使用分组和排序时可以大大减少时间提…

TensorFlow学习笔记--(2)张量的常用运算函数

张量的取值函数 求张量的平均值: tf.reduce.mean(%张量名%)求张量的最小值:tf.reduce_min(%张量名%)求张量的最大值:tf.reduce_max(%张量名%)求张量的和:tf.reduce_sum(%张量名%)其次,对于上述所有操作 都可在函数后添加一个新的参数 axis%维度% axis0 代表第一维度 axis1 代表…

【Unity】思考方式与构造 | 碰撞器/刚体/预设/组件

《Unity神技大人炼成记》第二章-思考方式与构造 Unity版本:2019.4.23f1c1 相关文章:第一章:开天辟地(场景搭建-天空 山脉 草木 湖泊) 粉色矩形是截图后添加,以便辨认操作位置有些步骤只是为了体现一些属性…

网络安全入门建议

前言 最近有很多人问我,我想自学一些安全相关的技术,有没有适合入门阶段学习的web安全书籍。说到Web安全书籍,这几年其实是一种百家齐放的状态,不断有优秀的书籍出版,那这里就尽可能少地整理几本我阅读过的Web安全入门…

【11】使用透视投影建立一个3D空间的测试

核心操作: 1.proj view model 这三个矩阵 glm::mat4 mvp m_Proj * m_View * model; m_Shader->Bind(); m_Shader->SetUniformMat4f("u_MVP", mvp);着色器里面就: proj:投影矩阵,可以选择正交投影,或者透视投影…