#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
-список целых чисел.