Desktop monitoring application for ABToolkit T210 solder station (STM32F103CB/C8T6).
Real-time temperature and power tracking via serial communication with dual-axis charting and responsive UI.
- Real-time Monitoring: Live temperature (
0-500°C) and power (0-100%) - Auto Baudrate Detection: Automatic serial baud detection (
9600→230400) - Dual-Axis Chart: Temperature + Power with 600-point rolling buffer
- Responsive UI: Optimized for floating window and fullscreen
- Status Mapping: Condition code mapping with color indicators
- Windows Desktop App: Packaged with Tauri (NSIS target)
The app reads CSV telemetry from serial stream.
actualTemp,setpoint,power,status,buzzer,standbyState,standbyTimer| Field | Type | Normal Range | Unit | Notes |
|---|---|---|---|---|
actualTemp |
float | 0-500 | °C | Actual measured temperature |
setpoint |
float | 0-500 | °C | Target setpoint (shown in gauge) |
power |
float | 0-100 | % | Heater power / PWM duty |
status |
int | 0,1,2,10,11,12 | — | Device condition code |
buzzer |
int | 0/1 | — | Buzzer state |
standbyState |
int | 0/1 | — | Standby state |
standbyTimer |
int | 0-300 | s | Standby countdown timer |
Telemetry parser is backward-compatible with older firmware payloads.
- If MCU sends fewer fields (e.g. 6 fields), app still parses available values.
- Missing trailing fields are treated as
null. - UI renders missing values as placeholder (
--/-- s) instead of crashing. - Chart updates only when required values (
actualTemp,power) are valid numbers.
This allows schema expansion by appending new fields at the end without breaking older MCU builds.
| Code | Condition | UI Display | Meaning |
|---|---|---|---|
0 |
CONDITION_SLEEP |
Sleep | Heater off / sleep mode |
1 |
CONDITION_STANDBY |
Standby | Waiting standby timeout |
2 |
CONDITION_RUN |
Running | Normal heating mode |
10 |
CONDITION_ERR_SENSOR |
Error: Sensor | Sensor reading invalid/fault |
11 |
CONDITION_ERR_OVERHEAT |
Error: Overheat | Temperature too high (>500°C) |
12 |
CONDITION_ERR_NO_HEAT |
Error: No Heat | Heater not increasing temperature |
- Node.js 18+
- Rust stable toolchain
- Windows environment (current package target: NSIS)
npm install
npm run tauri devnpm run checknpm run tauri buildOutput artifacts (located in src-tauri/target/release/bundle/):
nsis/T210 Connect_{version}_x64-setup.exe— Windows installert210-connect.exe— Standalone executable
Note:
{version}is taken frompackage.jsonat build time.
The single source of truth for the app version is package.json.
# Automatic — updates all files:
npm version patch # 0.1.0 → 0.1.1
npm version minor # 0.1.0 → 0.2.0
npm version major # 0.1.0 → 1.0.0
# Or specify an exact version:
npm version 0.2.0After npm version finishes, the postversion hook automatically runs node scripts/sync-version.js, which syncs the version to:
| File | Role |
|---|---|
package.json |
Single source of truth |
src-tauri/tauri.conf.json |
Tauri app config (runtime version) |
src-tauri/Cargo.toml |
Rust crate version |
npm run version:syncT210 Connect/
├── package.json # Node deps + version source of truth
├── scripts/
│ └── sync-version.js # Version sync script
├── src/ # SvelteKit frontend
│ ├── app.html # HTML shell
│ ├── global.d.ts # Global type declarations
│ ├── lib/ # Shared components / assets
│ └── routes/
│ └── +page.svelte # Main UI (single-page)
├── src-tauri/ # Tauri / Rust backend
│ ├── Cargo.toml # Rust deps + version
│ ├── tauri.conf.json # Tauri config + version
│ └── src/
│ └── lib.rs # Serial port logic + Tauri commands
├── static/ # Static assets (icons, fonts)
└── LICENSE
Current app icon files are stored in:
src-tauri/icons/32x32.pngsrc-tauri/icons/128x128.pngsrc-tauri/icons/256x256.pngsrc-tauri/icons/favicon.ico
This project is licensed under the MIT License.
See LICENSE for full legal terms.
- SvelteKit 5 + TypeScript + Vite
- Tauri 2 (Rust backend)
serialportcrateuPlotcharting