0

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

4

0 回答 0