2017-09-04 105 views
2

我正在使用[email protected] Node JS库,并且之前使用它(先前版本,4.0.7)与GSM调制解调器。无法使用serialport Node JS库从Arduino Uno读取数据

现在我使用它与Arduino Uno。不过,我似乎无法像以前一样使用GSM调制解调器读取数据。

这就是我想要做的事:

this.parser.on('data', (buffer) => { 
    console.log('in on data'); 
    data += buffer.toString(); 
    console.log("DATA: " + data); 
    var parts = data.split('\r\n'); 
    console.log('PARTS:', parts); 
    data = parts.pop(); 
    console.log(data) 
    console.log('POPPED DATA: ' + data); 
}) 

我从它那里得到什么。我甚至尝试使用解析器,因此this.parser.on。但是我无法让它工作。

我可以用这虽然得到的数据:

this.parser.on('data', console.log); 

但因为我试图处理摆在首位的数据,也没用。

这里是我的SerialPort设置:

_.defaults(options, { 
    baudrate: 9600, 
    dataBits: 8, 
    parity: 'none', 
    stopBits: 1, 
    flowControl: false, 
    autoOpen: false, 
}); 
this.options = options; 
this.serial = new SerialPort(this.port, this.options); 
this.eventEmitter = new events.EventEmitter(); 
this.parser = new Readline({ delimiter: '\n' }); 

我调用serialport从类。是的,我打开端口。

我也可以写入端口。

+0

您是否可以使用内置于Arduino IDE中的“串口监视器”与串口/ Arduino代码进行通信? – payne

+0

关于Arduino串行监视器我可以完美地通信。实际上所有的分隔符。也可以通过this.parser.on('data',console.log)获取数据; –

回答

0

解决了它,显然我的示例代码的on.data部分中的“缓冲区”变量已经收到一个字符串。因此,我可以将该字符串打印为console.log(buffer)。

奇怪的部分是为什么data + = buffer.toString()部分行为怪异。我希望在那行后的第一个console.log中至少有一些东西。但它返回空白。