Direct response sweep: 16 frames x 1 cycles (16 total) on COM5 at 38400 8N1
BASELINE heartbeat-compatible RX: 24 bytes, offset 0, 4 frames + 0 bytes
02:03:02.116  TX cycle=1 p1=0x00 p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006  00 00 21 20 D0 8B
02:03:02.938  TX cycle=1 p1=0x00 p2=0x01 cmd=0x21 state=0x20 value=0xD0 frame 006  00 01 21 20 D0 8A
02:03:02.938  ANOMALY 24 RX bytes; first mismatch at byte 0: got 07, heartbeat offset 0 expected 00
02:03:02.938  RX raw 07 40 24 12 9D B6 07 40 24 12 9D B6 07 40 24 12 9D B6 07 40 24 12 9D B6
02:03:03.763  TX cycle=1 p1=0x00 p2=0x02 cmd=0x21 state=0x20 value=0xD0 frame 006  00 02 21 20 D0 89
02:03:04.586  TX cycle=1 p1=0x00 p2=0x03 cmd=0x21 state=0x20 value=0xD0 frame 006  00 03 21 20 D0 88
02:03:05.407  TX cycle=1 p1=0x00 p2=0x04 cmd=0x21 state=0x20 value=0xD0 frame 006  00 04 21 20 D0 8F
02:03:06.228  TX cycle=1 p1=0x00 p2=0x05 cmd=0x21 state=0x20 value=0xD0 frame 006  00 05 21 20 D0 8E
02:03:07.049  TX cycle=1 p1=0x00 p2=0x06 cmd=0x21 state=0x20 value=0xD0 frame 006  00 06 21 20 D0 8D
02:03:07.871  TX cycle=1 p1=0x00 p2=0x07 cmd=0x21 state=0x20 value=0xD0 frame 006  00 07 21 20 D0 8C
02:03:08.692  TX cycle=1 p1=0x00 p2=0x08 cmd=0x21 state=0x20 value=0xD0 frame 006  00 08 21 20 D0 83
02:03:09.513  TX cycle=1 p1=0x00 p2=0x09 cmd=0x21 state=0x20 value=0xD0 frame 006  00 09 21 20 D0 82
02:03:10.334  TX cycle=1 p1=0x00 p2=0x0A cmd=0x21 state=0x20 value=0xD0 frame 006  00 0A 21 20 D0 81
02:03:11.154  TX cycle=1 p1=0x00 p2=0x0B cmd=0x21 state=0x20 value=0xD0 frame 006  00 0B 21 20 D0 80
02:03:11.981  TX cycle=1 p1=0x00 p2=0x0C cmd=0x21 state=0x20 value=0xD0 frame 006  00 0C 21 20 D0 87
02:03:12.804  TX cycle=1 p1=0x00 p2=0x0D cmd=0x21 state=0x20 value=0xD0 frame 006  00 0D 21 20 D0 86
02:03:13.628  TX cycle=1 p1=0x00 p2=0x0E cmd=0x21 state=0x20 value=0xD0 frame 006  00 0E 21 20 D0 85
02:03:14.451  TX cycle=1 p1=0x00 p2=0x0F cmd=0x21 state=0x20 value=0xD0 frame 006  00 0F 21 20 D0 84
FINAL heartbeat-compatible RX: 18 bytes, offset 0, 3 frames + 0 bytes
Anomalies: 1
