每秒从serialport.io读取数据

问题描述

我有一个激光雷达,可以通过串行接收数据。但是我收到的数据量过多,以至于大大增加cpu负载和温度。

我曾想过每秒循环读取一次串行端口,但是好像程序不再从sport.on(“数据”)功能退出。 另一方面,如果我关闭序列号,则无法重新打开它。 然后,我将不得不通过socket.io传输数据,这足以使我每秒或每500毫秒读取一次数据。

var portName = '/dev/ttyS0';
var sport = new SerialPort(portName,{
   baudrate: 115200,dataBits: 8,parity: 'none',stopBits: 1,autoOpen: false
});

let read_height = setInterval(function(){ real_height() },1000);

function real_height() {

    sport.open(function (err) {
        if (err) {
          return console.log('Error opening port: ',err.message)
        }
    console.log('i\'m here');  

        sport.on('data',function(data) {
            var buff = new Buffer.from(data);
            hexx = buff[2] + (buff[3] << 8);
      
            if (hexx) {
                sport.close(function (err) {
                    console.log('port closed',err);
                });
            }
            console.log("hexx = " + hexx);
        });
      });
};

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)