2个八位合成十六位

2019-08-19 20:33发布

mini 板串口1接收到4096个数据,如01 11 02 42 ........。现要合成2048个16位数据,如01位高八位,11为低八位;02位高八位,42位低八位...........。合成后的数据通过串口3发送出来,利用串口调试助手显示合成后的2048个数(其中串口调试助手显示要求是十进制)。求大神指导!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
jxcrgt35
1楼-- · 2019-08-19 20:51
指针运用。如
unsigned char frombuff;
unsigned int *ptobuff=&frombuff;
操作ptobuff即可
jermy_z
2楼-- · 2019-08-20 00:50
用联合,或者强制转换都行
Ecrhon
3楼-- · 2019-08-20 02:22
可以使用memcpy库函数进行内存拷贝,把两个8位数据拷贝到一个16位数据类型中去。
假设这2个8位数据类型为char c[2];16位为short s;那么你直接memcpy(&s,c,2);就合并了这两个数
18936018580
4楼-- · 2019-08-20 06:49
Ecrhon 发表于 2017-5-2 16:36
可以使用memcpy库函数进行内存拷贝,把两个8位数据拷贝到一个16位数据类型中去。
假设这2个8位数据类型为c ...

谢谢,串口调试助手显示不出来,显示全位00 00 00 00.。。。。是不是串口调试助手数据位选择不对?可是最大只能选8位,不能选16位
MrXiong
5楼-- · 2019-08-20 10:07
 精彩回答 2  元偷偷看……
Ecrhon
6楼-- · 2019-08-20 10:35
18936018580 发表于 2017-5-2 16:57
谢谢,串口调试助手显示不出来,显示全位00 00 00 00.。。。。是不是串口调试助手数据位选择不对?可是最 ...

刚复习了一下串口通讯的相关原理,似乎规定一次最多只能发8位数据,那么你需要做的就不是在MCU上合成两个8位数据为16位,而是应该在接收端收到两个8位数据后进行合成。这是通讯协议规定的。
我前段时间做过相关项目,传感器通过蓝牙模拟的串口传回来两个字节的数据。我在上位机处接收到若干8位数据后,根据事先规定的数据起始字节和校验字节判断数据完整性,然后把接受到这一次测量数据每两个字节组合成为一个数据,使用的方法就是我刚提到的memcpy。所以数据合并应当是上位机的工作,下位机只管发送就OK了

一周热门 更多>