Skip to content

Usage

Interface Overview

Once the program starts, the screen is laid out top to bottom: the toolbar, the status bar, the main view (parameter list + time-series chart), and the bottom panel (HEX / Log / Raw Text).

[Port ▼] [⟳] [Baud ▼] [Connect]  |  [log path...] [Replay] [Speed (s)]  |  [Demo]  |  [TM ▼]  |  [📂][CSV path] [Export CSV]  |  [Save Raw TXT] [Clear DB]

● Connected  Frames OK: 0  Bad: 0  Dropped: 0  DB: 0 rows (0 KB)  FPS: —  Last: —

┌─────────────────────────┬──────────────────────────────────┐
│  Parameter value list    │  Category tabs + time-series      │
│  (left side)              │  chart (right side)               │
│  Name │ Value │ Unit      │  auto-generated from the          │
│  scrollable               │  currently loaded field table     │
│                          │  (only categories with real fields)│
└─────────────────────────┴──────────────────────────────────┘
┌─────────────────────────┬──────────────────────────────────┐
│  LAST FRAME (HEX)       │  LOG / Raw Text                  │
└─────────────────────────┴──────────────────────────────────┘

Three Data Sources, Pick One

1. Serial (real hardware)

  1. Choose a COM Port from [Port v] (the ⟳ next to it refreshes the list)
  2. Choose a baud rate from [Baud v] (must match the hardware side, default 115200)
  3. Click Connect

2. Demo mode (no hardware needed)

Click the toolbar's Demo button to test the whole interface with a built-in simulated waveform (sin + random noise); the packet Header/Footer are always correct, making it convenient for demos or getting familiar with the controls.

3. Replay mode (replay an existing log file)

  1. Type or choose the file path to replay in [log path...] (both text logs and pure binary packet files are supported; the format is auto-detected)
  2. Use the [Speed (s)] field to set the interval between packets in seconds; 0 means full-speed playback, adjustable live during playback
  3. Click Replay to start; playback stops automatically at the end of the file, and the Log area shows "Replay finished"

Only one source is ever active at a time: switching to any mode automatically stops the previous source.

Reading the Status Bar

● Connected  Frames OK: 0  Bad: 0  Dropped: 0  DB: 0 rows (0 KB)  FPS: —  Last: —
Field Meaning
● Connected / Disconnected whether a data source is currently active
Frames OK number of packets successfully decoded and validated
Bad number of packets that failed Header/Footer or length validation
Dropped number of packets dropped because processing couldn't keep up
DB number of records and size currently held in memory
Last time the last packet was received

Switching the TM Format (Packet Format)

The [TM v] dropdown switches which packet format is used for decoding:

  • Auto (default): automatically determined by each packet's actual length
  • Choosing a specific length: once locked, the left-side parameter list and right-side tabs only show that format's actual fields

Which options appear in the dropdown is generated automatically from the formats registered in C_packet_def.py; a new format automatically adds a new option.

Data Export and Recording

Button Description
📂 + Export CSV opens a save dialog to choose the CSV output path; can be switched anytime while running without interrupting writes
Save Raw TXT records the raw text received on the serial port line by line into a .txt file (the most original, undecoded format)
Clear DB clears the data and counters currently in memory (does not delete any saved CSV file)

CSV is appended to on every startup (never clears old data), encoded as utf-8-sig, and opens directly in Excel without garbled text.

Bottom Panel

  • LAST FRAME (HEX): the full HEX dump of the most recent packet
  • LOG: program activity messages (connections, errors, Replay status, etc.)
  • Raw Text: when the source is text format, shows the original, undecoded text lines

Chart Controls

The time-series chart on the right uses Plotly.js: drag with the mouse to zoom, hover to see values, and use the Points shown dropdown to display the most recent 50 / 100 / 200 / 500 points, or choose All to show everything. Click 🔓 Lock Axis to lock the current zoom range so the view doesn't automatically shift as new data arrives.