feat(yrobot-panel): 实现电机控制上位机
完成 Rust/egui 上位机主流程:BLE/USB 传输、协议编解码、控制/实时/统计/CSV、UI 与验证脚本。\n\n保留真实设备联调和长稳实测清单,避免把未验证的硬件结果当成交付完成。
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
# Hardware Validation Checklist
|
||||
|
||||
Use this checklist with a real YRobot motor and USB Dongle before marking the project fully complete.
|
||||
|
||||
## Environment
|
||||
|
||||
- Windows 10+ machine.
|
||||
- Built executable: `target/x86_64-pc-windows-gnu/release/yrobot-motor-control-panel.exe`.
|
||||
- One YRobot BLE motor.
|
||||
- One USB Dongle and matching serial driver, if USB mode is being validated.
|
||||
|
||||
Record:
|
||||
|
||||
- App version/build time:
|
||||
- Windows version:
|
||||
- Motor identifier:
|
||||
- USB Dongle port:
|
||||
- Tester:
|
||||
- Date/time:
|
||||
|
||||
## BLE Direct Mode
|
||||
|
||||
1. Start the app and select `BLE`.
|
||||
2. Select `Left`, `Right`, or `Neutral`.
|
||||
3. Click `Scan / Refresh`.
|
||||
4. Confirm target device appears with name/ref/RSSI and preferred marker when applicable.
|
||||
5. Click `Stop Scan` and confirm discovery stops.
|
||||
6. Select the device and click `Connect BLE`.
|
||||
7. Confirm status becomes `Connected` only after BLE notify is ready.
|
||||
8. Keep the session open for at least 30 seconds and confirm no heartbeat error appears.
|
||||
9. Send:
|
||||
- Query Current
|
||||
- Query Mode
|
||||
- Set Params
|
||||
- Enable Realtime
|
||||
- Disable Realtime
|
||||
10. Confirm TX events and RX events appear in the event log.
|
||||
11. Confirm realtime samples appear in chart/status when debug stream is enabled.
|
||||
12. Click `Disconnect` and confirm connection closes and heartbeat stops.
|
||||
|
||||
Pass criteria:
|
||||
|
||||
- No app crash.
|
||||
- No stale scanning after stop/disconnect.
|
||||
- Commands are logged.
|
||||
- Realtime data parses without blocking valid fields.
|
||||
- Latest error is empty or explains any hardware/protocol issue.
|
||||
|
||||
## USB Dongle Mode
|
||||
|
||||
1. Start the app and select `USB Dongle`.
|
||||
2. Refresh ports and select the Dongle serial port.
|
||||
3. Click `Open USB`.
|
||||
4. Confirm status becomes `Connected` with `115200 8N1`.
|
||||
5. Keep the session open for at least 30 seconds and confirm heartbeat starts only after serial open.
|
||||
6. Send:
|
||||
- Query Current
|
||||
- Query Mode
|
||||
- Set Params
|
||||
- Enable Realtime
|
||||
- Disable Realtime
|
||||
7. Confirm USB RX events include `DEV`, `LEN`, `seq_id`, and `dt_ms`.
|
||||
8. Confirm USB statistics show:
|
||||
- seq gaps
|
||||
- out-of-order count
|
||||
- USB dt avg/max
|
||||
- host interval avg/max
|
||||
9. Disconnect and confirm serial resources are released.
|
||||
|
||||
Pass criteria:
|
||||
|
||||
- No app crash.
|
||||
- Serial open failure is shown as a recoverable error.
|
||||
- Downlink uses `DEV=0x31`.
|
||||
- Uplink strips `seq_id`/`dt_ms` before motor parser.
|
||||
- USB metadata is visible in event log/status/CSV.
|
||||
|
||||
## CSV Recording
|
||||
|
||||
1. Connect through BLE or USB.
|
||||
2. Set a writable CSV path.
|
||||
3. Start recording.
|
||||
4. Enable realtime debug and collect at least 100 samples.
|
||||
5. Stop recording.
|
||||
6. Open the CSV and confirm it contains:
|
||||
- timestamp
|
||||
- connection mode
|
||||
- target id
|
||||
- side
|
||||
- raw debug string
|
||||
- parsed current/velocity/position/voltage/temperature
|
||||
- USB `seq_id`/`dt_ms` for USB mode
|
||||
7. Repeat with recording active, then disconnect. Confirm CSV is flushed and readable.
|
||||
|
||||
Pass criteria:
|
||||
|
||||
- CSV is not created before recording starts.
|
||||
- CSV write errors are shown and recording stops.
|
||||
- Session end closes the file cleanly.
|
||||
|
||||
## Stability
|
||||
|
||||
Run one session for at least 1 hour before release, and 8 hours for final acceptance.
|
||||
|
||||
Record every 15 minutes:
|
||||
|
||||
- sample count
|
||||
- app memory usage
|
||||
- latest error
|
||||
- drop rate
|
||||
- USB seq gaps/out-of-order, if USB mode
|
||||
|
||||
Pass criteria:
|
||||
|
||||
- UI remains responsive.
|
||||
- Control, display, CSV, and statistics work concurrently.
|
||||
- No obvious memory growth above 100 MB over the acceptance run.
|
||||
- Disconnect closes scan/session/CSV resources.
|
||||
|
||||
## Result
|
||||
|
||||
- BLE Direct: Pass / Fail
|
||||
- USB Dongle: Pass / Fail
|
||||
- CSV Recording: Pass / Fail
|
||||
- Stability: Pass / Fail
|
||||
|
||||
Notes:
|
||||
|
||||
Reference in New Issue
Block a user