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
展开
 我来答
慢生活ican
2014-05-21 · TA获得超过131个赞
知道小有建树答主
回答量:64
采纳率:0%
帮助的人:84.9万
展开全部
使用这个函数: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条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式