递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 10634|回复: 27
打印 上一主题 下一主题

[视窗] 【MQTT3.1.1客户端】协议封装,无三方模块 - MQTT Client For Voldev

[复制链接]

39

主题

194

帖子

1838

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1838
跳转到指定楼层
楼主
发表于 2023-2-24 01:07:57 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 leing 于 2024-2-24 12:05 编辑

请转移最终版




基于【HPSocket网络通讯支持】模块
直接开源,方便大家了解MQTT协议,我也打包模块了直接引用就能用
例子呢也没有什么好写的就那几个函数简单易懂。
测试用的MQTT公共服务器
免费的公共 MQTT 服务器 | EMQ (emqx.com)

MQTT网页版在线测试工具
MQTT X Web: 在线的 MQTT Websocket 客户端工具

没有其他模块,用到的自己写的函数也写进去了
注:不足之处还请各位大佬指点一二

【修改23-2-24 14:06】
发送消息新增Qos 1 与 Qos 2 方式
连接服务器异常状态断开服务器(按照标准协议来处理)
MQTT.zip (171.93 KB, 下载次数: 64)



回复

使用道具 举报

39

主题

194

帖子

1838

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1838
来自 28#
 楼主| 发表于 2024-1-20 14:46:32 | 只看该作者
本帖最后由 leing 于 2024-1-20 15:04 编辑
zgj9911 发表于 2023-9-9 12:52
数据包大于1400字节时会收到多个包,好像得组包,可惜我不会,希望楼主能更新一下 ...

已修复数据量大于127则数据卡住。
关于Qos为1或2卡住也是因为数据量超出了127,导致无法发送
现已修复数据量达到最大值(268435455)

感谢@hq881128 提出解决方案
MQTT.v (149.65 KB, 下载次数: 10)

MQTT Client For Voldev: MQTT Client For Voldev (gitee.com)
回复

使用道具 举报

5

主题

108

帖子

1194

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1194
27#
发表于 2023-10-30 19:04:28 | 只看该作者
谢谢楼主:噜阿噜
回复

使用道具 举报

3

主题

55

帖子

1041

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1041
26#
发表于 2023-10-30 13:58:11 | 只看该作者
本帖最后由 hq881128 于 2023-10-30 14:05 编辑
zgj9911 发表于 2023-9-9 12:52
数据包大于1400字节时会收到多个包,好像得组包,可惜我不会,希望楼主能更新一下 ...







在他其基础增加了两个方法,解码和编码,之前接收超过长度就会卡死。


现在最多能处理16383个字节的数据了,需要更多的对着协议可自己改。
另外这东西还是有很多问题不能在项目上用,测试用应该没问题,我用来做了小工具能用。



MQTT.v

142.44 KB, 下载次数: 16

回复

使用道具 举报

5

主题

108

帖子

1194

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1194
25#
发表于 2023-9-9 12:52:02 | 只看该作者
数据包大于1400字节时会收到多个包,好像得组包,可惜我不会,希望楼主能更新一下
回复

使用道具 举报

3

主题

55

帖子

1041

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1041
24#
发表于 2023-8-1 14:52:56 | 只看该作者
这个是我发送的文本  :
{
  "ModbusID": "6c000000f0de",
  "Type": "Temp",
  "data": [
    {
      "Way": [
        0
      ],
      "Status": [
        1
      ],
      "Mode": [
        1
      ],
      "Fan": [
        3
      ],
      "SetTem": [
        24
      ],
      "CurTem": [
        25
      ]
    }
  ]
}

2023-08-01 14:01:21:940

Topic: client:report/1QoS: 0

{
  "ModbusID": "6c000000f0de",
  "Type": "Temp",
  "data": [
    {
      "Way": [
        0
      ],
      "Status": [
        1
      ],
      "Mode": [
        1
      ],
      "Fan": [
        3
      ],
      "SetTem": [
        24
      ]
      "CurTem" :[
        25
      ]
    }
  ]



回复

使用道具 举报

3

主题

55

帖子

1041

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1041
23#
发表于 2023-8-1 14:51:16 | 只看该作者
  1. <火山程序 类型 = "通常" 版本 = 1 />
  2. 调试输出 (2222)
  3. 如果 (取字节集长度 (已接收数据) - 2 == 十六进制文本到整数 (取文本中间 (接收数据, 2, 2)))   //数据太长到这里会不真,没处理了
  4. {
  5.     收到消息 (UTF8到文本 (取字节集中间 (已接收数据, 4, 十六进制文本到整数 (字节集到十六进制文本 (取字节集中间 (已接收数据, 2, 2))))), UTF8到文本 (取字节集右边 (已接收数据, 取字节集长度 (已接收数据) - 4 - 十六进制文本到整数 (字节集到十六进制文本 (取字节集中间 (已接收数据, 2, 2))))))
  6. }
复制代码

回复

使用道具 举报

180

主题

607

帖子

2396

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2396
QQ
22#
发表于 2023-6-22 19:17:11 | 只看该作者
十六进制文本到整数(),这个方法在哪里的,没找到
回复

使用道具 举报

5

主题

108

帖子

1194

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1194
21#
发表于 2023-5-11 20:12:28 | 只看该作者
Qos为2的时候发送数据会卡住
回复

使用道具 举报

5

主题

108

帖子

1194

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1194
20#
发表于 2023-5-11 20:08:27 | 只看该作者
楼主,我的怎么无法收到订阅的数据,而且第二次发送消息就卡住发不出去了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-15 17:13 , Processed in 0.113990 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表