STM32F105双路隔离型CAN总线转4G控制板 - 把CAN数据发送到自建MQTT服务器,实现通过MQTT透传通信

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/product/STM32F105_2CAN/index.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

 

说明

这节是把设备从CAN总线接收的数据发送到MQTT, 设备从MQTT接收的数据通过CAN总线输出

 

测试

1,打开工程

 

2,根据自己的设备设置CAN波特率

 

3,默认连接这边的服务器进行测试,用户也可修改为自己的服务器

设备订阅的主题为: user/000001

设备发布的主题为: device/000001

 

4,设备日志打印如下说明连接成功

 

5,打开MQTT调试助手

 

按照下面的步骤操作

 

 

6,接上CAN总线设备

 

7,如果设备接收到CAN数据,将会通过MQTT服务器发送到调试助手上

数据格式说明: 01   00 00 01 02   55 55 55 55 55 55 55 55

最前面一位是0x01; 最前面的0代表这个数据是数据帧,后面的1代表第一路CAN数据,;

中间  00 00 01 02 四位是帧 ID;  最后 55 55 55 55 55 55 55 55 8位是数据

 

数据格式说明: 11   00 00 01 02   00 00 00 00 00 00 00 00

最前面一位是0x11; 最前面的1代表这个数据是遥控帧,后面的1代表第一路CAN数据,;

中间  00 00 01 02 四位是帧 ID;  最后 00 00 00 00 00 00 00 00  8位是数据

 

如果是第二路:

 

 

7,通过MQTT调试助手发送数据给设备(数据格式和上面的一致)

测试1:

假设给第一路CAN发送一个数据帧, 然后ID是 0x1234  数据是 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07

 

这边用了CAN分析仪监测的设备数据

 

测试2:

假设给第一路CAN发送一个遥控帧, 然后ID是 0x1234

提示如果是遥控帧,就把第一个数据的高四位变为1

 

 

测试3:

假设给第二路CAN发送一个数据帧, 然后ID是 0x1234  数据是 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07

 

测试4:

假设给第二路CAN发送一个遥控帧, 然后ID是 0x1234 ,后面的数据随意

提示如果是遥控帧,就把第一个数据的高四位变为1

 

 

程序说明

1,串口2接收模组数据的时候,单独使用一个缓存,缓存了TCP/IP接收的数据

 

2,初始化MQTT变量,注册相应的回调函数

 

 

 

3,连接MQTT服务器

 

4,发送MQTT连接协议

 

 

4.把服务器返回的数据交给mqtt_function_connect_ack 函数处理

如果返回的数据是连接成功,此函数便会调用上面注册的连接成功回调函数

 

 

 

5.在连接成功回调函数中订阅主题

 

5.连接成功MQTT服务器以后解析服务器下发的MQTT数据是下面的函数

把接收的mqtt数据交给这个函数,函数内部解析之后会调用相应的回调函数

 

6.接收处理MQTT消息

 

7.发送CAN数据

 

10.提示

只要是连接上MQTT了,用户只需要在任意地方调用订阅主题和发布消息就可以.

用户调用其api函数所打包的数据会存储在mqtt内部缓存管理里面,然后内部自动把数据通过tcp发送出去.

把打包好的MQTT协议数据提取出来并发送给服务器的地方是这里

 

 

其它细节

1,CAN接收的数据是存储到了环形队列

 

2,由于使用AT命令发送数据约有10ms左右的延迟, 如果CAN数据接收很快推荐组包发送

 

2,程序里面默认还获取了 IMEI,ICCID,CSQ,时间等,都解析好了,用户可以直接选择对应的变量使用

 

 用户可以在这里更改定时获取时间参数

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

posted on 2024-03-14 03:35  广源时代  阅读(92)  评论(0编辑  收藏  举报

导航

支付宝 QQ群