如何写入Yun进程的stdin()?

2024-09-27 00:20:34 发布

您现在位置:Python中文网/ 问答频道 /正文

如何向由草图的桥接进程启动的Arduino Yun Linux进程的stdin写入?在

背景:我有一个控制和日志应用程序,需要登录到googledrive电子表格腾博网. 我让它工作在Arduino草图中,正如在Temboo示例中给出的那样。但是我的草图太大了,不适合可用的AVR内存,所以我想把它分开:控制和数据采集在AVR端,Python Temboo在Linux端。在

我开始用这个简单的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被写入文件!在

^{pr2}$

但我该怎么做呢?这个进程.运行()方法正在阻止,因此这不起作用--进程在写入之前阻止了草图:

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流,但是也没有得到任何结果。在

谢谢!在


Tags: thepysrc脚本进程linuxstdinsys
1条回答
网友
1楼 · 发布于 2024-09-27 00:20:34

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

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

相关问题 更多 >

    热门问题