Javascript 节点红色将多个输出转换为CSV
我尝试将多个Modbus变量存储在本地磁盘上 我的函数脚本如下:Javascript 节点红色将多个输出转换为CSV,javascript,node.js,node-red,Javascript,Node.js,Node Red,我尝试将多个Modbus变量存储在本地磁盘上 我的函数脚本如下: var msgPortBus,msgStbdBus; if (msg.topic === 'BusVolts') { msgPortBus = { payload: msg.payload.Port.Bus.Volts, }; msgStbdBus = { payload: msg.payload.STBD.Bus.Volts, }; } msg.payload = [msgPortBus,msgStbdBus]
var msgPortBus,msgStbdBus;
if (msg.topic === 'BusVolts') {
msgPortBus = { payload: msg.payload.Port.Bus.Volts, };
msgStbdBus = { payload: msg.payload.STBD.Bus.Volts, };
}
msg.payload = [msgPortBus,msgStbdBus]
return msg;
我假设错误在上面的代码中某处。。。。两个Modbus节点的主题均为“总线电压”
我对一个输入使用了下面的代码,它给了我时间戳,然后是我希望从一个输入中获得的数据,但我不确定如何区分不同的有效负载
msg.payload = new Date().toString() +
"," + msg.payload;
return msg;
提前谢谢
编辑:错误为“类型错误:无法读取未定义的属性‘总线’”问题在于,您假设当功能节点运行时,它将看到一个组合的
msg
对象,该对象包含来自两个modbus节点的信息。事实并非如此
功能节点将针对modbus节点的每个输出消息单独运行,因此一次只填充msg.payload.Port.Bus.Volts
或msg.payload.STBD.Bus.Volts
如果要在将多个节点的输出馈送到功能节点之前将其合并,则需要查看在上下文中存储数据,或者在处理之前使用联接节点将输出批处理到一个数组中。问题在于,您假设功能节点运行时将看到一个合并的输出
msg
对象,包含来自两个modbus节点的信息。事实并非如此
功能节点将针对modbus节点的每个输出消息单独运行,因此一次只填充msg.payload.Port.Bus.Volts
或msg.payload.STBD.Bus.Volts
如果要在将多个节点的输出馈送到功能节点之前将其合并,则需要查看在上下文中存储数据或在处理之前使用联接节点将输出批处理到一个数组中。您说“我假设错误在代码中…”但是你没有真正说明你看到了什么问题。@hardillb-编辑了这篇文章。你说“我假设错误在代码中…”但是你没有真正说明你看到了什么问题。@hardillb-编辑了这篇文章。谢谢你,这似乎有效。但是,我的服务器崩溃了,出现了以下错误:
25 Jun 15:56:48-TypeError:“list”参数必须是缓冲区数组或Uint8Array实例
我尝试将其设置为缓冲区,反复尝试。你知道我该怎么纠正这个吗?谢谢你,这似乎有效。但是,我的服务器崩溃了,出现了以下错误:25 Jun 15:56:48-TypeError:“list”参数必须是缓冲区数组或Uint8Array实例
我尝试将其设置为缓冲区,反复尝试。你知道我怎样才能纠正这一点吗?