разделите данные столбца для живого csv-файла графика

#python #arrays #python-3.x #csv #matplotlib

Вопрос:

привет, я хочу построить CSV-файл, который обновляется каждые 20 мс, это формат каждой строки данных

 dateamp;time,b'aabbccddee',""
 

это реальный пример данных

 2021-03-06 20:32:36.535797,b'xffxfdx80xa6xc7x7fx81xbd2xfb~xfaxffxfe',""
 

Я хочу, чтобы построить этот файл
X-это дата и время,
У1-первый и второй шестнадцатеричных данных в столбце 2,
У2-это 3-й и 4-й шестнадцатеричных данных в столбце 2,
У3 5-й и 6-й Hex в столбце 2,
У4 находится на 7-м и 8-м Hex в столбце 2,
У5-9-й и 10-й Hex в столбце 2,
но я не знаю, как читать наговор данные в столбце 2

 import matplotlib.pyplot as plt
import matplotlib.animation as animation
import matplotlib.dates as matdate
from matplotlib import style
import time
import datetime as dt
import csv

style.use('bmh')


fig = plt.figure()
ax = fig.add_subplot(1,1,1)


def animate(i):
   csvfile = open( '/home/pi/Desktop/data/a.csv', 'r ')       
   alphasensefile = csv.reader(csvfile, delimiter = ',')
   next(alphasensefile, None)
   next(alphasensefile, None)
   next(alphasensefile, None)

   x=[] ; y1=[]; y2=[]; y3=[];y4=[];y5=[]

   for column in alphasensefile:
    a=column[2]
    x.append(column[1])
    y1.append(a[1] a[2]
    y2.append(a[3] a[4])
    y3.append(a[5] a[6])
    y4.append(a[7] a[8])
    y5.append(a[9] a[10])

    ax.clear()
    ax.plot(x, y1, label = 'PM 1 ', linewidth=0.7)
    ax.plot(x, y2, label = 'PM 2 ', linewidth=0.7)
    ax.plot(x, y3, label = 'PM 3 ', linewidth=0.7)
    ax.plot(x, y4, label = 'PM 4 ', linewidth=0.7)
    ax.plot(x, y5, label = 'PM 5 ', linewidth=0.7)

 ani = animation.FuncAnimation(fig, animate, interval=1000)

 plt.show()
 

Комментарии:

1. Предполагается, что эта шестнадцатеричная строка представляет собой серию 16-разрядных целых чисел? Если это так, вы можете сделать import array / decode = array('H') / decode.frombytes(column[1]) , а затем decode -список целых чисел.