代码之家  ›  专栏  ›  技术社区  ›  Murlidhar Fichadia

心跳传感器使用serialport-Javascript arduino节点输出缓冲区数据

  •  0
  • Murlidhar Fichadia  · 技术社区  · 7 年前

    0,0
    0,128
    0,150
    120,250
    

    密码

    var SerialPort = require("serialport");
    var serialport = new SerialPort("COM4");
    
     serialport.on('open', function(){
        console.log('Serial Port Opend');
    
        serialport.on('data', function(data){
          console.log(data);
    
        nsp.emit('live-data', data);
      });
    });
    

    但我得到:

    enter image description here

    我尝试了数据[0],然后出现了一些奇怪的数据,而不是我正在寻找的数据。如果我检查数据 1

    1 回复  |  直到 7 年前
        1
  •  3
  •   chris van hooser    7 年前

    在节点serialport的文档中找到:

    数据事件将端口置于流动模式。数据一收到就发出。数据是一个缓冲区对象,其中包含不同数量的数据。readLine解析器将数据转换为字符串行。有关解析器和节点的更多信息,请参阅解析器部分。有关数据事件的更多信息,请参阅js stream文档。

    ( https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/5.0.0-beta8/README.md#module_serialport--SerialPort+event_data

    这让你明白了这一点:

    https://github.com/EmergingTechnologyAdvisors/node-serialport/blob/5.0.0-beta8/README.md#module_serialport--SerialPort.parsers )

    默认解析器是以不同方式解析数据以转换传入数据的转换流。

    文档示例:

    实例

    var SerialPort = require('serialport');
    var Readline = SerialPort.parsers.Readline;
    var port = new SerialPort('/dev/tty-usbserial1');
    var parser = new Readline();
    port.pipe(parser);
    parser.on('data', console.log);
    port.write('ROBOT PLEASE RESPOND\n');
    
    // Creating the parser and piping can be shortened to
    var parser = port.pipe(new Readline());
    

    var SerialPort = require('serialport');
    var ByteLength = SerialPort.parsers.ByteLength
    var port = new SerialPort('/dev/tty-usbserial1');
    var parser = port.pipe(new ByteLength({length: 8}));
    parser.on('data', console.log);
    

    要使用分隔符解析器,请提供一个分隔符作为字符串、缓冲区或字节数组:

    var SerialPort = require('serialport');
    var Delimiter = SerialPort.parsers.Delimiter;
    var port = new SerialPort('/dev/tty-usbserial1');
    var parser = port.pipe(new Delimiter({delimiter: Buffer.from('EOL')}));
    parser.on('data', console.log);
    

    要使用Readline解析器,请提供分隔符(默认为“\n”)

    var SerialPort = require('serialport');
    var Readline = SerialPort.parsers.Readline;
    var port = new SerialPort('/dev/tty-usbserial1');
    var parser = port.pipe(Readline({delimiter: '\r\n'}));
    parser.on('data', console.log);
    

    var SerialPort = require('serialport');
    var Ready = SerialPort.parsers.Ready;
    var port = new SerialPort('/dev/tty-usbserial1');
    var parser = port.pipe(Ready({data: 'READY'}));
    parser.on('data', console.log); // all data after READY is received