[英]Real-time data acquisition from serial port with node.js
我正在一個需要從串行端口實時獲取數據的項目中。 數據流確實非常快,並且基本上是實時測量的點的列表。 我正在使用serialport以便處理與客戶端進行通信的通信部分socket.io (包含應繪制點的圖表的網頁)。 當我每秒發送1點時,它工作正常,但是當數據流很快時(例如1點/10ms),node.js顯示此錯誤:
MaxListenersExceededWarning:檢測到可能的EventEmitter內存泄漏。 添加了11個數據偵聽器。 使用generator.setMaxListeners()增加限制
我的問題是:是否有解決方案可實時處理如此快速的流量? 我的第一個想法是關於使用生產者使用者算法和隊列從串行端口收集數據的地方。 我想知道是否還有更多優化的解決方案。
場景是這樣的:
節點:js:GET_VALUE
微控制器:1234
節點:js:GET_VALUE
微控制器:5678
我的代碼:
function readFromUART() {
chosenPort.write(cmdGetValue, function(err) {
if (err) {
return console.log('Error on write: ', err.message);
}
});
console.log('NODE: GATHER DATA');
parser.on('data', function(data){
console.log(data);
每X毫秒調用一次此函數
setInterval(readFromUART, 1000);
我找到了解決方案。 最好使用eventemitter3而不是eventemmiter 。 它在實時應用中具有高性能。
var EventEmitter = require('eventemitter3');
var eventEmitter = new EventEmitter();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.