Python线程串行读取无限循环

2024-10-01 11:24:06 发布

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

当我发送 “1” 每隔3分钟无限时间连续播放一次。我需要一个线程脚本 因为 这将不得不与其他功能集成在一起串行。 这个 串口连接到带传感器的arduino,但我不确定程序 是 正式更正。有人能帮我吗?谢谢

#!/usr/bin/python
import time
import serial
import threading
import time
import io

ser=serial.Serial('/dev/ttyUSB0', 57600, timeout=3)
def printit():
threading.Timer(180.0, printit).start()
ser.write(b'1\n')
lettura=ser.readline()
print lettura

try:
   printit()
except:
   print "Error: unable to start thread"
while 1:
   pass

Tags: import功能脚本time时间serial传感器线程
1条回答
网友
1楼 · 发布于 2024-10-01 11:24:06

您定义printit函数的递归方式将创建一个无限循环,然而,该定义使得控制线程的执行有点复杂。您可能需要考虑编写一个自定义的Thread类,该类接受您希望在给定时间间隔运行的函数,以及您希望等待的时间间隔(类似于传递给Timer)的函数。在

import threading
import time

class RepeatThread(threading.Thread):

    def __init__(self, interval, f):
        self.interval = interval
        self.f = f

    def start(self):
        while True:
            self.f()
            time.sleep(self.interval)

然后你可以像这样使用这个类

^{pr2}$

另外,这个question的答案提供了很多关于如何在python中构建无限循环线程的有用信息。您可能还需要遵循他们关于访问串行设备时锁定的说明(如果多个线程可能同时使用它)。在

相关问题 更多 >