gpt4 book ai didi

Python计算快,串口写入慢: Multithread or Multiprocess

转载 作者:行者123 更新时间:2023-12-01 01:47:53 25 4
gpt4 key购买 nike

我有一个机器人项目,基本上是一个路径跟踪问题。在PC中,引用生成算法是在Python3.65中实现的。该算法获取室内 GPS 数据,并使用这些不断更新的数据来计算机器人汽车的引用路径。当然,该算法运行在当 True 时: ....框架。只有当采样频率相当高,比如0.001s时,该算法才能很好地工作。但问题是,计算出引用路径后,需要通过 Serial.write() 将路径信息逐字节写入 PC 的串口。这个serial.write()函数仍然是一个for循环。而且这个写入过程非常慢(16字节需要0.02s以上)。如果for循环包含在while True:框架中,则类似于:

<小时/>
while True:
Data = Ref_generation()
Bytes_Full = Float_2_Bytes_List(Data)
for ele in Bytes_Full:
Serial.write(ele) # VERY SLOW!!!
sleep(0.001)
<小时/>

此时,由于周期远大于0.001s,因此无法正确计算Data。

简而言之,如何将快速计算算法与缓慢的serial.wtite()分开?我尝试了多线程,但不起作用。

任何帮助将不胜感激,非常感谢!

最佳答案

我遇到了类似的问题,我使用守护线程来运行串行通信部分。因此,请尝试在守护线程上运行串行通信,该守护线程将在主机进程的后台运行。这将使您的程序能够独立于串行通信所需的等待时间来运行任务。这样你就可以将快速的计算算法与缓慢的serial.wtite()分开。

您可以找到有关守护线程的更多信息 here 。为了进一步避免缓冲区滞后,您可以使用 pySerial 中的 reset_output_buffer()

关于Python计算快,串口写入慢: Multithread or Multiprocess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51063970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com