ESP32通过串口(UART)传输数据遇到的问题及解决

众所周知,串口都是十六进制进行通信,而我要做的是通过串口实时传输采集的数据。我采集的都是十进制的数字,怎么进行传输呢?

这里关于串口的几个知识要了解下:

  • 串口是通过RX和TX两条线进行一位一位传输的通信方式,而且每次传输一个字节即8bit。
  • 常见的的波特率比如115200 bits/s,9600 bits/s,是指每秒传输115200 bits和9600 bits。
  • 串口每次传输的包括一个开始的起止位和结束的一个奇偶校验位。
  • 串口都是从低位到高位进行传输。

如下图所示 在这里插入图片描述
就比如说传输一个0x55 (0x01010101)
在这里插入图片描述
所以问题来了,我怎样传输的数那边接受的数还是我想要的呢?

  • 首先我用了int类型的数组进行传输,C语言里int是4的字节大小的。如果我想传输 0x01 ,0x23,0x45,0x67,0x89,0x01,0x23,0x45。我就不得不这样声明
    int xxx [[2]] = {0x67452301,0x45230189};
    这样通过串口传输的结果才是我想要的。那这样传输也太麻烦了。
    然后我试只有一个字节的char,果然也可以,这样就不用麻烦的想怎么排序了
  • C语言里没有十六进制的数据类型我接受的十进制的数也能传输吗?
    答案是肯定,但是每次只能传输数值在255以下的数。
  • 超过255的怎么办,我的解决办法是归一化,我要传输的数值最后是要统计为波形。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值