Не получается Streaming опросника modbus с построением графика в реальном времени
Прилагаю код самого опросника:
from pymodbus.constants import Endian # для перевода во float32
from pymodbus.payload import BinaryPayloadDecoder # для перевода во float32
from pymodbus.payload import BinaryPayloadBuilder # для перевода во float32
from pymodbus.client.sync import ModbusSerialClient # для опроса по Modbus
import datetime
import csv
import time
from time import sleep
client = ModbusSerialClient(
method='rtu',
port='COM9',
baudrate=9600, # настройки порта
timeout=2,
parity='N',
stopbits=1,
bytesize=8
)
connection = client.connect()
while True:
#for _ in range(60):
request = client.read_holding_registers(address=0x3E, count=2, unit=16) # опрос региста , колво регистров, алрес устройства
result = request.registers
decoder = BinaryPayloadDecoder.fromRegisters(result, Endian.Big)
today = datetime.datetime.today()
time1 = today.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
ch1 = decoder.decode_32bit_float()
with open(r"C:\py3\datamodbus3_ch1.csv", mode="a", encoding='utf-8') as a_file:
file_writer = csv.writer(a_file, delimiter = ",", lineterminator="\n")
file_writer.writerow(["{:6f}".format(ch1), time1])
time.sleep(1 - time.time() % 1)
client.close()
пытался из под Jupyter notebook подключить
import hvplot.streamz # noqa
import pandas as pd
import numpy as np
import hvplot.pandas # noqa
from hvplot import hvPlot
import holoviews as hv
from streamz import Stream
from streamz.dataframe import DataFrame
hv.extension('bokeh')
и запустить stream так:
df = pd.DataFrame(ch1, time1)
df.head()
- не получилось. нужна помощь.