Co všechno tento test obsahuje?
adresa data v číselné formě
0x00 xx xx 0b 80 0c 32 0b 00
adresa data v číselné formě v ASCII
0x00 01 3C 01 02 A8 08 29 81 54 65 6D 70 65 72 61 74 .<....).Temperat
0x10 75 72 65 00 00 00 00 00 00 00 00 00 54 65 6D 70 ure.........Temp
0x20 00 00 00 00 00 00 00 00 01 45 0A 01 00 00 80 3F .........E.....?
0x30 00 00 80 3F B4 00 00 00 01 0E 01 00 00 90 C1 00 ...?............
0x40 00 DC 42 0D 03 00 00 00 90 C1 D4 9B 5E 42 00 00 ..B.........^B..
0x50 00 00 28 B0 43 29 00 00 00 00 00 90 C1 D4 9B 5E ..(.C).........^
0x60 42 00 00 00 00 28 B0 43 29 00 00 00 00 00 90 C1 B....(.C).......
0x70 D4 9B 5E 42 00 00 00 00 28 B0 43 29 00 00 00 92 ..^B....(.C)....
Zdá se, že se výpis nijak neliší od prvního pokusu tohoto testu, tudíž jsem tento druhý pokus provedl úplně zbytečně. Myslel jsem si, že jsem ztratil všechna data z toho prvního pokusu, proto jsem ho provedl podruhé, ale mýlil jsem se.
Aby tento dokument nebyl úplně zbytečný, poskytuji zde zdrojový kód programu napsaný v Pythonu, který dokáže z .pcapng souborů extrahovat data paměti EEPROM inteligentního čidla:
import sys, pcapng
f = open(sys.argv[1], "rb")
scanner = pcapng.FileScanner(f)
def printf(fmt, *args):
print(fmt % (args), end = "")
eeprom_blocks = [None] * 128
scanning = 0
for block in scanner:
if isinstance(block, pcapng.blocks.EnhancedPacket):
if block.packet_len == 128:
if block._raw[0x54 + 2] == 1:
printf("Nalezen výpis EEPROM:")
scanning = 1
eeprom_blocks[scanning] = block
if scanning > 0:
scanning += 1
if scanning == 128:
scanning = 0
for y in range(8):
printf("\n0x%02X ", y * 16)
for x in range(16):
printf("%02X ", eeprom_blocks[x + y * 16]._raw[0x54 + 1])
for x in range(16):
val = eeprom_blocks[x + y * 16]._raw[0x54 + 1]
if val >= 0x20 and val < 0x7F:
printf("%c", val)
else:
printf(".")
printf("\n\n")
Tento program ke správné funkci potřebuje modul python-pcapng.
4th_test_att_2.pcapng - soubor záznamu z Wiresharku
4th_test_att_2.mkv - videozáznam
manual_016i.pdf - manuál k teploměru 016i (stažený od CMA)