如何写入由草图的桥进程启动的 Arduino Yun Linux 进程的标准输入?
背景:我有一个控制和日志应用程序,需要通过 Temboo.com 登录到 Google Drive 电子表格。我从 Temboo 示例中给出的 Arduino 草图开始工作。但是我的草图太大,不适合可用的 AVR 内存,所以我想拆分它:AVR 端的控制和数据采集,Linux 端的 Python-Temboo。
我开始使用这个简单的 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)
我从 ssh 会话中调用它并输入一堆字符。它有效:stdin 被写入文件!
root@Arduino:~# python /root/stdinFile.py
adsfsadfdsaf
root@Arduino:~# cat blah.txt
adsfsadfdsaf
但是我如何从 Arduino 草图中做到这一点?Process.run() 方法被阻塞,所以这不起作用——进程在写入之前阻塞了草图:
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();
我还尝试在 之前进行写入p.run()
,换句话说,在脚本运行之前填充标准输入流,但这也没有给出任何结果。
谢谢!