减慢 Python 中显示的串行数据

Slowing down the displayed serial data in Python

下面是从陀螺仪收集串行数据的 python 代码。打印的数值是连续的实时数据。当我运行代码时,从串口显示的数据非常快。我想获得 10 Hz 的数据(减慢显示值)。有人可以帮我吗?谢谢!!

import serial
import struct
#import csv
ser = serial.Serial("COM5",115200)
buffer = []
while 1:
        val = ser.read(1)
        if (val == '\x7e'):
            val = ser.read(1)
            if (val == '\x5D'):
                val = ser.read(18)
                data = struct.unpack(">HHhhhhlh",val)
                print data

如果 slow down the displaying values,您的意思是删除额外的值,以便它们仅以 10Hz 的最大速率打印出来,那么您只需在每次打印值时跟踪时间。以下是非常粗略的,不会给你准确的 10Hz(它实际上会给你最大 10Hz)。您可以跟踪更长的时间历史以获得更接近 10Hz 的频率。

如果您不想丢失任何值,那么您将不得不更好地描述您的问题,因为如果您的数据生成速度快于 10Hz,并且您只能在10Hz,在某些时候你会 运行 缓冲数据的内存不足。

import serial
import struct
import time
#import csv
ser = serial.Serial("COM5",115200)
buffer = []
last_displayed = 0
while 1:
        val = ser.read(1)
        if (val == '\x7e'):
            val = ser.read(1)
            if (val == '\x5D'):
                val = ser.read(18)
                data = struct.unpack(">HHhhhhlh",val)
                cur_time = time.time()
                if cur_time - last_displayed >= .1:  # ~10Hz
                    print data
                    last_displayed = cur_time