极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21020|回复: 8

跪求大神!!arduino串口接收传感器数据没有数据

[复制链接]
发表于 2016-11-17 17:46:30 | 显示全部楼层 |阅读模式

我用arduino连接呼吸传感器得到的呼吸数据是FF CC 05 A5 A0 00 00 FF CC 05 80 A0 01 DA FF CC 05 80 A0 01 DA FF CC 05 80 A0 01 DA FF CC 05 7F A0 01 D9 FF CC 05 7F A0 01 D9 FF CC 05 7F A0 01 D9 FF CC 05 7F A0 01 D9 FF CC 05 80 A0 01 DA FF CC 05 7F A0 01 D9 FF CC 05 7F A0 01 D9 FF CC 05 7E A0 01 D8 FF CC 05 7F A0 01 D9 FF CC 05 7F A0 01 D9 FF CC 05 7F A0 01 D9 。。。。
传感器发送回来的数据格式是七个字节,但是有用的数据就是后面两位,倒数第二位在高字节,倒数第一位在低字节,组成的十六进制数据转化为十进制就是所要求的的数据,但是我现在怎么把这两个字节给提取出来并且转化成十进制啊,跪求大神讲解

下面的程序得到的数据如下面所示,但是应该不是这样子的啊(本来应该是400+这样的数据,怎么会只有30 32这样呢)百思不得其解
void setup() {
  // put your setup code here, to run once:

Serial1.begin(115200);

Serial.begin(115200);
Serial1.write(0xFF);
Serial1.write(0xCC);
Serial1.write(0x03);
Serial1.write(0xA3);
Serial1.write(0xA0);//给传感器发送指令,让其工作,发送数据。

}

void loop() {char col;
char str[7];
int x;
//Serial.write(&A[0, 5]);
int i=0;
  // put your main code here, to run repeatedly:
  while (Serial1.available() > 0) {
    col = Serial1.read();
str[i]=col;
i=i+1;
if(i==7){
  i=0;
  int high=str[5];
    int low=str[6];
    x=(high<<8)|low;
}
Serial.print(x);
  }
  //Serial.flush();
//  Serial.println("2");
}

得到的数据是
32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 2D 34 36 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 2D 34 36 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 2D 34 36 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 2D 34 36 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 2D 34 35 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30 30 31 32 30 30
这数据明显是不对的啊
回复

使用道具 举报

发表于 2016-11-17 20:18:38 | 显示全部楼层
你试试 int high=(int *)str[5];
回复 支持 反对

使用道具 举报

发表于 2016-11-17 20:43:35 | 显示全部楼层
本帖最后由 275891381 于 2016-11-17 22:29 编辑

  1. void setup() {
  2. Serial.begin(115200);
  3. Serial1.begin1(115200);
  4. Serial1.write(0xFF);
  5. Serial1.write(0xCC);
  6. Serial1.write(0x03);
  7. Serial1.write(0xA3);
  8. Serial1.write(0xA0);//给传感器发送指令,让其工作,发送数据。
  9. delay(1000);
  10.   }

  11. byte jieshou[5];
  12. byte flag=0;
  13. byte inByte;
  14. void loop() {

  15.     if (Serial1.available() > 0&&flag==0)
  16.     {
  17.            inByte=Serial1.read();delay(10);
  18.            if(inByte==0xcc)
  19.            {
  20.                for(int i=0;i<5;i++)
  21.                {
  22.                    if(Serial1.available())jieshou[i]=Serial1.read();delay(10);
  23.                }
  24.               if(Serial1.available())inByte=Serial1.read();delay(10);
  25.               if(inByte==0xff)
  26.                  flag=1;  
  27.            }            
  28.     }
  29.     if(flag==1)
  30.     {
  31.            int high=jieshou[3];
  32.            int low=jieshou[4];
  33.            int x=(high<<8)|low;
  34.           Serial.println(x);
  35.           for(int i=0;i<5;i++)
  36.           {
  37.             //  Serial.write(jieshou[i]);
  38.               jieshou[i]=0x00;
  39.           }
  40.           flag=0;
  41.     }
  42. }
  43. //把你的那一点代码加进去了
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-17 22:15:42 | 显示全部楼层

串口助手没有数据出来,您看看是不是有啥问题呀?
回复 支持 反对

使用道具 举报

发表于 2016-11-17 22:22:10 | 显示全部楼层
本帖最后由 275891381 于 2016-11-17 22:27 编辑
zhihuazhu 发表于 2016-11-17 22:15
串口助手没有数据出来,您看看是不是有啥问题呀?


你用的串口几 我这只有一个串口  你再试试,我把str改了,改了俩串口
回复 支持 反对

使用道具 举报

发表于 2016-11-17 22:34:38 | 显示全部楼层
可以吧,我试了可以呀
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-18 16:05:32 | 显示全部楼层
275891381 发表于 2016-11-17 22:34
可以吧,我试了可以呀

为什么用串口助手看x的数据,只有前面几个是对的,后面的就有问题了呢
0
469
469
470
472
473
473
474
470
-13057
-13057
-13057
-13057
-13057
-13057
-32257
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-13057
-52
-1
-52
-52
-52
-52
-52
-52
-52
-52
-13057
-13057
-13057
511
-13057
-13057
-13057
-13057
回复 支持 反对

使用道具 举报

发表于 2016-11-18 23:11:02 | 显示全部楼层
zhihuazhu 发表于 2016-11-18 16:05
为什么用串口助手看x的数据,只有前面几个是对的,后面的就有问题了呢
0
469

你用串口助手直接读取他发来的数据看看是啥 有没有问题
前卖弄对后面错 估计我写的程序容错能力差 ,你改改就可以了
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 00:14 , Processed in 0.043126 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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