xiaomage_2000 发表于 2010-7-5 14:29:35

请教C语言中怎么把串口收到的一组数据比如3个或4个8位数据合为一个变量?

如题,如何把串口接收到的比如上位机通讯传送过来一个65535(打个比方)他肯定是分成FF,和FF来发送的吧,但接收到后在怎么把他们重新组合起来,如果大于65535呢?

huchengxtu 发表于 2010-7-5 14:46:23

确定接受数据个数
移位

xiaomage_2000 发表于 2010-7-5 16:11:56

回复【1楼】huchengxtu 费米机器
确定接受数据个数
移位
-----------------------------------------------------------------------

LS可能没太明白我的意思呵呵,我在解释下:
比如串口发送过来一组数据我就随便蒙几个数了啊:0x20,0xd1,0xe3,0xee...比如他们4个为一组也就是原数据应该是:20d1e3ee
但我收到的可是我说的那些,而且我可以定义一个数据区,比如unsinged char code TAB1 []={}
但我需要的是这整数,比如我已经定义了一个LONG变量了,可我怎么把这些:0x20,0xd1,0xe3,0xee传给这个变量呢,比如这个变量是I

xiaomage_2000 发表于 2010-7-5 16:12:41

回复【1楼】huchengxtu 费米机器
确定接受数据个数
移位
-----------------------------------------------------------------------

LS可能没太明白我的意思呵呵,我在解释下:
比如串口发送过来一组数据我就随便蒙几个数了啊:0x20,0xd1,0xe3,0xee...比如他们4个为一组也就是原数据应该是:20d1e3ee
但我收到的可是我说的那些,而且我可以定义一个数据区,比如unsinged char code TAB1 []={}
但我需要的是这整数,比如我已经定义了一个LONG变量了,可我怎么把这些:0x20,0xd1,0xe3,0xee传给这个变量呢,比如这个变量是I

flyunlimit 发表于 2010-7-5 16:17:22

明白。
移位。

xiaomage_2000 发表于 2010-7-5 16:43:03

哦,我懂了,呵呵,就是一位一位给移进去啊~
没有更好的方法了吗?

xiaomage_2000 发表于 2010-7-5 16:46:20

也就是I先等于最高位比如刚才的20,然后在循环<<直到全移进去?

xiaomage_2000 发表于 2010-7-5 16:47:05

也就是I先等于最高位比如刚才的20,然后在循环<<直到全移进去?

oufuqiang 发表于 2010-7-5 16:47:21

用指针可能会快点。

Eiman 发表于 2010-7-5 16:55:41

用联合吧

flywater 发表于 2010-7-5 17:02:25

实现方法很多:
1、unsinged char TAB1 []={ 0x20,0xd1,0xe3,0xee };
unsigned long *i;
i=TAB1;
*i就是你要组合的数;

2、用memcpy(i,TAB1,4);

3、最好还是用union来实现,具体方法请在坛子里搜一下,重复输入好多次了。

xiaobendan 发表于 2010-7-5 17:08:26

9楼10楼的方法都行

728196 发表于 2010-7-5 18:58:39

使用联合体

typedef uinon aa
{
long i;
uchar table;
}
存到数组里 使用i;

xiaomage_2000 发表于 2010-7-6 10:05:10

多谢各位!学习了~

xiaomage_2000 发表于 2010-7-6 10:05:55

多谢各位!学习了~

jrcsh 发表于 2010-7-6 12:10:23

不错要顶的贴~~~~~很多刚学串口应用的都是遇到这个问题

tyqhaha 发表于 2011-1-10 10:10:25

学习了,谢谢

wft2 发表于 2011-1-10 11:16:44

wft2 发表于 2011-1-10 11:18:49

fsclub 发表于 2011-1-10 11:24:43

移几位,然后用或。

WZQ525135 发表于 2014-2-23 10:03:39

{:biggrin:}

Taoj 发表于 2014-5-21 17:06:02

MARK !!!!!!!!!!!!!
页: [1]
查看完整版本: 请教C语言中怎么把串口收到的一组数据比如3个或4个8位数据合为一个变量?