一.功能简介
通过将报文分解为16进制格式的字符串(比如:101C00044D51545404C2),再通过TPC-7062进行组包,利用串口服务器的TCP/IP协议栈连接服务器,实现TCP客户端透明传输连接MQTT服务器。
实现MQTT协议直连的前提是设备本身具有或者是外接串口联网设备实现,比如笔者所使用的TPC7062是不具备TCP/IP协议栈的纯串口控制屏,可通过连接亿佰特公司所生产的串口服务器(NB114)实现TCP客户端连接服务器。
NB114串口服务器本身就具对MQTT协议进行封装,可直接实现串口设备连接MQTT服务器,本文为了分析MQTT报文将不使用MQTT模式连接服务器,仅使用TCP客户端模式连接MQTT服务器通过MCGS脚本对数据进行组包发送。
二.报文详解
TPC驱动使用和字符转换:
TPC7062使用官方提供的扫码枪设备驱动,实现该功能不可使用Modbus等具有协议的驱动需,要使用支持串口数据透明传输的设备驱动。由于设备多处会使用到字符转换,因此独立配置三个“用户策略”用于字符转换:MQTT协议报文中TPC驱动和字符转换教程
MQTT字符长度计算:PC7062封装MQTT协议字符长度计算教程
连接报文:PC7062封装MQTT协议链接报文步骤教程
心跳报文:
PINGREQ:C0 00
服务器返回:D0 00
心跳报文基于MCGS的循环策略周期发送,
订阅报文
SUBSCRIBE:82 +字符总长度(遵循剩余字符算法)+00 00+订阅地址长度(2字节)+订阅地址+服务等级(00、01、02).....+订阅地址+服务等级(00、01、02)(可同时订阅多个主题)。
服务器响应:9003000000(最大Qos0),9003000001(最大QoS1)。
MCGS脚本配置如下:
第一步:初始化发送缓存变量;
第二步:为发送缓存变量写入报文标识符(0000);
第三步:传入SUB-TOPIC字符到计算缓存变量,用于计算和字符转换(调用前文提到的长度计算脚本和ASCII转HEX脚本);
第四步:保存计算结果;
第五步:封装服务等级仅支持0、1;
第六步:将之前的缓存的字符串传入长度计算算出字符总长;
第七步:封装报文头及可变长度;
第八步:等待服务器响应;
若订阅请求报文发送错误(非服务器许可主题和服务等级)服务器会断开连接,因此超时后发送心跳更新在线状态;
发布报文:PC7062封装MQTT协议发布报文教程
三.实例演示
通过连接阿里云MQTT服务器,并使用阿里云NTP服务获取当前时间,请求格式参考阿里云用户手册NTP服务。
审核编辑黄昊宇
-
封装
+关注
关注
127文章
8033浏览量
143535 -
MQTT
+关注
关注
5文章
655浏览量
22751
发布评论请先 登录
相关推荐
调试触摸屏时触摸屏一直发01 03 FF FF FF FF 00 01 73 38硬件环境是:触摸屏---MODBUS协议的单片机开发板,触摸屏做主机
物联网硬件接入之通信协议(MQTT,CoAP,LwM2M协议)的详细资料概述
![物联网硬件接入之通信<b class='flag-5'>协议</b>(<b class='flag-5'>MQTT</b>,CoAP,LwM2M<b class='flag-5'>协议</b>)的<b class='flag-5'>详细</b>资料概述](https://file.elecfans.com/web1/M00/63/74/o4YBAFuXhymAU4qSAAKUXNa7wjQ206.png)
物联网硬件接入之通信协议(MQTT,CoAP,LwM2M协议)的详细资料概述
![物联网硬件接入之通信<b class='flag-5'>协议</b>(<b class='flag-5'>MQTT</b>,CoAP,LwM2M<b class='flag-5'>协议</b>)的<b class='flag-5'>详细</b>资料概述](https://file.elecfans.com/web1/M00/63/74/o4YBAFuXhymAU4qSAAKUXNa7wjQ206.png)
TPC TP协议族简单解读及网络数据格式及封装和解包的资料概述
![<b class='flag-5'>TPC</b> TP<b class='flag-5'>协议</b>族简单解读及网络数据格式及<b class='flag-5'>封装</b>和解包的资料概述](https://file.elecfans.com/web1/M00/8F/B8/pIYBAFy_-LuAfLG9AAEkQEX4VKU624.png)
干货:MQTT协议开发入门
MQTT协议简介及协议原理
![<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>简介及<b class='flag-5'>协议</b>原理](https://file1.elecfans.com/web2/M00/81/B7/wKgZomP9uCqAHudnAACeViQgAqo519.jpg)
虹科干货 | MQTT 5协议中的基础更改(二)
![虹科<b class='flag-5'>干货</b> | <b class='flag-5'>MQTT</b> 5<b class='flag-5'>协议</b>中的基础更改(二)](https://file.elecfans.com/web2/M00/3F/D7/poYBAGJqPMKAEXjWAAAOpepuZJ8475.jpg)
评论