1. Python3.7 代码
import serial
import matplotlib.pyplot as plt
import numpy as np
import time
import re
import pdb
import datetime
import time
from scipy.fftpack import fft,ifft
from matplotlib.pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus']=False
try:
portx="COM6"
bps=115200
timex=0.5
serialport=serial.Serial(portx,bps,timeout=timex)
if serialport.isOpen():
print("open success")
print("串口详情参数:", serialport)
print(serialport.port)
print(serialport.baudrate)
else:
print("open failed")
plt.ion()
fig = plt.figure(1)
t = [0]
y = [0]
f = [0]
Fs = 10000
N = 1024
BYTES_NUM = N * 2
xmin1 = 0
xmax1 = 1200
ymin1 = 0
ymax1 = 4200
plt.subplot(2,1,1)
plt.xlabel('t')
plt.ylabel('AD')
plt.xlim(xmin1, xmax1)
plt.ylim(ymin1, ymax1)
plt.grid(True)
xmin2 = -100
xmax2 = Fs / 2 + 10
ymin2 = 0
ymax2 = 200
ax2 = plt.subplot(2,1,2)
plt.xlabel('Freq/Hz')
plt.ylabel('单边振幅谱(归一化)')
plt.xlim(xmin2, xmax2)
plt.ylim(ymin2, ymax2)
plt.grid(True)
count = 0
while True:
count = serialport.inWaiting()
if count == BYTES_NUM:
i = 0
while count > 0:
data = serialport.read(2)
data16 = int.from_bytes(data, byteorder='big', signed = False)
if count == BYTES_NUM:
i = 0
t = [0]
y = [data16]
else:
t.append(i)
y.append(data16)
i = i+1
count = count - 2
plt.subplot(2,1,1)
plt.cla()
plt.xlabel('t')
plt.ylabel('AD')
plt.xlim(xmin1, xmax1)
plt.ylim(ymin1, ymax1)
plt.grid(True)
plt.plot(t, y, '-g')
print(len(y))
print(y[0],y[1],y[2],y[N-3],y[N-2],y[N-1])
fft_y=fft(y)
abs_y=np.abs(fft_y)
normalization_y=abs_y/N
normalization_half_y = normalization_y[range(int(N/2))]
k = np.arange(N)
fx = k * Fs / N
half_fx = fx[range(int(N/2))]
print(len(abs_y))
print(abs_y[0],abs_y[1],abs_y[2],abs_y[N-3],abs_y[N-2],abs_y[N-1])
plt.subplot(2,1,2)
plt.cla()
plt.xlabel('Freq/Hz')
plt.ylabel('单边振幅谱(归一化)')
plt.xlim(xmin2, xmax2)
plt.ylim(ymin2, ymax2)
plt.grid(True)
plt.plot(half_fx,normalization_half_y,'-c')
plt.show()
plt.pause(0.001)
except Exception as e:
print("---异常---:",e)
- 仿真图
