我正在使用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能够发送所有值。