我正在尝试使用python通过串行通信从飞行控制板请求数据。
有几个数据字段,但希望以不同的速率更新。例如,字段A将每0.001更新一次,字段B将每0.02秒更新一次,字段C每1秒更新一次。
由于可能存在数据包丢失,因此有时可能需要更长时间才能读取数据和time.sleep()将导致不准确的时间间隔。此外,进行串行通信的类也不是线程安全的,因此不能使用任何可能导致线程安全问题的方法。
以下是该过程的主要结构,我能做些什么来让它以我希望的时间间隔请求数据?
class WorkerProcess(multiprocessing.Process):
def __init__(self, port, addresslist, task_queue, result_queue):
multiprocessing.Process.__init__(self)
self.exit = multiprocessing.Event()
self.serialPort = port
self.addressList = addresslist
self.sch = SerialCommunication(self.serialPort, self.addressList)
self.task_queue = task_queue
self.result_queue = result_queue
self.modeSelection = 0
def run(self):
while not self.exit.is_set():
...
self.sch.requestA()
self.sch.requestB()
self.sch.requestC()
...
def shutdown(self):
print("Shutdown initiated")
try:
self.sch.stopSerial()
except Exception:
print(Exception)
print('Process stopped')
self.exit.set()