Raspberry serialport使用Node.js删除数据

时间:2018-04-12 20:37:54

标签: node.js serial-port missing-data

我正在尝试在Raspberry Pi 3上使用带有Node的serialport。 我正在使用的代码简单地回应了它所读取的内容。问题是某些字节没有回显。我使用两个USB串口适配器,一个连接到我的PC,一个连接到树莓。我正在使用RealTerm来编写和读取数据。我正在使用npm-serialport包。我也尝试了raspi-serial同样的结果。

我在C中尝试了类似的程序,一切都很好,它可以达到230400,这是我想用Node实现的。所以这告诉我这不是硬件问题。

问题仅在同时进行读写时显示。

降低波特率似乎有所帮助,但我需要它快于1200 bps。

这是我正在使用的代码:

var SerialPort = require('serialport');
const serial = new SerialPort('/dev/ttyUSB0',{baudRate:9600});
serial.on('data',(data)=>{
        console.log(data.toString('utf8', 0, 1));
        serial.write(data.toString('utf8', 0, 1));
});

这个picture显示了PC和Raspberry之间的逻辑分析器所看到的内容。上面的行是树莓写的,下面的行就是PC发送的内容。我正在重复发送字符串1234567890。

1 个答案:

答案 0 :(得分:0)

原来并不是这个库应该如何用于实现我想要的。问题是我在"流动模式"中使用了阅读流,你想避免这种应用。

此代码对我有用:

serial.on('readable',() => {
    var buffer = serial.read();
    if(buffer){ //serial.read() could return null if there's nothing to read
            console.log(buffer.toString('utf8'));
            serial.write(buffer.toString('utf8'));
    }
});