我使用Python2.6与串行端口上的设备通信。我要确保设备每10秒仍处于活动状态。我发现最好的方法是启动一个线程,每隔一段时间ping设备一次(其他方法,稍后设计,将发送配置命令到串行端口,因此是全局的)。下面是我的代码灵感来自here。在
当我输入“quit”时,ConnectionThread
似乎只会丢失10秒的计时器,并不断地发送PING消息。是什么原因造成的,我如何结束整个线程?在
import serial
import threading
ser = 0
class ConnectionThread(threading.Thread):
def __init__(self, event, **kwargs):
threading.Thread.__init__(self)
self.stopped = event
for key, value in kwargs.items():
setattr(self, key, value)
def run(self):
while not self.stopped.wait(10):
ser.write("{0},{1}\r".format(self.name,"PING"))
def main():
global ser
commport = input("Enter COM port:")
try:
ser = serial.Serial(
port = 'COM{0}'.format(commport),
baudrate = 9600
)
except:
print "Unable to open com port!"
stopFlag = threading.Event()
thread = ConnectionThread(stopFlag)
thread.start()
while True:
n = raw_input("Enter input:")
if n == "quit":
stopFlag.set()
break
if __name__ == "__main__":
main()
因为您使用的是python2.6,
Event.wait()
总是返回None
。{while}需要检查cdy}内部的状态:相关问题 更多 >
编程相关推荐