我正在用 python 编写一个应用程序来使用串行通信获取数据。我使用 pyserial 库来建立通信。以间隔(例如每 2 秒)请求数据的最佳方法是什么。我总是必须发送请求,等待答案并重新开始该过程。
问问题
206 次
2 回答
0
如果这是一个“缓慢”的过程,时间精度不准确,请使用 while 循环和 time.sleep(2) 将过程超时 2 秒。
于 2017-08-28T06:40:03.890 回答
0
我考虑过使用单独的线程来防止应用程序的其余部分冻结。该线程接受一个从仪器请求数据的函数。
class ReadingThread(Thread):
'''Used to read out from the instrument, interrupted by an interval'''
def __init__(self, controller, lock, function, queue_out, interval=3 , *args, **kwargs):
Thread.__init__(self)
self.lock = lock
self.function = function
self.queue_out = queue_out
self.interval = interval
self.args = args
self.kwargs = kwargs
self.is_running = True
def run(self):
while self.is_running:
with self.lock:
try:
result = self.function(self.args, self.kwargs)
except Exception as e:
print(e)
else:
self.queue_out.put(result)
time.sleep(self.interval)
def stop(self):
self.is_running = False
于 2017-08-28T07:31:25.250 回答