极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11818|回复: 3

求助帖:连续两次读取串口数据

[复制链接]
发表于 2013-7-11 14:32:35 | 显示全部楼层 |阅读模式
通过串口发送形如 100,100,100,100,100,100 的字符串,然后将这六个数字分别输出到相应的引脚,对其进行delay操作。
这个功能已经实现。

现在的问题的是,我买了一个蓝牙模块,但是这个蓝牙模块一次只能够接受20位以内的字符串,而刚才那串字符串是23位,这就意味着我必须通过两次输入,每次输入100,100,100这样的形式。
我试着如下编程(后面的程序省略了),但是不可行,输入完第一次之后,后面的程序就自动开始执行了。请问如何通过连续两次串口输入,让第一次的值给到comdata1,让第二次的值给到comdata2。
请各位大神帮忙!

int mark1=0, mark2=0;

void loop()
{
      while (mark1==0&&Serial.available() > 0)
    {
      comdata1 += char(Serial.read());
      delay(2);
    }
    mark1=1;


    while (Serial.available() > 0)
    {
      comdata2 += char(Serial.read());
      delay(2);
      mark2=1;
    }
回复

使用道具 举报

发表于 2013-7-11 15:56:54 | 显示全部楼层
蓝牙模块的缓冲区是自己控制的,单片机的串口缓冲也是自己的,没绝对关系,主要影响的是发送速度,数据不能发送太快。最好用两个字节做包头,一个自己做包尾,方便判断。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-11 18:51:47 | 显示全部楼层
losingrose 发表于 2013-7-11 15:56
蓝牙模块的缓冲区是自己控制的,单片机的串口缓冲也是自己的,没绝对关系,主要影响的是发送速度,数据不能 ...

老师,你好!
请问具体如何实现?
求解。

我刚才那段程序,执行之后,发送一次数据100,100,100之后,程序就直接运行下去了。没有停下来,让我发送第二次数据。
因此,最后赋值的时候,出现了前三个数据都是0,后三个数据都是100的情况。

回复 支持 反对

使用道具 举报

发表于 2013-10-30 22:53:44 | 显示全部楼层
losingrose 发表于 2013-7-11 15:56
蓝牙模块的缓冲区是自己控制的,单片机的串口缓冲也是自己的,没绝对关系,主要影响的是发送速度,数据不能 ...

请问:
我的PC端发出来的是hex格式的数据,我的数据是“7F 00 # 10 80 01 # 2F # 2F # 00 # 7F”这么一个格式,#号代表的位数不一定,我应该怎么写代码,才能把这些#代表的东西取出来呢?
看了很多资料,都没有一个头绪。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 07:38 , Processed in 0.044325 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表