Render memory map from dump log
This commit is contained in:
parent
0ee53a73ea
commit
7e95fd4074
4 changed files with 247 additions and 16 deletions
|
@ -1,12 +1,19 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from typing import Iterable
|
from ast import literal_eval
|
||||||
|
from typing import Iterable, List
|
||||||
|
|
||||||
|
from solar_ble import parse_packet
|
||||||
from table_drawing import table
|
from table_drawing import table
|
||||||
|
|
||||||
|
|
||||||
def memory_table(data: Iterable[int], start: int = 0, wordsize: int = 2):
|
def memory_table(
|
||||||
|
data: Iterable[int],
|
||||||
|
start: int = 0,
|
||||||
|
wordsize: int = 2,
|
||||||
|
skip_nullrows: bool = True,
|
||||||
|
):
|
||||||
data_iter = iter(data)
|
data_iter = iter(data)
|
||||||
data_rows = []
|
data_rows: List[List[str]] = []
|
||||||
position = start
|
position = start
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
|
@ -17,19 +24,30 @@ def memory_table(data: Iterable[int], start: int = 0, wordsize: int = 2):
|
||||||
try:
|
try:
|
||||||
cell = []
|
cell = []
|
||||||
for _ in range(wordsize):
|
for _ in range(wordsize):
|
||||||
d = data_iter.__next__() & 0xFF
|
d = data_iter.__next__()
|
||||||
cell.append(d)
|
cell.append(d)
|
||||||
position += 1
|
|
||||||
finally:
|
finally:
|
||||||
if cell:
|
if cell:
|
||||||
|
position += 1
|
||||||
row.append(cell)
|
row.append(cell)
|
||||||
finally:
|
finally:
|
||||||
if row:
|
if row:
|
||||||
row_hex = [" ".join([f"{n:02X}" for n in cell]) for cell in row]
|
if skip_nullrows:
|
||||||
|
is_null = not any([any(cell) for cell in row])
|
||||||
|
if is_null:
|
||||||
|
if data_rows[-1]:
|
||||||
|
data_rows.append([])
|
||||||
|
continue
|
||||||
|
row_hex = [
|
||||||
|
" ".join([f"{n:02X}" if n is not None else " " for n in cell])
|
||||||
|
for cell in row
|
||||||
|
]
|
||||||
row_ascii = [
|
row_ascii = [
|
||||||
" ".join(
|
" ".join(
|
||||||
[
|
[
|
||||||
" " + chr(n) if chr(n).isprintable() else " "
|
" " + chr(n)
|
||||||
|
if n is not None and chr(n).isprintable()
|
||||||
|
else " "
|
||||||
for n in cell
|
for n in cell
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
@ -49,14 +67,52 @@ def memory_table(data: Iterable[int], start: int = 0, wordsize: int = 2):
|
||||||
data_rows,
|
data_rows,
|
||||||
headers=headers,
|
headers=headers,
|
||||||
justify="^",
|
justify="^",
|
||||||
header_interval=8 * 2,
|
# header_interval=8 * 2,
|
||||||
|
collapse_empty=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
data = list(range(256))
|
def parse_log(fh, chunksize=32):
|
||||||
|
# address = None
|
||||||
|
for line in fh.readlines():
|
||||||
|
if " " not in line:
|
||||||
|
continue
|
||||||
|
|
||||||
|
date, time, text = line.strip().split(" ", 2)
|
||||||
|
|
||||||
|
if text.startswith("Reading"):
|
||||||
|
_, addr_txt = text.split(" ")
|
||||||
|
# address = int(addr_txt.strip("."), 16)
|
||||||
|
|
||||||
|
elif text.startswith("bytearray"):
|
||||||
|
data_txt: str = text.split("(", 1)[1].strip(")")
|
||||||
|
packet = literal_eval(data_txt)
|
||||||
|
# print(address, packet)
|
||||||
|
|
||||||
|
data = parse_packet(packet)
|
||||||
|
dlen = len(data)
|
||||||
|
for i in range(chunksize):
|
||||||
|
if i < dlen:
|
||||||
|
yield data[i]
|
||||||
|
else:
|
||||||
|
yield None
|
||||||
|
|
||||||
|
|
||||||
print(memory_table(data, wordsize=1))
|
with open("z_solar copy.log") as fh:
|
||||||
|
data = list(parse_log(fh))
|
||||||
|
# print(data)
|
||||||
|
|
||||||
|
# data = list(range(256))
|
||||||
|
|
||||||
|
|
||||||
|
print(
|
||||||
|
memory_table(
|
||||||
|
data,
|
||||||
|
wordsize=2,
|
||||||
|
skip_nullrows=True,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# rows = [[f"{x:03X}·"] for x in range(32)]
|
# rows = [[f"{x:03X}·"] for x in range(32)]
|
||||||
|
|
152
memory_dump.txt
Normal file
152
memory_dump.txt
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
┌────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
|
||||||
|
│ │ ···0│ ···1│ ···2│ ···3│ ···4│ ···5│ ···6│ ···7│ ···8│ ···9│ ···A│ ···B│ ···C│ ···D│ ···E│ ···F│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│000·│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│18 14│14 00│20 20│20 20│4D 4C│32 34│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ M L│ 2 4│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│001·│32 30│20 20│20 20│20 20│00 04│02 00│02 00│00 03│3C 13│02 67│00 01│00 00│00 00│03 09│00 14│06 0A│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ 2 0│ │ │ │ │ │ │ │ < │ g│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│002·│00 02│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│003·│00 00│00 00│00 00│00 00│00 00│00 31│00 32│00 33│00 34│00 35│00 36│00 37│00 38│00 39│00 3A│00 3B│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ │ │ │ │ 1│ 2│ 3│ 4│ 5│ 6│ 7│ 8│ 9│ :│ ;│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│004·│00 3C│00 3D│00 3E│00 3F│00 40│00 41│00 42│00 43│00 44│00 53│00 6F│00 6C│00 61│00 72│00 20│00 43│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ <│ =│ >│ ?│ @│ A│ B│ C│ D│ S│ o│ l│ a│ r│ │ C│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│005·│00 68│00 61│00 72│00 67│00 65│00 72│00 20│00 20│00 20│00 00│00 00│00 00│00 00│00 00│00 00│00 00│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ h│ a│ r│ g│ e│ r│ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│010·│00 39│00 7B│00 00│05 05│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 7B│00 7B│00 36│00 00│00 06│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ 9│ {│ │ │ │ │ │ │ │ │ │ {│ {│ 6│ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│011·│00 00│00 02│00 00│00 19│00 00│00 04│00 00│00 00│00 00│00 05│00 00│00 00│00 00│00 3E│00 00│00 00│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ >│ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│DF0·│00 01│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│DF2·│44 44│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ D D│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│DF4·│00 00│00 00│00 00│00 00│00 00│00 00│00 00│44 44│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ │ │ │ │ │ │ D D│ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│E00·│00 00│07 D0│00 C8│FF 0C│00 02│00 A0│00 9B│00 92│00 90│00 8A│00 84│00 7E│00 78│00 6F│00 6A│64 32│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ Ð│ È│ ÿ │ │ │ │ │ │ │ │ ~│ x│ o│ j│ d 2│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│E01·│00 05│00 78│00 78│00 1E│00 03│00 41│00 A3│00 4B│00 A3│00 00│00 00│00 00│00 00│00 0F│00 05│00 05│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ x│ x│ │ │ A│ £│ K│ £│ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│E02·│00 04│01 00│00 00│00 01│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│E30·│66 66│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│00 00│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ f f│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│E31·│00 00│00 00│00 00│00 64│00 32│00 64│00 32│00 3C│00 05│00 C8│00 02│02 BC│00 0A│03 84│03 84│02 58│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ │ │ d│ 2│ d│ 2│ <│ │ È│ │ ¼│ │ │ │ X│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│E32·│00 14│00 60│00 00│00 00│00 00│00 00│00 00│00 00│00 01│66 66│00 00│00 00│00 00│00 00│00 00│00 00│
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ │ `│ │ │ │ │ │ │ │ f f│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│F00·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│F10·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│F20·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│F30·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│F40·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│F50·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│F60·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│F70·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│F80·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│F90·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│FA0·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│FB0·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│FC0·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│FD0·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│FE0·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│FF0·│00 7B│00 7B│00 36│00 00│00 06│00 00│00 02│00 00│00 19│00 00│ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
│ │ {│ {│ 6│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||||
|
├────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
|
||||||
|
└────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
|
20
solar_ble.py
20
solar_ble.py
|
@ -250,6 +250,26 @@ def log(string: str):
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
|
||||||
|
def parse_packet(data):
|
||||||
|
tag, operation, size = struct.unpack_from("BBB", data)
|
||||||
|
_unpacked = struct.unpack_from(f"<{size}BH", data, offset=3)
|
||||||
|
crc = _unpacked[-1]
|
||||||
|
payload = _unpacked[:-1]
|
||||||
|
calculated_crc = modbus(bytes([tag, operation, size, *payload]))
|
||||||
|
|
||||||
|
if crc != calculated_crc:
|
||||||
|
e = ValueError(f"CRC missmatch: expected {crc:04X}, got {calculated_crc:04X}.")
|
||||||
|
e.tag = tag
|
||||||
|
e.operation = operation
|
||||||
|
e.size = size
|
||||||
|
e.payload = payload
|
||||||
|
e.crc = crc
|
||||||
|
e.calculated_crc = calculated_crc
|
||||||
|
raise e
|
||||||
|
|
||||||
|
return payload
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
dlgt = Delegate()
|
dlgt = Delegate()
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ def table(
|
||||||
headers: Optional[Collection] = None,
|
headers: Optional[Collection] = None,
|
||||||
header_interval: Optional[int] = None,
|
header_interval: Optional[int] = None,
|
||||||
justify: Optional[Union[str, Collection[str]]] = None,
|
justify: Optional[Union[str, Collection[str]]] = None,
|
||||||
|
collapse_empty: bool = False,
|
||||||
):
|
):
|
||||||
res = []
|
res = []
|
||||||
|
|
||||||
|
@ -87,6 +88,8 @@ def table(
|
||||||
res.append(
|
res.append(
|
||||||
row([C_H * colw for colw in colwidths], start=C_VL, sep=C_X, end=C_VR)
|
row([C_H * colw for colw in colwidths], start=C_VL, sep=C_X, end=C_VR)
|
||||||
)
|
)
|
||||||
|
is_empty = not any([True for x in data_row if x.strip()])
|
||||||
|
if not (is_empty and collapse_empty):
|
||||||
padding = [""] * (columns - len(data_row))
|
padding = [""] * (columns - len(data_row))
|
||||||
padded_row = [
|
padded_row = [
|
||||||
f"{cell:{justify[j]}{colwidths[j]}s}"
|
f"{cell:{justify[j]}{colwidths[j]}s}"
|
||||||
|
|
Loading…
Reference in a new issue