node.js - 将串行数据从 python 脚本发送到 Node 脚本

标签 node.js

我有两个脚本 - 一个 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/

相关文章:

node.js - 基于Node.js资源的ACL

node.js - Express - 从 Web 服务返回二进制数据

node.js - 如何在 Node.js 中的 azure Active Directory 上获取登录用户的 token

php - 通过PHP调用Node JS函数(fsockopen)

javascript - 我可以在 Puppeteer 的 page.type 上使用 XPath 表达式而不是 CSS 选择器吗?

javascript - 函数作为参数没有在原型(prototype)中定义但仍然可以传入?

javascript - 引用错误 : window is not defined in React

node.js - 我需要将旧对象与更新后的对象进行比较,无论是否调用 api

ajax - 来自 Node.js 的基本警报

node.js - 使用反向代理提供公共(public)文件