Python GUI,UART输入不变,stm32f3

时间:2015-11-10 22:42:17

标签: python matplotlib pyserial stm32 usart

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

0 个答案:

没有答案