9a593e4ff26a24c75ed8888d5ba2c1640a7a5a99
Phase 2 TestUnlock handshake was synchronous (Thread.Sleep x 8 = 4 s) and the continuation after Phase 1 marshalled back to the WPF dispatcher via the captured SynchronizationContext, so the eight 500 ms sleeps froze the UI right before unlock completed. - UnlockService.RunTestUnlockSequence -> async RunTestUnlockSequenceAsync with Task.Delay(500, ct) and ConfigureAwait(false) - Add ConfigureAwait(false) on every internal await in UnlockService so continuations no longer hop to the UI thread (Task.WhenAll, Task.Delay, connectedTcs, TryFastUnlockAsync, fast-unlock settle delay) - CancellationToken now propagates through Phase 2, so the snackbar Cancel button can interrupt the handshake within 500 ms instead of waiting out all eight Thread.Sleeps Includes the companion observer in IUnlockService / UnlockService (PumpUnlocked event, IsPumpUnlocked, StartObserver/StopObserver) that the Phase 1 wait now races against — lets any source of unlock (fast unlock, external manual, CAN flood finally working) short-circuit the 600 s timer as soon as the CAN TestUnlock parameter confirms it. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
HC_APTBS
WPF desktop application for controlling a VP44 diesel injection pump test bench.
Features
- CAN bus communication — reads/writes bench sensors (temperature, RPM, flow) via PCAN-Basic at 500 kbps
- K-Line / KWP2000 — communicates with the VP44 pump ECU via FTDI USB adapter at 9600 bps
- Automated test sequences — runs multi-phase tests with PID temperature control
- PDF reports — generates test result reports with QuestPDF
Requirements
- Windows 10/11 (x64)
- .NET 10 SDK (version pinned in
global.json) - Hardware: PCAN-USB adapter, FTDI USB-to-serial adapter
Build
dotnet build -r win-x64
Native DLLs (PCANBasic.dll, ftd2xx.dll) are bundled in Resources/Native/ and copied to output automatically.
Stack
| Layer | Technology |
|---|---|
| UI | WPF / XAML |
| MVVM | CommunityToolkit.Mvvm |
| DI | Microsoft.Extensions.DependencyInjection |
| Charts | LiveCharts2 (SkiaSharp) |
| QuestPDF 2025.3.2 | |
| CAN | PCAN-Basic (P/Invoke) |
| K-Line | FTDI D2XX (P/Invoke) |
Project Structure
Infrastructure/
Pcan/ — CAN bus adapter, OEM legitimation, sensor decoding
Kwp/ — FTDI interface, KWP/KW1281 protocol, 5-baud slow-init
Logging/ — Daily rotating log files
Services/Impl/ — Test orchestration, KWP operations, config persistence, PDF
ViewModels/ — MVVM view models (ObservableProperty / RelayCommand)
Views/ — Pure XAML views
Models/ — Domain models and test definitions
Description
Languages
C#
98.7%
PowerShell
0.8%
Python
0.5%