跪求大神!!arduino串口接收传感器数据的问题
小弟新刚刚上手arduino没多久,现在打算用arduino UNO r3接收一个倾角传感器的数据,收到的数据很奇怪下面是传感器的通信协议(应答命令里面数据域是3byte,图片上面标错了)
数据格式: 16进制
标示符:固定为77
数据长度:从数据长度到校验和(包括校验和)的长度
地址码:采集模块的地址,默认为00
数据域:根据命令字不同内容和长度相应变化。
校验和:数据长度、地址码、命令字和数据域的和不考虑进位
命令结束符:0D 0A
下面是代码,现在的情况是串口收到的数据完全是混乱的,连标示符都收不到,求大神帮忙
#include <SoftwareSerial.h>
SoftwareSerial Serial1(10,11);
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
Serial1.write(0x77);
Serial1.write(0x04);
Serial1.write((byte)0x00);
Serial1.write(0x01);
Serial1.write(0x05);
Serial1.write(0x0D);
Serial1.write(0x0A);//给传感器发送指令,让其工作,发送数据。
delay(1000);
}
byte jieshou;
byte flag=0;
byte inByte;
void loop() {
if (Serial1.available() > 0&&flag==0)
{
delay(10);
if(inByte==0x77)//检验标识符
{
for(int i=0;i<9;i++)
{
if(Serial1.available()>0) jieshou=Serial1.read();
delay(10);
}
if(jieshou==0x0D&&jieshou==0x0A)flag=1;//检验命令结束符
}
}
if(flag==1)
{
int a=jieshou;//符号部分,0为正,1为负
int b=jieshou;//整数部分
int c=jieshou;//小数部分
float jiaodu=b+c/100;
if(a==0){Serial.print(jaodu);}
else{Serial.print(jaodu);}
for(int i=0;i<9;i++)
{
jieshou=0x00;
}
flag=0;
}
} 巧了这个倾角传感器我用过。但是程序已经忘记怎么写了,需要找找原文件。
这个传感器好像是北微牌的,哈哈……看通讯协议很熟。 本帖最后由 yeastyanis 于 2016-12-28 12:31 编辑
PINKWALKMAN 发表于 2016-12-28 08:22
巧了这个倾角传感器我用过。但是程序已经忘记怎么写了,需要找找原文件。
这个传感器好像是北微牌的,哈哈 ...
对的,就是北微的倾角传感器:D,求大神帮忙看一下 给我个邮箱找个时间把程序发给你。 PINKWALKMAN 发表于 2016-12-29 08:04
给我个邮箱找个时间把程序发给你。
没办法私信,直接在这里回复了
我的邮箱是[email protected]
非常感谢~:D 已发送,由于传感器发送的数据字节是固定,我这采用的是循环位移接收的方式,你看看。 PINKWALKMAN 发表于 2016-12-29 08:04
给我个邮箱找个时间把程序发给你。
大神!!也给我一份这个的代码吧![email protected] 感激不尽!!! PINKWALKMAN 发表于 2016-12-29 08:04
给我个邮箱找个时间把程序发给你。
大神,跪求一份 [email protected] cyqq 发表于 2017-7-3 09:28
大神,跪求一份
已经发到你的QQ邮箱。
hhhwwwyyy 发表于 2017-3-21 11:03
大神!!也给我一份这个的代码吧! 感激不尽!!!
已经发到你的QQ邮箱。 PINKWALKMAN 发表于 2017-7-3 11:34
已经发到你的QQ邮箱。
求兄弟发一份资料给我,万分感谢,邮箱:[email protected] PINKWALKMAN 发表于 2016-12-29 08:04
给我个邮箱找个时间把程序发给你。
我也碰到问题了,请帮忙也发一份[email protected],谢谢! PINKWALKMAN 发表于 2016-12-28 08:22
巧了这个倾角传感器我用过。但是程序已经忘记怎么写了,需要找找原文件。
这个传感器好像是北微牌的,哈哈 ...
大神!!能给我也发一份吗?[email protected]
页:
[1]