У меня есть интерактивный скрипт python, который говорит с моим 3D-принтером. Если открыть этот скрипт, я набираю две команды, которые выводит информацию стандартный вывод:NodeJS с интерактивным скриптом Express и python
- подключения к принтеру (USB) на 250000 бод
- Получить температуру
Я хотел соединение с принтером должно оставаться навсегда, потому что в будущем я могу снова подключиться к сценарию для опроса для ETA текущего задания на печать.
Затем NodeJS с Express позволяет мне создать простой веб-API, который связывается с этим скриптом, используя child process, но я получаю много ошибок.
Мой код:
var express = require('express');
var app = express();
var child_process = require('child_process');
spawn = child_process.spawn;
var n = child_process.spawn('/home/pi/virtualenvs/printrun/bin/python', ['-i','-u','/home/pi/projects/printrun/Printrun/pronsole.py']);
n.stdin.write('connect /dev/ttyACM0 250000');
n.stdin.write('\n');
app.get('/printer_temp', function (req, res) {
n.stdin.write('gettemp');
n.stdin.write('\n');
n.stdout.on('data', function(data){
res.json({printer_status: data}); //I should get kind of like an "OK", with a bunch of other lines.
});
});
var server = app.listen(3000, function() {
var host = server.address().address;
var port = server.address().port;
console.log('Starting server');
});
Я получаю ошибки, строка 29: Ошибка: Не удается установить заголовки после их отправки.
Что я делаю неправильно?
что линия 29? и почему вы хотите написать свой сервер в js, когда вы можете сделать это? – taesu
Строка 29 - res.json ({printer_status: data}); Я использую js, потому что node + express - самый простой способ иметь API для отдыха. Я также рассмотрел использование Flask, но я не уверен. Чтобы вы посоветовали? – Axel
Django или Flask. ваша ошибка [дубликат] (http://stackoverflow.com/questions/7042340/node-js-error-cant-set-headers-after-they-are-sent?answertab=active#tab-top) anyways – taesu