基于pyserial时间的重复数据请求

时间:2017-08-28 06:35:17

标签: python pyserial data-acquisition

我在python中编写应用程序以使用串行通信获取数据。我使用pyserial库来建立通信。在一个区间(例如每2秒)请求数据的最佳方法是什么。我总是要发送请求,等待答案并再次开始这个过程。

2 个答案:

答案 0 :(得分:0)

如果这是一个“慢”过程,那不是精确的时间精度,请使用while循环和time.sleep(2)将过程超时2秒。

答案 1 :(得分: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