我试图建立一个Arduino Yun警报系统。它需要向我的Web服务器发出更新其统计信息的请求。它还需要监控按钮和运动传感器。
Linux方面正在运行一个将发出Web请求的python脚本。我需要让Arduino将其状态发送到python脚本。在python脚本中,我需要从Arduino端读取。我可以用print raw_input()
做到这一点,但是我希望它只能读取是否有可用的东西,如果没有可用的话我不想阻止它。例如:
import time
while 1:
print "test"
time.sleep(3)
print raw_input()
time.sleep(3)
如果我运行它,我想要它打印:
test
(6 seconds later)
test
而不是
test
(Infinite wait until I type something in)
我尝试过线程,但它们有点难以使用。
答案 0 :(得分:0)
等待单行数据的简单解决方案。使用类似文件的sys.stdin对象。
import sys
while True:
print "Pre"
sys.stdin.readline()
print "Post"
答案 1 :(得分:0)
我查看了jakekimds的评论,我看到我可以这样做:
while 1:
rlist,_,_=select([sys.stdin],[],[],0)
content=""
while rlist:
content+=raw_input()
rlist,_,_=select([sys.stdin],[],[],0)
print "blocking task - content:"+content
time.sleep(5)
这将:
content
。