几个注意点:

初始化的时候发送 "AT+NSOCR=STREAM,6,56000,1\r\n","OK" 经常会失败,原因是:下图,第一次成功了但是没检测到,以后就可能一直返回+CME ERROR: 4

目前碰到待解决的问题:

1、  给onenet发数据,平台可以收到,但是收onenet的时候总是总是"IPD" not found,打印bc28接收时发现,明明一整帧是

+NSONMI:1,47(收到消息+NSONMI:<socket>,<length>)

1,183.230.40.39,6002,4,20020000,47  (读取消息AT+NSORF=<socket>,<req_length>   :返回<socket>,<ip_addr>,<port>,<length>,<data>,<remaining_length>)

OK

却总是收到类似下面的不完整帧,但是感觉就算收到上面那样一帧也不太对,后面没有onenet下发的topic和消息体

+NSONMI:1,47
9,6002,4,20020000,0

OK

解决思路:直接监听bc28的发送引脚,不用mcu打印,先定位是mcu串口收不全还是在bc28和onenet上出的问题?从下图入手

从上图入手后,再用抓包工具看是mcu串口读取慢了,还是onenet发的快了?

全局搜 NSORF ,发现任何情况都收100个了,应该够啊

下面这个接收函数有问题,联系上下文,BC35_cnt刚被清零,BC35_WaitRecive怎么出现REV_OK情况?

函数具体内容是:

