arduino 读取串口返回字符串的2个字节
字符串结构如下帧头发送方地址自己的地址帧长0x80命令低地址高地址读字节数数据校验和(2字节)(1字节)(1字节)(1字节)(1字节)(1字节)(1字节)(1字节)(1字...
字符串结构如下
帧头 发送方地址 自己的地址 帧长 0x80 命令 低地址 高地址 读字节数 数据 校验和
(2字节)(1字节) (1字节) (1字节) (1字节) (1字节) (1字节)(1字节) (1字节) (2字节) (1字节)
需要将校验和前面的两字节数据提取出来, 校验后, 转成10进制的数, 赋值给变量dis_count 展开
帧头 发送方地址 自己的地址 帧长 0x80 命令 低地址 高地址 读字节数 数据 校验和
(2字节)(1字节) (1字节) (1字节) (1字节) (1字节) (1字节)(1字节) (1字节) (2字节) (1字节)
需要将校验和前面的两字节数据提取出来, 校验后, 转成10进制的数, 赋值给变量dis_count 展开
1个回答
展开全部
使用这个函数:get_dis() 试试看。
1、在函数void setup() 前定义全局变量int dis_count;
2、调用get_dis()函数;
3、接收到数据、并且正确,返回return 1,同时给dis_count赋值;
4、没有接收到数据,或者接收数据不正确,返回return 0;
5、发送或者接收到的数据是十六进制数据;
函数运算十进制运算,dis_count是十进制。
6、应用
-----
int dis_count;
-----
void setup()
{
-----
}
void loop()
{
-------
if(get_dis())
{
-----
------;//接收到正确的数据
-----
}
-----
}
////////////////////////////////////
int get_dis()
{
if (Serial.available() > 0) //判断串口接收到数据否,无返回return 0;
{
int aaa[9] = {0}; //如果还需要前面的10个数据,把这一句放在void setup()前
byte a,b,c,d;
for(int i=0;i<10;i++) //把前面的十个数据去了
{
aaa[i] = Serial.read(); //前10个字节保留在数组aaa中
}
b=Serial.read(); //你要的数据字节1
c=Serial.read(); //你要的数据字节2
d=b+c; //校验和,不能省,结果是一个字节
if(d==Serial.read()) //校验和不正确,返回return 0
{
dis_count=b+c; //校验和正确,返回return 1,并赋值
return 1;
}
}
return 0;
}
1、在函数void setup() 前定义全局变量int dis_count;
2、调用get_dis()函数;
3、接收到数据、并且正确,返回return 1,同时给dis_count赋值;
4、没有接收到数据,或者接收数据不正确,返回return 0;
5、发送或者接收到的数据是十六进制数据;
函数运算十进制运算,dis_count是十进制。
6、应用
-----
int dis_count;
-----
void setup()
{
-----
}
void loop()
{
-------
if(get_dis())
{
-----
------;//接收到正确的数据
-----
}
-----
}
////////////////////////////////////
int get_dis()
{
if (Serial.available() > 0) //判断串口接收到数据否,无返回return 0;
{
int aaa[9] = {0}; //如果还需要前面的10个数据,把这一句放在void setup()前
byte a,b,c,d;
for(int i=0;i<10;i++) //把前面的十个数据去了
{
aaa[i] = Serial.read(); //前10个字节保留在数组aaa中
}
b=Serial.read(); //你要的数据字节1
c=Serial.read(); //你要的数据字节2
d=b+c; //校验和,不能省,结果是一个字节
if(d==Serial.read()) //校验和不正确,返回return 0
{
dis_count=b+c; //校验和正确,返回return 1,并赋值
return 1;
}
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询