我有两个脚本 - 一个 python 脚本和另一个 Node 脚本。 python 脚本在无限循环中运行并读取串行数据。一旦它接收到串行数据,就必须将其传递给 node.js scipt,以便它可以在 Node 服务器中进行处理。
我想过使用 node.js child_process 模块从 python 脚本中读取数据,但由于 python 脚本是一个无限循环,它不会向 Node 脚本返回任何数据。 谁能告诉我如何解决这个问题?
Python 脚本:
import serial
ser = serial.Serial('COM10', 9600, timeout =1)
while 1 :
print ser.readline()'
Node.js 脚本:
var spawn = require('child_process').spawn,
ls = spawn('python',['pyserial.py']);
ls.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
ls.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
注意:我使用 python 脚本的唯一原因是由于 serialport 模块中的某些问题,node.js serialport 模块当前不适用于我的项目。
最佳答案
您需要在打印后刷新 python 脚本中的标准输出流。这是一个打印时间的示例(我没有要测试的串行设备):
python :
import sys
from datetime import datetime
from time import sleep
while 1:
print datetime.now()
sys.stdout.flush()
sleep(5)
Node .js:
var spawn = require('child_process').spawn,
ls = spawn('python',['test.py']);
ls.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
ls.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
关于node.js - 将串行数据从 python 脚本发送到 Node 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16873116/