众所周知,串口都是十六进制进行通信,而我要做的是通过串口实时传输采集的数据。我采集的都是十进制的数字,怎么进行传输呢?
这里关于串口的几个知识要了解下:
- 串口是通过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的怎么办,我的解决办法是归一化,我要传输的数值最后是要统计为波形。