Node.js回调;如何加入SerialPort后续数据事件?

时间:2014-05-02 14:03:42

标签: javascript node.js asynchronous

我在Node.js中遇到SerialPort的问题,我无法解决。在MODBUS RTU协议中,如果在两个数据块之间发生指定的超时(例如,10毫秒),则认为消息被完全传输。 我使用SerialPort的经验表明,我经常得到单个数据事件中的一个或几个字节,当实际消息可能长达100个字节时。现在,我如何知道消息是否已经结束,我可以将数据传递给其他处理程序?好吧,现在我做以下事情:

var timeoutTimer;
function dataEventHandler(chunk) {
    clearTimeout(timeoutTimer);
    // concatenate the chunks
    timeoutTimer = setTimeout(10, handleFullMessage);
}

这显然不是最好的方法...想象一下另一个回调钟声,例如HTTP请求处理程序,可以评估长达100毫秒。

几个想法:

  • handleFullMessage()中检查串口上是否有可用的东西,如果是,只需退出,假设可能再次调用数据事件(MODBUS是主/从协议,所以没有人会说没有请求)。但我不知道该怎么做。
  • 以某种方式优先处理数据事件超时...

0 个答案:

没有答案