gpt4 book ai didi

python - 如何写入 Yun Process 的 stdin()?

转载 作者:太空宇宙 更新时间:2023-11-04 10:47:30 27 4
gpt4 key购买 nike

如何写入由草图的桥接进程启动的 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 session 调用它并键入一堆字符。它有效:标准输入被写入文件!

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() 之前进行写入,换句话说,在脚本运行之前填充标准输入流,但这也没有给出任何结果。

谢谢!

最佳答案

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

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

关于python - 如何写入 Yun Process 的 stdin()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32430104/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com