找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3032|回复: 8
打印 上一主题 下一主题
收起左侧

esp8226wifi模块+单片机实现开关灯程序问题

[复制链接]
楼主
ID:267719 发表于 2020-5-10 19:22 | 显示全部楼层
把接收到的数据放到一个数组里,比如ReceiveBuffer[256].
当判断收到上一个字节500ms后没有新的数据来,我们认为收到了一帧数据,当前数据包结束。收到数据包后,用strstr函数去判断是不是存在“+PID”,如果存在“+PID”表示是通讯来的数据,不是命令或状态数据。strstr会返回“+PID”位置的指针。如果指针为NULL,表示不存在“+PID”。
然后同样用strstr函数找到“:”,strstr函数会返回冒号位置的指针。冒号往后的数据就是你收到的数据(可根据串口接收到的长度和冒号位置计算得到实际通讯信息长度)。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

沙发
ID:267719 发表于 2020-5-17 12:07 | 显示全部楼层
小白拜拜 发表于 2020-5-11 00:34
您好,长度是固定的有10个字节,最后一位
  变量【9】就是实际发送的数字,我要怎么把字符串保存到一个 ...

思路有了,代码就是实现思路的过程。思路有了,代码就不用写了吧。。。
如果接收到的帧并不是+IPD,0,1:1,而是模组返回状态,或其他内容,那我这种思路完全能避免出现获取到错误的数据。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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