Direct response sweep: 16 frames x 1 cycles (16 total) on COM5 at 38400 8N1 BASELINE heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes 02:03:36.274 TX cycle=1 p1=0x00 p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 00 00 21 20 D0 8B 02:03:37.097 TX cycle=1 p1=0x01 p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 01 00 21 20 D0 8A 02:03:37.097 ANOMALY 29 RX bytes; first mismatch at byte 5: got 07, heartbeat offset 1 expected 00 02:03:37.097 RX raw 00 00 00 80 DA 07 80 48 24 9D 2C 07 80 48 24 9D 2C 07 80 48 24 9D 2C 07 80 48 24 9D 2C 02:03:37.921 TX cycle=1 p1=0x02 p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 02 00 21 20 D0 89 02:03:38.746 TX cycle=1 p1=0x03 p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 03 00 21 20 D0 88 02:03:39.570 TX cycle=1 p1=0x04 p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 04 00 21 20 D0 8F 02:03:40.396 TX cycle=1 p1=0x05 p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 05 00 21 20 D0 8E 02:03:41.218 TX cycle=1 p1=0x06 p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 06 00 21 20 D0 8D 02:03:42.040 TX cycle=1 p1=0x07 p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 07 00 21 20 D0 8C 02:03:42.863 TX cycle=1 p1=0x08 p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 08 00 21 20 D0 83 02:03:43.687 TX cycle=1 p1=0x09 p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 09 00 21 20 D0 82 02:03:44.508 TX cycle=1 p1=0x0A p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 0A 00 21 20 D0 81 02:03:45.330 TX cycle=1 p1=0x0B p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 0B 00 21 20 D0 80 02:03:46.151 TX cycle=1 p1=0x0C p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 0C 00 21 20 D0 87 02:03:46.976 TX cycle=1 p1=0x0D p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 0D 00 21 20 D0 86 02:03:47.799 TX cycle=1 p1=0x0E p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 0E 00 21 20 D0 85 02:03:48.621 TX cycle=1 p1=0x0F p2=0x00 cmd=0x21 state=0x20 value=0xD0 frame 006 0F 00 21 20 D0 84 FINAL heartbeat-compatible RX: 30 bytes, offset 0, 5 frames + 0 bytes Anomalies: 1