Я использую Node Serialport, чтобы установить прослушиватель событий, и затем я проверяю, имеют ли данные, передаваемые по соединению, правильные единицы измерения.Если эти единицы не соответствуют установленным пользователем единицам, я использую метод .pause()
и уведомляю пользователя о том, что устройство не передает правильные единицы.Затем пользователь может нажать кнопку «Возобновить», которая вызывает метод .resume()
.
В соответствии с документами Node: «Метод readable.pause () заставит поток в потоковом режиме прекратить излучение событий« data », выйдя из потокового режима. Любые данные, которые станут доступными, останутся ввнутренний буфер. "
Проблема в том, что мне нужно очистить этот внутренний буфер.В настоящее время мне нужно многократно вызывать .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()
, которая полностью устраняет эту проблему, не закрывая и затем повторно открывая соединение?