SerialPort lib - " parsers.readline不是一个函数"错误 - NodeJS

时间:2017-09-03 11:49:05

标签: javascript node.js node-serialport

我复制了这段代码:

var serialport =require("serialport");
var SerialPort = serialport.SerialPort;
var portName = process.argv[2];

var myPort = new SerialPort(portName,{
    baudRate: 9600,
    parser:serialport.parsers.readline("\r\n")
})

myPort.on('open',onOpen);
myPort.on('data',onData);

function onOpen(){
    console.log("Open connections!");
}

function onData(data){
    console.log("on Data "+data);
}

来自此视频:https://www.youtube.com/watch?v=rhagmAv35Kk

我想将来自我的电脑的串口数据流式传输到NJS代码中。 当我运行代码时,我收到此错误:

c:\njs>node main.js
C:\njs\main.js:7
        parser:serialport.parsers.readline("\r\n")
                                  ^

TypeError: serialport.parsers.readline is not a function
    at Object.<anonymous> (C:\njs\main.js:7:28)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)
    at Module.runMain (module.js:575:10)
    at run (bootstrap_node.js:352:7)
    at startup (bootstrap_node.js:144:9)
    at bootstrap_node.js:467:3

c:\njs>

任何人都知道为什么它无法识别这个功能?

3 个答案:

答案 0 :(得分:3)

您的代码的工作版本,您只需要实例化Readline类:

var serialport = require('serialport');
var portName = process.argv[2];

var myPort = new serialport(portName, {
    baudRate: 9600,
    parser: new serialport.parsers.Readline('\r\n')
});

myPort.on('open', onOpen);
myPort.on('data', onData);

function onOpen(){
    console.log('Open connections!');
}

function onData(data){
    console.log('on Data ' + data);
}

并且您可以使用node index.js COM5来运行,例如,得到这样的内容:

Open connections!
on Data 123456789

希望可以提供帮助。

答案 1 :(得分:2)

问题是模块的版本。 根据最新版本,此代码应该完成工作:

argon2i

答案 2 :(得分:0)

如果我看对了,Readline是一个不起作用的类!试试这个:

parser: SerialPort.parsers.Readline

检查一下,让我知道它是否有效! https://github.com/EmergingTechnologyAdvisors/node-serialport#serialportparsers--object