找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4106|回复: 8
收起左侧

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

[复制链接]
ID:747276 发表于 2020-5-10 18:56 | 显示全部楼层 |阅读模式
20黑币
找了很多都用不了,郁闷的很大佬们可能都知道,手机发个数字‘1’给8226
然后8226发给单片机就不是‘1’这么简单的一个字符
而是一串,+PID:1,02,1.........(大概是这个意思记不大清了应该是十位)
反正就是最后一位才是发的实际数字

问题是单片机如何能接收得到这串字符?接到后 我想应该是把这串字符存在一个数组变量里

存好后判断这个  数组变量[9] 是1还是2还是3......

然后执行相应的功能

最后重置这个变量数组   准备接收新的

逻辑应该是这样,但是俺不会,大佬们帮帮忙吧

回复

使用道具 举报

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

评分

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

查看全部评分

回复

使用道具 举报

ID:577696 发表于 2020-5-10 20:47 | 显示全部楼层
接受到的应该是类似 +IPD,0,1:1 这样的一串字符,冒号后面的才是你发送出去并且被它接收到的信息,所以让单片机从冒号后面开始保存数据就可以了
回复

使用道具 举报

ID:747276 发表于 2020-5-11 00:34 来自手机 | 显示全部楼层
carpcarey 发表于 2020-5-10 19:22
把接收到的数据放到一个数组里,比如ReceiveBuffer[256].
当判断收到上一个字节500ms后没有新的数据来,我 ...

您好,长度是固定的有10个字节,最后一位
  变量【9】就是实际发送的数字,我要怎么把字符串保存到一个数组里然后判断最后一位是什么?


if(变量【9】==’1’)

       P1=~P1;
  }




希望能给出完整程序

就是接收了后,判断其中一位到底是不是我设定好的,实际应用是判断最后一位,也可以是任何一位



if(变量【x】==’自定义的数字’)

     某个管脚输出低电平
  }
回复

使用道具 举报

ID:686782 发表于 2020-5-11 00:51 | 显示全部楼层
善用串口通讯软件,例如sscom,netassist等。可以实时检查发送接收的数据,对你理解这个过程很有帮助。
思路就是根据你esp8266返回的有效信息在哪一部分然后决定如何去处理这些数据。
esp8266在收到数据并转发给单片机时的数据格式:+IPD,<client号>,<收到的字符长度>:收到的字符,比如+IPD,0,5:hello,其中+PID是固定的。你就可以根据这一点取到冒号后的数据存下来,前面那些无效字符就直接丢弃。
网上的很多我也试过,是不一定能用的。建议先使用串口助手等模拟发送,然后检查AT指令发送是否成功,以及8266返回的信息是什么。

评分

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

查看全部评分

回复

使用道具 举报

ID:420836 发表于 2020-5-11 07:16 | 显示全部楼层
这里的人解释得很清楚。 非常感谢!
回复

使用道具 举报

ID:739441 发表于 2020-5-11 09:10 | 显示全部楼层
用串口调试工具把数据接收回来,然后分析一下接收的数据,你就会发现规律了,然后再通过程序处理。
回复

使用道具 举报

ID:367369 发表于 2020-5-13 23:13 | 显示全部楼层
你可以将他们换过来发送数据,
服务器发送:
AT+CIPSEND=0,5\r\n      //0指连接的客户端的编号,5指数据长度
接着再发hello
然后你的客户端就会收到hello
这个是没有数据头的

回复

使用道具 举报

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 单片机教程网

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