javascript - 通过 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 东西的新手,所以请你给我一个方向吗?
解决方案
如果您的发件人在 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 会很好地处理它。
推荐阅读
- python - Pip 安装错误:pip 尝试为包构建轮子(已安装)
- c++ - 如何使用或实现 Win32 的 shobjidl_core.h 中的接口?
- javascript - 变量的同行引用是否有助于其跨度?
- javascript - 合并具有特定条件的数组
- pine-script - ATR % Weekly Close 计算器 25%、50% 等
- python - 如何使用 PIL 增加图像的宽度?
- php - php多维数组键
- python - Python无缘无故添加char“\”
- javascript - 使用异步功能从 Auth0 加载 user.mail
- javascript - React + EmailJS 在 onClick 方法中向我发送大量电子邮件