首页 > 解决方案 > 通过 MQTT 发送字节数组 - JavaScript Paho Eclipse

问题描述

我已经通过 Eclipse Paho JavaScript Client 连接了 MQTT 代理,并且从一个 arduino 我收到了类似这样的消息:3 1 0 255,其中每个字节都是一些东西(温度、压力等),这很好,但现在我想发送像32 0 1 2 3 4 10 1 20这样的消息,其中每个字节也是一些东西,但是当我尝试发送此消息时 - 我以 ASCII 而不是小数形式获取它。我的意思是,我得到一个 3 的十六进制,另一个 2 的十六进制,另一个空格等等。

$('#clicktest').click(function() {
var ms = "32,0,1,2,3,4,10,1,20";
sendMes(ms);
});

function sendMes(mes) {
message = new Paho.MQTT.Message(mes);
message.destinationName = "test/g";
client.send(message);
}

我先用谷歌搜索,据我所知,我应该将整数作为字节数组发送,但我没有放弃理解如何将这些数字包装为字节数组并将它们发送给代理,因此它不会被转换为 ASCII。

我是这个 mqtt 东西的新手,所以请你给我一个方向吗?

标签: javascriptarraysmqttpaho

解决方案


如果您的发件人在 Arduino 上,为什么不显示实际的发送代码或数据在 js 端接收时的实际样子?您共享的 js 代码的行为可能与您的 Arduino 代码相同,也可能不同。

暂时忽略这一点:您可以将数据作为 JSON 发送

$('#clicktest').click(function() {
var ms = [32,0,1,2,3,4,10,1,20];
sendMes(JSON.stringify(ms));
});

并在接收端轻松解析 JSON。

JSON 编码会产生一点点开销,但会使有效负载易于阅读并且是健壮的:例如,如果您需要开始发送浮点数,JSON 会很好地处理它。


推荐阅读