我已连接wavecom GSM modem在乌类图上。我使用node.js语言与GSM调制解调器进行通信。 我通过 Child Process 向调制解调器发送命令。这里是例子
var spawn = require("child_process").spawn,
exec = require('child_process').exec;
// Write dev_ttyUSB15.tmp file
var child = exec('cat < /dev/ttyUSB15 > /tmp/dev_ttyUSB15.tmp');
// Read dev_ttyUSB15.tmp file
var m1 = spawn('tail',['-f','/tmp/dev_ttyUSB15.tmp']);
// on data event is emitted when dev_ttyUSB15.tmp file has some data
m1.stdout.on('data', function (data) {
console.log("Data : "+data); // this is executed as output
});
现在,当我在端口/dev/ttyUSB15 上触发某些命令时,我无法正确获得输出。
例如
假设我的输出应该是
Data : abcd1234
但我没有得到它
Data : abc
Data : d1234
简而言之,我的输出已损坏。 我无法从我的输出到底中断的地方推断出来。这是随机的。 谁能给我任何想法吗?
提前致谢。
最佳答案
与 Node.js 中的所有流一样,数据的读取由 2 个独立的事件组成:data 和 end。
data 事件在流中的某些数据可读时触发(在您的情况下为两次)。
当不再触发数据事件时,将触发end事件。
var blob = "";
m1.stdout.on('data', function (data) {
blob += data;
});
m1.stdout.on('end', function () {
console.log("Data : " + blob); // here you have all the data within one variable
});
关于node.js - Nodejs 在子进程中的输出中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9801999/