from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
from pyqtgraph.ptime import time
import serial
import time
from scipy.fftpack import fft as fp
from scipy.fftpack import fftfreq as fpf
global data_display
app = QtGui.QApplication([])
p = pg.plot()
p.setWindowTitle('live plot from serial')
curve = p.plot()
sampling_freq = 250
raw=serial.Serial("com1",baudrate=115200,bytesize=8,stopbits=1,timeout=1)
data_display = []
chunk_size=10# smaller chunk size = slower data
freqs = fpf(chunk_size)*sampling_freq
freq_index = np.arange(int(np.floor(chunk_size*800/sampling_freq)),int(np.ceil(chunk_size*1100/sampling_freq)+1))
power = []
def update():
global data_display,power
current_data = np.zeros(chunk_size,dtype=int)
for i in range(chunk_size):
current_data[i]=raw.readline()
# current_data=int(raw.readline()) # this makes it sloww
freq_sig = np.abs(fp(current_data)*2*np.pi/chunk_size)
power = np.append(power, np.sqrt(sum(freq_sig[freq_index]**2)))
curve.setData(power)
app.processEvents()
timer = QtCore.QTimer()
timer.start()
timer.timeout.connect(update)
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
对串口数据进行傅里叶变换(FFT)计算功率
于 2022-03-24 14:45:19 首次发布
本文介绍如何使用Python库如PyQtGraph和serial来从串口接收数据,并通过Fast Fourier Transform (FFT) 实时分析,展示数据频率特性。通过定时更新机制,实时显示数据功率变化。

2147

被折叠的 条评论
为什么被折叠?



