我正在使用 stm32f3 发现板来获取传感器测量值并通过 USART 将它们发送到 python GUI。usart 工作正常,也可以在 python 调试器中查看。但是,当我使用 plt 函数创建一个简单的图形来显示每个点时,usart 值不会改变。如果没有绘制 GUI 的 plt 函数,我可以从 USART 接收不同的值。
这是我的代码:
import serial
import time
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as anim
ser = serial.Serial(
port='COM3',
baudrate=115200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1000)
plt.show()
plt.ion()
print("connected to: " + ser.portstr)
count=1
while True:
line = ser.readline()
linenum = line.split(',')
[x.strip() for x in linenum]
del linenum[-1]
print(linenum)
count = count+1
if count > 2:
hour = int(linenum[0])
minute = int(linenum[1])
second = int(linenum[2])
subsecond = int(linenum[3])
ADC1_Averaged = int(linenum[4])
ADC2_Averaged = int(linenum[5])
ADC1_Der = int(linenum[6])
ADC2_Der = int(linenum[7])
ADC3_Averaged = int(linenum[8])
ADC4_Averaged = int(linenum[9])
plt.plot(count-3,ADC1_Averaged, 'bo')
time.pause
plt.draw()
ser.close()
我收到这样的字符串:
['8', '35', '11', '196', '196', '225', '0', '0', '182', '148']
来自 USART,其中前四个值是以小时、分钟、秒、毫秒为单位的时间,它们会随着时间的推移而变化。然而,其余的值是传感器测量值,它们将在 plt 函数中保持静态。如果没有 plt 功能,它们将随不同的传感器输入而变化。
我把它放在一个if
声明中,因为通常第一个readline
没有正确读取,而第二个计数 USART 能够发送所有值。