node.js - Nodejs 在子进程中的输出中断

标签 node.js child-process

我已连接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 个独立的事件组成:dataend

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/

相关文章:

node.js - 为什么当我使用 "waitForSelector"时 Puppeeteer 导致我的测试套件挂起 30 秒,即使我在页面和浏览器上调用 "close"?

python - npm 安装 bcrypt,gyp 错误! Python

node.js - 如何使用 Passport 验证 Sails JS 应用程序?

java - firebase如何获得 child 的 child ?

javascript - "this"在nodejs模块中意味着什么?

node.js - Node JS。 Child_process.spawn。处理进程的输入提示

javascript - 通过 node.js 运行带参数的 Bash 脚本

linux - Child_process 与模拟?

javascript - 子进程库中的 IPC 连接不是双工的

node.js - 通过 Node js Express 访问 AWS S3 签名 URL