【问题标题】:SerialPort lib - "parsers.readline is not a function" Error - NodeJSSerialPort lib - “parsers.readline 不是函数”错误 - NodeJS
【发布时间】:2018-02-11 20:54:38
【问题描述】:

我已经复制了这段代码:

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>

有人知道为什么它不能识别这个功能吗?

【问题讨论】:

    标签: javascript node.js node-serialport


    【解决方案1】:

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

    parser: SerialPort.parsers.Readline
    

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

    【讨论】:

    【解决方案2】:

    问题出在模块的版本上。 根据最新版本,此代码应该可以完成工作:

    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');
    

    【讨论】:

      【解决方案3】:

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

      var serialport = require('serialport'); var portName = process.argv[2]; var myPort = 新串行端口(端口名称,{ 波特率:9600, 解析器:新的 serialport.parsers.Readline('\r\n') }); myPort.on('open', onOpen); myPort.on('data', onData); 函数 onOpen(){ console.log('打开连接!'); } 函数数据(数据){ console.log('关于数据' + 数据); }

      你可以使用node index.js COM5运行,例如,得到这样的东西:

      打开连接! 关于数据 123456789

      希望能有所帮助。

      【讨论】:

        猜你喜欢
        • 2022-01-15
        • 2021-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-06
        • 2021-01-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多