【发布时间】:2014-04-16 01:51:04
【问题描述】:
对于这有点含糊,我提前道歉,但我试图找出从高层次的角度编写我的程序的最佳方法。以下是我要完成的工作的概述:
- RasPi 以 115000 波特从串行端口上的高度传感器获取输入。
- 做一些 hex -> dec 数学运算并更新状态变量(俯仰、滚动、航向等)
- 使用 pygame 库根据模拟平视显示器上的状态变量进行一些图像处理
- 以 30 fps 的速度将图像输出到投影仪。
请注意,没有用户输入(目前)。
我遇到的问题是帧率。帧率必须是恒定的。我宁愿跳过数据包也不愿丢帧。
我可以通过两种方式来构建它:
- 编写一个函数,调用该函数时,它会从串行总线获取数据并将状态变量作为输出输出。然后编写一个 pygame 循环,从里面调用这个函数。我对此的担忧是,如果串行端口在姿态消息的 end 开始被读取,它将不得不暂停并等待消息再次开始(几分之一秒,但可以导致丢帧)
- 编写两个独立的模块,两个模块同时运行。一个连续从串行端口读取数据并尽可能快地更新状态变量。另一个只是进行图像处理,并在需要时获取最新的状态变量。但是,我实际上并不确定如何编写这样的多线程程序,也不知道 RasPi 将如何处理这样的程序。
【问题讨论】:
标签: python multithreading buffer raspberry-pi