请教C语言中怎么把串口收到的一组数据比如3个或4个8位数据合为一个变量?
如题,如何把串口接收到的比如上位机通讯传送过来一个65535(打个比方)他肯定是分成FF,和FF来发送的吧,但接收到后在怎么把他们重新组合起来,如果大于65535呢? 确定接受数据个数移位 回复【1楼】huchengxtu 费米机器
确定接受数据个数
移位
-----------------------------------------------------------------------
LS可能没太明白我的意思呵呵,我在解释下:
比如串口发送过来一组数据我就随便蒙几个数了啊:0x20,0xd1,0xe3,0xee...比如他们4个为一组也就是原数据应该是:20d1e3ee
但我收到的可是我说的那些,而且我可以定义一个数据区,比如unsinged char code TAB1 []={}
但我需要的是这整数,比如我已经定义了一个LONG变量了,可我怎么把这些:0x20,0xd1,0xe3,0xee传给这个变量呢,比如这个变量是I 回复【1楼】huchengxtu 费米机器
确定接受数据个数
移位
-----------------------------------------------------------------------
LS可能没太明白我的意思呵呵,我在解释下:
比如串口发送过来一组数据我就随便蒙几个数了啊:0x20,0xd1,0xe3,0xee...比如他们4个为一组也就是原数据应该是:20d1e3ee
但我收到的可是我说的那些,而且我可以定义一个数据区,比如unsinged char code TAB1 []={}
但我需要的是这整数,比如我已经定义了一个LONG变量了,可我怎么把这些:0x20,0xd1,0xe3,0xee传给这个变量呢,比如这个变量是I 明白。
移位。 哦,我懂了,呵呵,就是一位一位给移进去啊~
没有更好的方法了吗? 也就是I先等于最高位比如刚才的20,然后在循环<<直到全移进去? 也就是I先等于最高位比如刚才的20,然后在循环<<直到全移进去? 用指针可能会快点。 用联合吧 实现方法很多:
1、unsinged char TAB1 []={ 0x20,0xd1,0xe3,0xee };
unsigned long *i;
i=TAB1;
*i就是你要组合的数;
2、用memcpy(i,TAB1,4);
3、最好还是用union来实现,具体方法请在坛子里搜一下,重复输入好多次了。 9楼10楼的方法都行 使用联合体
typedef uinon aa
{
long i;
uchar table;
}
存到数组里 使用i; 多谢各位!学习了~ 多谢各位!学习了~ 不错要顶的贴~~~~~很多刚学串口应用的都是遇到这个问题 学习了,谢谢 移几位,然后用或。 {:biggrin:} MARK !!!!!!!!!!!!!
页:
[1]