通过 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东西的新手,所以你能给我一个方向吗?

这并不是特定于 MQTT 的,但您需要使用 uint8array 之类的东西来保存数据。

例如

$('#clicktest').click(function() {
var ms = new Uint8Array([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);
}

如果你的发送者在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 将很好地处理它。

最新更新