Javascript SerialPort lib-“串行端口库”;parsers.readline不是一个函数;错误-NodeJS

Javascript SerialPort lib-“串行端口库”;parsers.readline不是一个函数;错误-NodeJS,javascript,node.js,node-serialport,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',o

我复制了以下代码:

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);
}
从这个视频:

我想将数据从我的pc的串行端口传输到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>
c:\njs>node main.js
C:\njs\main.js:7
解析器:serialport.parsers.readline(“\r\n”)
^
TypeError:serialport.parsers.readline不是函数
反对。(C:\njs\main.js:7:28)
在模块处编译(Module.js:541:32)
在Object.Module._extensions..js(Module.js:550:10)
在Module.load(Module.js:458:32)
在tryModuleLoad时(module.js:417:12)
在Function.Module.\u加载(Module.js:409:3)
位于Module.runMain(Module.js:575:10)
运行时(bootstrap_node.js:352:7)
启动时(bootstrap_node.js:144:9)
在bootstrap_node.js:467:3
c:\njs>

有人知道为什么它不能识别函数吗?

如果我看对了,Readline是一个类而不是函数!试试这个:

parser: SerialPort.parsers.Readline
看看这个,让我知道它是否有效!
问题在于模块的版本。 根据最新版本,此代码应完成以下工作:

const SerialPort = require('serialport');
const Readline = SerialPort.parsers.Readline;
const port = new SerialPort('/dev/tty-usbserial1');
const parser = new Readline();
port.pipe(parser);
parser.on('data', console.log);
port.write('ROBOT PLEASE RESPOND\n');

作为代码的工作版本,您只需实例化
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); }
希望这能有所帮助。

我已经看过好几次使用相同参数的代码,它不是类。 Open connections! on Data 123456789