J'ai un script interactif en python qui parle avec mon imprimante 3D. Si j'ouvre ce script, je tape deux commandes qui envoie des informations à stdout:NodeJS avec script interactif Express et python
- se connecter à l'imprimante (USB) à 250000 baud
- obtenir la température
Je voudrais la connexion avec l'imprimante pour rester en permanence, parce que dans le futur, je peux me connecter à nouveau au script pour interroger l'ETA du travail d'impression en cours. Puis, NodeJS avec Express me permet de créer une API web simple qui communique avec ce script en utilisant un child process, mais je reçois beaucoup d'erreurs.
Mon code:
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');
});
Je reçois des erreurs Ligne 29: Erreur: Impossible de définir les en-têtes après leur envoi.
Qu'est-ce que je fais mal?
ce qui est la ligne 29? et pourquoi voulez-vous écrire votre serveur dans js quand vous pouvez avoir py le faire? – taesu
La ligne 29 est res.json ({printer_status: data}); J'utilise js car node + express est le moyen le plus simple d'avoir une API de repos. J'ai également envisagé d'utiliser Flask, mais je ne suis pas sûr. Que recommanderais-tu? – Axel
Django ou Flask. votre erreur est [dupliquer] (http://stackoverflow.com/questions/7042340/node-js-error-cant-set-headers-after-they-are-sent?answertab=active#tab-top) de toute façon – taesu