zgj9911 发表于 2023-5-11 20:12:28

Qos为2的时候发送数据会卡住

唐兀 发表于 2023-6-22 19:17:11

十六进制文本到整数(),这个方法在哪里的,没找到

hq881128 发表于 2023-8-1 14:51:16

<火山程序 类型 = "通常" 版本 = 1 />
调试输出 (2222)
如果 (取字节集长度 (已接收数据) - 2 == 十六进制文本到整数 (取文本中间 (接收数据, 2, 2)))   //数据太长到这里会不真,没处理了
{
    收到消息 (UTF8到文本 (取字节集中间 (已接收数据, 4, 十六进制文本到整数 (字节集到十六进制文本 (取字节集中间 (已接收数据, 2, 2))))), UTF8到文本 (取字节集右边 (已接收数据, 取字节集长度 (已接收数据) - 4 - 十六进制文本到整数 (字节集到十六进制文本 (取字节集中间 (已接收数据, 2, 2))))))
}

hq881128 发表于 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
      ]
    }
]



zgj9911 发表于 2023-9-9 12:52:02

数据包大于1400字节时会收到多个包,好像得组包,可惜我不会,希望楼主能更新一下

hq881128 发表于 2023-10-30 13:58:11

本帖最后由 hq881128 于 2023-10-30 14:05 编辑

zgj9911 发表于 2023-9-9 12:52
数据包大于1400字节时会收到多个包,好像得组包,可惜我不会,希望楼主能更新一下 ...






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


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



zgj9911 发表于 2023-10-30 19:04:28

谢谢楼主:噜阿噜

leing 发表于 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)
https://bbs.voldp.com/data/attachment/forum/202310/30/653f44fc20b70.png
感谢@hq881128 提出解决方案


MQTT Client For Voldev: MQTT Client For Voldev (gitee.com)
页: 1 2 [3]
查看完整版本: 【MQTT3.1.1客户端】协议封装,无三方模块 - MQTT Client For Voldev