首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何写入云进程的stdin()?

如何写入云进程的stdin()?
EN

Stack Overflow用户
提问于 2015-09-07 09:49:45
回答 1查看 273关注 0票数 0

如何写入由草图的Bridge进程启动的Arduino Yun Linux进程的stdin?

背景:我有一个控制和日志记录应用程序,需要通过Temboo.com记录到Google Drive电子表格。我让它从Arduino草图开始工作,如Temboo示例所示。但是我的草图太大了,放不下可用的AVR内存,所以我想把它分成两部分: AVR一侧的控制和数据采集,Linux一侧的Python-Temboo。

我从这个简单的Python脚本stdinFile.py开始测试

代码语言:javascript
复制
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被写入到文件中!

代码语言:javascript
复制
root@Arduino:~# python /root/stdinFile.py
adsfsadfdsaf
root@Arduino:~# cat blah.txt
adsfsadfdsaf

但是我如何从Arduino素描中做到这一点呢?Process.run()方法被阻塞,所以这不起作用--该进程在写入之前阻塞了草图:

代码语言:javascript
复制
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()之前进行写入,换句话说,在脚本运行之前填充stdin流,但这也没有给出任何结果。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-09-08 20:50:57

您可以尝试使用p.runAsynchronously()而不是p.run()。runAsynchronously()是非阻塞的,您可以使用p.running()检查脚本是否仍在运行。您可以在以下链接中找到process类的文档:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32430104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档