如何构造Python代码?

如何构造Python代码?,python,multithreading,buffer,raspberry-pi,Python,Multithreading,Buffer,Raspberry Pi,我为这有点含糊提前道歉,但我正试图找出最好的方法是从高层次的角度编写我的程序。以下是我试图实现的目标的概述: RasPi以115000波特从串行端口上的高度传感器获取输入 进行一些十六进制->十进制运算并更新状态变量(俯仰、横滚、航向等) 使用pygame库根据模拟平视显示器上的状态变量执行一些图像操作 以30 fps的速度将图像输出到投影仪 请注意,目前没有用户输入 我遇到的问题是帧率。帧速率必须是恒定的。我宁愿跳过一个数据包也不愿丢弃一帧 我可以通过两种方式来理解这一点: 编写一个函数,调

我为这有点含糊提前道歉,但我正试图找出最好的方法是从高层次的角度编写我的程序。以下是我试图实现的目标的概述:

  • RasPi以115000波特从串行端口上的高度传感器获取输入
  • 进行一些十六进制->十进制运算并更新状态变量(俯仰、横滚、航向等)
  • 使用pygame库根据模拟平视显示器上的状态变量执行一些图像操作
  • 以30 fps的速度将图像输出到投影仪
  • 请注意,目前没有用户输入

    我遇到的问题是帧率。帧速率必须是恒定的。我宁愿跳过一个数据包也不愿丢弃一帧

    我可以通过两种方式来理解这一点:

    • 编写一个函数,调用时从串行总线获取数据并输出状态变量作为输出。然后编写一个pygame循环,从内部调用此函数。我担心的是,如果串行端口在姿态消息末尾开始读取,它将不得不暂停并等待消息再次启动(几秒钟,但可能导致帧丢失)
    • 编写两个单独的模块,两个模块同时运行。从串行端口连续读取数据,并尽可能快地更新状态变量。另一个只是进行图像处理,并在需要时获取最新的状态变量。然而,我并不确定如何编写这样一个多线程程序,我也不知道RasPi将如何处理这样一个程序

      • 我认为RasPi在运行多线程程序时不会工作得那么好。尝试第一种方法,尽管看到多线程程序的结果会很有趣