_Bool BC35_WaitRecive(void)
{if(BC35_cnt == 0){                           //如果接收计数为0 则说明没有处于接收数据中,所以直接跳出,结束函数
//      UsartPrintf(USART_DEBUG,"%s%d\r\n",__FILE__,__LINE__);  return REV_WAIT;}if(BC35_cnt == BC35_cntPre)                                             //如果上一次的值和这次相同,则说明接收完毕{BC35_cnt = 0;                           //清0接收计数return REV_OK;                          //返回接收完成标志}BC35_cntPre = BC35_cnt;                                                 //置为相同return REV_WAIT;                          //返回接收未完成标志}

或者把bc35恢复出厂设置试试?

2 、发现就算下发不完整帧,mcu也不是一直能接收到,多测几次后,发现只有上传一次onenet数据,才能下发一次

解决思路:看onenet平台提供的资料和mqtt协议,是不是协议就是这么规定?或者是因为下图,下发的那帧没有读取完全,导致收不到URC

onenet提供手册  新版

3、JLINK仿真程序的时候,总是有的断点进不去,程序显示还在运行,其实已经死了

解决思路:不用例程,把例程移植到自己常用的环境下,比如cube+keil5+stlink试一下? 例程在这里,仅供参考(mcu是rbt6,+bc35-g,+移动物联网通信,+onenet,+mqtt)

其它资料:bc35中文手册

相关参考:mqtt系列博客,感觉详细   另一系列  移远官网  BC28接入onenet  bc28指令发送流程 虚拟软件模拟MQTT和onenet收发

4、参考上面的链接直接用at串口发数据到onenet,接收没问题,就是一发送就返回+QMTSTAT: 0,1,连接断开了,数据也没上去,看别人说好像是要发完立刻再发连接  也好像是个bug

断开原因找到了,是因为格式不对,发送AT+QMTPUB=0,0,0,0,"$dp"之后不能直接就发json格式串,而是应该在格式串前加一些东西,比如固定和可变帧头(如果平台数据流 接收必须要符合给定的格式,给的那个软件可以都显示)

大概发送流程:

ATI
Quectel
BC28
Revision:BC28JAR01A10OK
AT+QMTCFG="version",0,4
OK
AT+QMTOPEN=0,"183.230.40.39",6002
OK+QMTOPEN: 0,0
AT+QMTCONN=0,"693738909","409001","k6TYrSqT9T4r1f2Cz0aafZUw=fk="
OK+QMTCONN: 0,0,0
AT+QMTPUB=0,0,0,0,"$dp"
>:{"datastreams":[{"id":"LED","datapoints":[{"value":11}]}]}
OK+QMTPUB: 0,0,0

5、发现不同模块和不太固件对同一指令反应不同,遇到了用BC26配置MQTT可以,用BC35G配置不可以

上图BC35-G出现的错误码50是指参数不正确

通过在技术交流群翻阅,发现BC35GJCR01A01.fwpkg这个固件支持mqtt配置,如下图,而我现在用的是BC35GJBR01A01.fwpkg,固件或者工具找不到可以私信我

担心BC35GJC的固件不能在硬件BC35GJB上运行,又找了一个

所以要升级一下,升级参考

大概流程先看一下设备型号和版本(以BC28做升级举例)

再看一下硬件接口  BC28是升级和通信都用主串口 BC35-G也是一样

升级出现了问题

换了个工具还是不行

上面原因是升级的软件放到中文路径下了

.NET Framework 下载地址 https://dotnet.microsoft.com/download/dotnet-framework/net472

有时候 出粗Sorry - something went wrong - No reponse from UE after sending SendData
还有一些奇怪问题,解决方法参考  其实是因为主程序是自己写的,升级的时候里面串口还在同时发,对升级产生干扰

MQTT simulate-device使用过程:

下载链接 https://open.iot.10086.cn/doc/art194.html#43

填入信息:第三行是  rR5dycBmq10RJ9YGORz=vtcM3Tc=

输入:{"datastreams":[{"id":"SMOKE","datapoints":[{"value":12}]}]} 是一个参数

{"datastreams":[
{"id":"SMOKE","datapoints":[{"value":14}]},
{"id":"FIRE","datapoints":[{"value":0}]},
{"id":"TEMP","datapoints":[{"value":25.5}]},
{"id":"CO","datapoints":[{"value":37}]}]}  是多参数

STM32通过BC28用mqtt协议连接onenet及simulate-device的使用相关推荐

  1. CC3200使用MQTT协议连接Onenet平台实践

    代码仓库地址:https://github.com/idrey/CC3200_Onenet 0x01 介绍 CC3200是TI公司推出的一款WIFI MCU,支持多种网络协议.信息物理系统课程中使用的 ...

  2. BC26通过MQTT协议连接ONENET,AT流程

    onenet平台操作 首先登录平台,并进入控制台 选择多协议接入 点击添加产品,新建一个产品 名称.类别根据需要填写,接入协议选择MQTT 新建产品成功: 点击产品名字,进入产品设置页面,为产品添加设 ...

  3. 单片机通过MQTT协议连接OneNet实现发布/订阅理论篇

    材料: 51单片机 ESP8266-01S ESP LINK烧写器(USB-TTL也可以) 杜邦线若干 MQTT简述: MQTT是基于发布/订阅范式的消息协议.你发布了一个Topic,只要别人订阅了这 ...

  4. Android小Demo——通过MQTT协议连接OneNet平台(旧版)

    先看效果图: onenet OneNet: 第一步:创建产品 1.多协议接入 2.添加产品 3.填写产品信息 4.我已经创建过了,就不重新创了,我的相关填写如下图 5.创建成功界面 第二步:创建设备 ...

  5. Android小Demo——通过MQTT协议连接OneNet平台(新版)

    详细的过程可参考:https://blog.csdn.net/weixin_51080921/article/details/124150694?spm=1001.2014.3001.5501 这里只 ...

  6. STM32+ESP8266+MQTT协议连接腾讯物联网开发平台

    一.环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可.比如:GSM模块.有线网卡等. 开发软件:keil5 物联网平台: ...

  7. STM32+ESP8266+MQTT协议连接阿里云物联网平台

    一.环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可.比如:GSM模块.有线网卡等. 开发软件:keil5 硬件连接功能: ...

  8. STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(三)STM32部分

    STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(三)STM32部分 关于单片机部分主要使用ESP8266 WIFI模块进行联网,单片机采用STM32ZET6 ESP8266部分 ...

  9. STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(二)MQTT协议常用报文详解

    STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(二)MQTT协议常用报文详解 上一次我们讲了OneNet平台的注册,这次我们来讲一下MQTT的常用报文用法 上一篇地址https ...

  10. 怎么传mysql数据到onenet_STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(一)...

    STM32 ESP8266 MQTT协议 连接中国移动OneNet服务器 上传接收数据(一) 之前写过一篇通过自己的服务器来搭建MQTT的服务器的博客,但是我相信不是所有人都有自己的服务器,毕竟服务器 ...

最新文章

  1. 联想电脑 Realtek RTL8821CE 无线网卡 驱动安装 16.04/18.04
  2. LruCache缓存bitmap(一)
  3. 什么是计算机网络中的主机?
  4. linux nginx 安装
  5. 连接远程Windows主机中的虚拟机
  6. python批量修改文件名_python实现批量改文件名称的方法
  7. mysql 多个命令行,5.8.2.1在Windows命令行中启动多个MySQL实例
  8. unity 中文 离线文档下载安装
  9. 在教育孩子上少一点功利心,就会快乐?
  10. 小写数字转换成大写数字
  11. Manjaro安装及配置
  12. 安装包制作工具NSIS (NullSoft Scriptable Install System)
  13. Go语言小程序开发快速入门——一、用Gin框架实现简单的信息获取
  14. 计算机组成原理实验logisim(三)之偶校验编码与检错
  15. matlab取矩阵满足条件,[MATLAB]矩阵中寻找满足条件的元素
  16. 从一个url地址到最终页面渲染完成,发生了什么?
  17. 如何在网格上绘画【UE4】
  18. 海外数据中心IP是什么,有什么优点?
  19. 怪物猎人服务器维护时间,怪物猎人OL
  20. 所爱隔山海,山海不可平,海有舟可渡,山有路可行,此爱翻山海,山海皆可平。

热门文章

  1. bp神经网络预测模型python,bp神经网络预测模型
  2. 适合android平板的浏览器,推荐5款安卓平板Pad版应用浏览器
  3. latex生成的pdf论文在打印时页码混乱的解决方法
  4. JAVA程序设计(学堂在线-清华大学) 课后练习题 已更新完毕
  5. Oracle下载12c安装包
  6. chartControl控件常用属性总结
  7. 100UF50V 10*8.4贴片电解电容封装尺寸
  8. 华为笔试题2019年3月
  9. Node——request使用代理
  10. xscan 扫不了外网的解决方法