Сюжет в режиме реального времени с матплотлибом - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь отобразить данные в режиме реального времени, полученные из последовательного порта. Но когда я реализую это в то время как l oop, я получаю все что угодно, кроме реальных данных. Если я удаляю график в то время как l oop, в конце я получаю 1 график с правильными данными.

Есть ли способ получить график в реальном времени, возможно, реализовать буфер для данные ??

import time
import matplotlib.pyplot as plt
import serial
import numpy as np

def bytes_to_int(bytes):   # Change bytes to int
    result = 0
    for b in bytes:
        result = result * 256 + int(b)
    return result


ser = serial.Serial(port='COM11', baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, timeout=1)


#serial.Serial.write()
val_vol = []                         # Initialize arrays
val_time = []

n = 5000                             # n = samples
count = 0


while (count<=n):

    volx = ser.read()                # Read Serial value
    vol1x = bytes_to_int(volx)       # Change bytes to int
    print(vol1x)
    val_vol.append(vol1x)            # Add data to array
    val_time.append(time.clock())    # Get the time for each data value to plot (vol vs t)
    t1 = np.array(val_time)
    v1 = np.array(val_vol)

    plt.plot(val_vol)               # Plot data

    plt.show(block=False)           # Plot in real time
    count += 1                      # Add count of sample
    time.sleep(0.01)
    plt.pause(0.001)

plt.close(fig=None)                 # Close real time plot window
vol1 = np.array(val_vol) * 10       # Increase amplitude of values

temp_1 = np.ones(len(vol1))         # Temp var for line
val_vol=val_vol[2:]                 # Remove the 2 first values
list(map(lambda num:num*10,val_vol))
maxi = vol1.max()
mini = vol1.min()
amp = maxi - mini
veint = (0.1 * amp + mini) * temp_1
ochen = (0.9 * amp + mini) * temp_1
print(val_vol)
plt.plot(t1, veint)
plt.plot(t1, ochen)
plt.plot(t1, vol1)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...