2015-01-13 39 views
0

下面是從陀螺儀收集串行數據的Python代碼。打印的值是連續的實時數據。當我運行代碼時,從串口顯示的數據非常快。我想獲得10 Hz數據(減慢顯示值)。有人可以幫助我嗎?謝謝!!減緩Python中顯示的串行數據

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 

回答

0

如果slow down the displaying values,你的意思是多餘的下降值,所以它們只爲10Hz的最大速度打印出來,那麼你只需要跟蹤每次打印值的時間。以下是非常粗糙的,並不會給你準確的10Hz(它實際上會給你一個10赫茲的最大值)。您可以追蹤更長時間的歷史記錄以獲得更接近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 
+0

謝謝!這有幫助。 – Blossom