【干货】超详细!TPC7062封装MQTT协议教程 一.功能简介通过将报文分解为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驱动和字符转换教程 心跳报文: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; 第六步:将之前的缓存的字符串传入长度计算算出字符总长; 第七步:封装报文头及可变长度; 第八步:等待服务器响应; 若订阅请求报文发送错误(非服务器许可主题和服务等级)服务器会断开连接,因此超时后发送心跳更新在线状态; 三.实例演示查看技术文章和免费咨询技术问题可以访问我司官网及各官方平台: 微信号:cdebyte 今日头条:亿佰特 新浪微博:成都亿佰特 亿佰特人每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多产品更多资料,感兴趣的小伙伴可以登录我们的官网http://www.ebyte.com/行了解,还有客服小姐姐在线答疑哦!成都亿佰特--物联网应用专家,随时在身边,时刻准备为您服务!
|