减慢 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
下面是从陀螺仪收集串行数据的 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