Javascript 节点红色发送二进制文件

Javascript 节点红色发送二进制文件,javascript,node.js,sockets,node-red,Javascript,Node.js,Sockets,Node Red,在询问了一些有关IoT设置的建议后,我刚刚被介绍到Node Red。我有一段javascript代码将数据发送到web套接字。它发送的代码采用HEX格式,并发送到web套接字 我正在尝试使用节点red复制此数据,但在确定要使用哪个节点发送数据时遇到了一些问题 香草Javascript: function connectToSocket() { // Try to connect to the socket try { // Create our socket

在询问了一些有关
IoT
设置的建议后,我刚刚被介绍到
Node Red
。我有一段javascript代码将数据发送到web套接字。它发送的代码采用
HEX
格式,并发送到web套接字

我正在尝试使用
节点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函数时


发送此十六进制字符串的合适格式是什么?

您要发送的是缓冲区,此时注入节点无法生成缓冲区。最简单的方法是在inject和websocketout节点之间插入一个函数节点

功能节点应包含以下内容:

msg.payload = Buffer.from("\x02\x00\x01\x04\x26\x2D");
return msg;
这会将有效负载交换为具有正确值的缓冲区

编辑: 对于NodeJS 0.10.x,您应该使用类似于as Buffer的内容。NodeJS 4.x中引入了from():

msg.payload = new Buffer("\x02\x00\x01\x04\x26\x2D");
return msg;

我对此进行了尝试,但在调试器中收到一个错误。它相当长,但与
TypeError:Object函数Buffer(subject,encoding,offset){if(!(this instanceof Buffer)){return new Buffer(subject,encoding,offset);}var type;//我们正在切片吗?i
。这里的完整错误:您使用哪个版本的NodeJS来运行Node RED?Node RED版本:v0.15.3 Node.js版本:v0.10.29I也尝试过这样做(测试的不同命令):
msg.payload=new Buffer([0x02,0x00,0x02,0x04,0x20,0x28])
我已经编辑了Node 4.x之前版本的答案。您可能应该在此处查看通过脚本进行升级: