【问题标题】:Node-Red Multiple outputs into CSVNode-Red 多个输出到 CSV
【发布时间】:2018-06-25 14:03:45
【问题描述】:

我尝试将多个 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]

return msg;

我假设错误出现在上面的代码中......两个 Modbus 节点的主题都是“BusVolts”。

我对一个输入使用了以下代码,它给出了我的时间戳,然后是我想要从一个输入中获得的数据,但我不确定如何区分不同的有效负载。

msg.payload = new Date().toString() + 
    "," + msg.payload;
return msg;

提前致谢。

编辑:错误是“类型错误:无法读取未定义的属性‘总线’”

【问题讨论】:

  • 您说“我认为错误在代码中......”但您实际上没有说明您看到的问题是什么。
  • @hardillb - 编辑了帖子。

标签: javascript node.js node-red


【解决方案1】:

问题是您假设当功能节点运行时,它将看到一个组合的msg 对象,其中包含来自两个 modbus 节点的信息。事实并非如此。

函数节点将为来自 modbus 节点的每个输出消息单独运行,因此一次只会填充 msg.payload.Port.Bus.Voltsmsg.payload.STBD.Bus.Volts 之一。

如果您想在将多个节点的输出输入到函数节点之前合并多个节点的输出,您将需要查看将数据存储在 Context 中,或者使用 Join 节点在处理之前将输出一起批处理到一个数组中。

【讨论】:

  • 谢谢你,这似乎有效。但是,我的服务器崩溃了,并出现以下错误:25 Jun 15:56:48 - TypeError: "list" argument must be an Array of Buffer or Uint8Array instances 我试图将其设置为缓冲区,反复试验。你知道我该如何纠正这个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多