我正在使用serialport@5.0.0节点JS库,之前使用它(以前的版本,4.0.7)与GSM调制解调器成功通信。
现在我正在使用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);
但是因为我试图首先处理数据,所以没用。
以下是我的序列端口设置:
_.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 :(得分:0)
解决了它,显然是"缓冲区"我的示例代码的on.data部分中的变量已经收到一个字符串。因此我可以将字符串打印为console.log(缓冲区)。
奇怪的部分是数据+ = buffer.toString()部分表现奇怪的原因。我希望在那行之后我会在第一个console.log中获得至少一些东西。但它返回空白。