清除节点流内部缓冲区

时间:2018-10-08 21:47:28

标签: javascript node.js events serial-port

我正在使用Node Serialport设置事件侦听器,然后检查是否通过连接流传输的数据是否具有正确的单位。如果这些单位与用户设置的单位不匹配,我将使用.pause()方法并通知用户该设备未传输正确的单位。然后,用户可以按下“恢复”按钮,该按钮调用.resume()方法。

根据Node docs:“可读.pause()方法将导致处于流模式的流停止发出'数据'事件,切换为流模式。任何可用的数据将保留在内部缓冲区中。 “

问题似乎是我需要清除此内部缓冲区。就目前而言,我需要多次调用.resume()来遍历所有单元号错误的缓冲数据。

这是代码设置的一般思路:

//Listen for data events and pipe them through a parser.
path.pipe(new Readline({ delimiter: '\r\n' })).on('data', data => {
  //do something with data
})

//Then if data units !== set units, call path.pause()
// User can press "Resume" once the device's units are changed.
<button onClick={() => path.flush(() => path.resume())}>Resume</button>

如何清除内部缓冲区,或者.pause()是否有替代方法可以完全避免此问题而无需关闭然后重新打开连接?

1 个答案:

答案 0 :(得分:0)

听起来好像您只是想对源进行管道处理

 source.unpipe(target);

那样,所有数据流向无处,然后在刚恢复时恢复

source.pipe(target);
再次

相关问题