微信小程序调用MQTT发布16进制HEX,发送buff和Uint8Array断开

补充:2023.5.28

哥们反馈了问题,可能是mqtt.min.js文件问题,现在已经重新上传最新的哈,是保证这边百分百能用啦~~~~

还有16进制字符串转16进制的程序段,希望能帮到你们

  //字符串转ArrayBuffer已经是十六进制,直接转buffer
  function string2buffer(str) {
    // 将16进制转化为ArrayBuffer
    return new Uint8Array(str.match(/[\da-f]{2}/gi).map(function (h) {
      return parseInt(h, 16)
    })).buffer
  }

=====我是分割线======

补充:2023.5.27

鉴于有兄弟说没效果,以及自我怀疑精神,我又重新把之前程序拿出来看并跑一遍还是可以哈…

奉上最新效果:

下边是调试工具接收的数据,收到4个字节的HEX,上边是小程序发送的HEX数据,右边是小程序接收的字符串形式数据,一般会乱码哈。使用的mqtt是上传的那个文件,所以在我这台还边还是能正常使用!

=====================分割线=======================

这个问题查找了好久,困扰了好几天!

最近在做通讯项目,根据网上收罗的字符串str转hex的Uint8Array方法,能正常转换,一旦要publish发布就导致mqtt断线重连,一直以为是转换发送问题,查了好久都没头绪,因为VUE正常发送HEX的16进制数据,所以一直都没怀疑常用 mqtt.min.js文件!

最后不得已才把矛头指向 mqtt.min.js 文件,通过一步步走下来才发现在发送 payload 数据时,直接以字符串方式发送,修改成 buff 方式就行!因此在 mqtt.min.js 的publish加了一个判断来判别数据类型!

不想自己更改的可以使用我上传的js文件替换试试看:mqtt.min.js文件

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值