2015-09-07 1 views
0

Comment écrire dans le stdin d'un processus Arduino Yun Linux lancé par le processus Bridge d'une esquisse? Contexte: J'ai une application de contrôle et de journalisation qui doit se connecter à une feuille de calcul Google Drive via Temboo.com. Je l'ai travaillé à partir du croquis Arduino comme indiqué dans les exemples de Temboo. Mais mon esquisse est trop grande et ne rentrera pas dans la mémoire AVR disponible, donc je veux la diviser: contrôle et acquisition de données côté AVR, et Python-Temboo côté Linux.Comment écrire à stdin() d'un processus Yun?

je commencé à tester avec ce simple script Python stdinFile.py:

import sys 
# Read the string from stdin 
rowData = sys.stdin.readline() 
f = open("blah.txt","w") 
f.write(rowData) 
f.close 
sys.exit(0) 

Je l'invoquons d'une session ssh et tapez un tas de personnages. Cela fonctionne: stdin est écrit dans le fichier!

[email protected]:~# python /root/stdinFile.py 
adsfsadfdsaf 
[email protected]:~# cat blah.txt 
adsfsadfdsaf 

Mais comment faire cela à partir de l'esquisse Arduino? La méthode Process.run() bloque si cela n'a pas - le processus bloqué l'esquisse avant les écritures:

Process p; // Create a process and call it "p" 
p.begin("python"); // Process to launch the "Python" command 
p.addParameter("/root/stdinFile.py"); // Add the script name to "python" 
p.run(); // this is blocking! Script stalls here waiting for stdin 

char record[]="2015-09-06,21:20:00,F,T,F,F,18.3,18.4,19.3,19.4,30.6,28.6"; 
for(char * src = record; *src != '\0'; src++) { 
    p.write(*src); 
} 
p.flush(); 

J'ai aussi essayé de faire les écritures avant la p.run(), autrement dit, la farce stdin flux avant que le script s'exécute, mais cela n'a donné aucun résultat non plus.

Merci!

Répondre

1

Vous pouvez essayer d'utiliser p.runAsynchronously() à la place de p.run(). runAsynchronously() est non bloquant et vous pouvez vérifier si le script est toujours en cours d'exécution avec p.running(). Vous pouvez trouver la documentation de la classe de processus dans le lien ci-dessous:

https://www.arduino.cc/en/Reference/YunProcessConstructor