Direct response sweep: 4 frames x 1 cycles (4 total) on COM5 at 38400 8N1
BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
00:58:57.555  TX cycle=1 p1=0x00 p2=0x00 cmd=0x00 state=0x20 value=0xD0 frame 006  00 00 00 20 D0 AA
00:58:58.561  TX cycle=1 p1=0x00 p2=0x00 cmd=0x01 state=0x20 value=0xD0 frame 006  00 00 01 20 D0 AB
00:58:58.561  ANOMALY 30 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 3 expected 00
00:58:58.561  RX raw 07 80 40 24 DD 64 07 80 40 24 DD 64 07 80 40 24 DD 64 07 80 40 24 DD 64 07 80 40 24 DD 64
00:59:07.296  TX cycle=1 p1=0x00 p2=0x00 cmd=0x02 state=0x20 value=0xD0 frame 006  00 00 02 20 D0 A8
00:59:08.302  TX cycle=1 p1=0x00 p2=0x00 cmd=0x03 state=0x20 value=0xD0 frame 006  00 00 03 20 D0 A9
00:59:08.302  ANOMALY 18 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00
00:59:08.302  RX raw 07 80 20 12 97 78 00 00 00 00 80 DA 00 00 00 00 80 DA
FINAL heartbeat-compatible RX: 7 bytes, offset 0, 1 frames + 1 bytes
Anomalies: 2
