zhihuazhu 发表于 2016-10-24 10:44:24

arduino接收16进制数据的问题

我用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 。。。。
传感器发送回来的数据格式是七个字节,但是有用的数据就是后面两位,倒数第二位在高字节,倒数第一位在低字节,组成的十六进制数据转化为十进制就是所要求的的数据,但是我现在怎么把这两个字节给提取出来并且转化成十进制啊,跪求大神讲解
//【char A = {0xFF, 0xCC, 0x03, 0xA3, 0xA0};

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;
//Serial.write(&A);
int i=0;
// put your main code here, to run repeatedly:
while (Serial1.available() > 0) {
    col = Serial1.read();
str=col;
i++;
if(i=6){
i=0;
}
    int high=str;
    int low=str;
    int x=(high<<8)|low;
    Serial.write(x);

}
//Serial.flush();
//Serial.println("2");
}
我这样串口显示的数据是00 00 00 00 00 00 00 00 00 。。。。
请问是哪里出了问题啊

zjz5717 发表于 2016-10-24 19:59:14

先说一个问题,i是可以等于6的,应该是i=7的时候i=0
还有,串口接收数据的时候是一位一位接受的,FF其实是分成两次接收,每次都会接受F

antbot 发表于 2016-10-24 11:07:57

建议这样写代码先试试看收到的数据对不对:
void loop{
unsigned char col;
while (Serial1.available() > 0) {
    col = Serial1.read();
    Serial.write(col,HEX);
    delay(1);
}
}

zhihuazhu 发表于 2016-10-24 11:10:48

antbot 发表于 2016-10-24 11:07
建议这样写代码先试试看收到的数据对不对:
void loop{
unsigned char col;


显示错误啦
exit status 1
call of overloaded 'write(unsigned char&, int)' is ambiguous

antbot 发表于 2016-10-24 16:37:46

zhihuazhu 发表于 2016-10-24 11:10
显示错误啦
exit status 1
call of overloaded 'write(unsigned char&, int)' is ambiguous

把Serial.write改成Serial.println

GDHack 发表于 2016-10-24 21:58:24

你们都没看出问题在哪里么;P;P;P;P;P;P
if(i=6)要改成if(i==6)啊;P;P;P;P;P;P
又是一个C语言初学者

zhihuazhu 发表于 2016-11-17 17:01:45

zjz5717 发表于 2016-10-24 19:59
先说一个问题,i是可以等于6的,应该是i=7的时候i=0
还有,串口接收数据的时候是一位一位接受的,FF其实是 ...

您说得很对,对于i的问题是我没有考虑清楚,已经修改了。
但是对于数据一位一位接收的问题,我不太清楚改样把接收到的后最后两个数据作为呼吸数据计算出来。
求大神详细讲解一下,拜谢

275891381 发表于 2017-4-26 22:09:48

char AA[]="af";
String BB ="EE";
void setup() {
Serial.begin(9600);
}
void loop() {
int i= strtol(AA,NULL,16);
Serial.print(i);
Serial.print(",");
i= strtol(BB.c_str(),NULL,16);
Serial.println(i);
}
页: [1]
查看完整版本: arduino接收16进制数据的问题