解决方案:
①将esp8266的波特率改为14400或19200
AT+UART_DEF=14400,8,1,0,0
②服务端发布消息时,尽量发布多次,直到收到arduino的回复,下面是我的GO代码(理解思路就好)
for i := 0;
i < 10000;
i++ {
text := fmt.Sprintf("msg #%d!", i)
token := c.Publish("index", 0, false, text)
token.Wait()
fmt.Println("publish", text)
if s == "1" { // arduino回复的值已经储存在s中
time.Sleep(2000*time.Millisecond)
s = ""
}
time.Sleep(200*time.Millisecond)
}
③arduino的callback函数加上一个回复(发布指令)
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i=0;
i
实验现象: 【笔记|解决方案 arduino PubSubClient 库 MQTT 订阅主题没反应 回调函数没效果】串口打印如下:
文章图片
效果还行,但还有一个bug就是wifi或MQTT服务器容易断开,欢迎有相同问题的同学留言讨论。
推荐阅读
- stm32|基于STM32和freeRTOS智能门锁设计方案
- 笔记|如何在Windows11安装安卓子系统()
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- 2021年下半年《信息系统项目管理师》真题
- 日常分享|共享充电宝方案原理,具体部件组成以及主控MUC参数
- 个人理解|【C语言基础之类型转换】
- 学习分享|【C语言函数基础】
- 个人理解|【C语言实现井字棋及电脑落子优化】