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;