串口接收数据的问题

2019-08-13 20:17发布

请教各位大侠,小弟做串口接收程序的时候遇到了一个问题,上位机传过来的数组是先发高位后发低位,比如 原本应该发送这样的数组 :0x55 0x11 0xaa 0x10 上位机发送过来的是0x10 0xaa 0x11 0x55, 请问我应该怎么方便的处理这个数呢,因为上位机发过来的数有的是U16的  又有的是U32的,希望有个可以通用的办法。求各位大侠给点建议,谢谢了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
jermy_z
1楼-- · 2019-08-14 00:13
自己转换组合下不就好了    自己定好协议    搞不懂就去看C语言基础, <<  , >>
oywjex
2楼-- · 2019-08-14 01:41
jermy_z 发表于 2017-10-12 10:11
自己转换组合下不就好了    自己定好协议    搞不懂就去看C语言基础, >

可是他的数占的字节数是不一样的嘛,比如一个U32占4个字节0xaa 0x12 0x13 0x14 一个U16占2个字节 0x55 0x33,我这边应该收到是6个字节的数0xaa 0x12 0x13 0x14 0x55 0x33,可是实际上是0x14 0x13 0x12 0xaa 0x33 0x55,虽然顺序反了一下,可是U32的数还是在U16的前面,我再把每个可能性都定一个函数来转化我觉得特别的麻烦呀,感觉应该会有比这个有效的办法呢。
Acuity
3楼-- · 2019-08-14 07:06
封装2个函数,一个发送,一个接收,大端模式发送就用大端模式接收,小端模式发送就用小端模式接收,接收完合并下交给应用;串口是字符型总线,所有数据转化为字节处理(发送/接收)。
[mw_shl_code=c,true]int usart_tx_data(unsigned char usart_num,char *tx_data,unsigned char data_length);
int usart_rx_data(unsigned char usart_num,char *rx_data,unsigned char data_length);[/mw_shl_code]
xiedonghui258
4楼-- · 2019-08-14 10:34
 精彩回答 2  元偷偷看……
一起哈皮
5楼-- · 2019-08-14 11:24
上位机一次只发一个数据就按长度来判断是u8还是u32,多个还是自定通讯协议吧,让上位机在各个数据前加个标志位,下位机判断不同标志位处理不同长度的数据
oywjex
6楼-- · 2019-08-14 16:37
一起哈皮 发表于 2017-10-12 11:35
上位机一次只发一个数据就按长度来判断是u8还是u32,多个还是自定通讯协议吧,让上位机在各个数据前加个标 ...

通讯协议我是有的,我知道第几位是什么类型的,占多少个字节都是清楚的。所以您的意思就是针对每个类型都写一个函数来接收么?

一周热门 更多>