降低Python中显示的串行数据的速度

降低Python中显示的串行数据的速度,python,serialization,gyroscope,Python,Serialization,Gyroscope,下面是从陀螺仪收集串行数据的python代码。打印的值是连续的实时数据。当我运行代码时,从串行端口显示的数据非常快。我想得到10赫兹的数据(减慢显示值)。有人能帮我吗?谢谢 import serial import struct #import csv ser = serial.Serial("COM5",115200) buffer = [] while 1: val = ser.read(1) if (val == '\x7e'): v

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

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

如果通过
减慢显示值的速度
,您的意思是删除额外的值,以便它们仅以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