Node-Red 发送二进制文件
Node-Red Send Binary
在询问有关 IoT
设置的一些建议后,我才被介绍给 Node-Red
。我有一段 javascript 代码正在将数据发送到网络套接字。它发送的代码采用 HEX
格式并发送到网络套接字。
我正在尝试使用 node-red
复制它,但我在确定使用哪个节点发送数据时遇到了一些问题。
原版 Javascript:
function connectToSocket() {
// Try to connect to the socket
try {
// Create our socket connection
connection = new WebSocket('ws://' + gatewayIP + ':8000');
connection.binaryType = "arraybuffer";
// Failed to create the socket connection
} catch (e) {
// Log error message
logMessage('Failed to connect to socket');
return;
}
}
connection.send('\x02\x00\x01\x04\x26\x2D');
我尝试将其作为字符串发送,json 对象作为 msg.payload
发送,但它没有像我期望的那样触发设备,例如当我 运行 普通 JS 时在浏览器中运行。
发送此十六进制字符串的合适格式是什么?
您要发送的是缓冲区,此时注入节点无法生成缓冲区。最简单的方法是在注入和 WebSocket Out 节点之间插入一个函数节点。
函数节点应该包含如下内容:
msg.payload = Buffer.from("\x02\x00\x01\x04\x26\x2D");
return msg;
这会将负载交换为具有正确值的缓冲区。
编辑:
对于 NodeJS 0.10.x 你应该使用像 Buffer.from() 这样的东西在 NodeJS 4.x:
中被引入
msg.payload = new Buffer("\x02\x00\x01\x04\x26\x2D");
return msg;
在询问有关 IoT
设置的一些建议后,我才被介绍给 Node-Red
。我有一段 javascript 代码正在将数据发送到网络套接字。它发送的代码采用 HEX
格式并发送到网络套接字。
我正在尝试使用 node-red
复制它,但我在确定使用哪个节点发送数据时遇到了一些问题。
原版 Javascript:
function connectToSocket() {
// Try to connect to the socket
try {
// Create our socket connection
connection = new WebSocket('ws://' + gatewayIP + ':8000');
connection.binaryType = "arraybuffer";
// Failed to create the socket connection
} catch (e) {
// Log error message
logMessage('Failed to connect to socket');
return;
}
}
connection.send('\x02\x00\x01\x04\x26\x2D');
我尝试将其作为字符串发送,json 对象作为 msg.payload
发送,但它没有像我期望的那样触发设备,例如当我 运行 普通 JS 时在浏览器中运行。
发送此十六进制字符串的合适格式是什么?
您要发送的是缓冲区,此时注入节点无法生成缓冲区。最简单的方法是在注入和 WebSocket Out 节点之间插入一个函数节点。
函数节点应该包含如下内容:
msg.payload = Buffer.from("\x02\x00\x01\x04\x26\x2D");
return msg;
这会将负载交换为具有正确值的缓冲区。
编辑: 对于 NodeJS 0.10.x 你应该使用像 Buffer.from() 这样的东西在 NodeJS 4.x:
中被引入msg.payload = new Buffer("\x02\x00\x01\x04\x26\x2D");
return msg;