Loading 3D model… large boards can take a moment.
Fuel Injection Test Bench
The repository now includes a PySide6 desktop client in desktop_app with four explicit layers:
ui.py: Qt widgets only. It renders immutable view state and forwards user intent.transport.py: Serial I/O only. It owns backend selection, OS-specific serial behavior, line delivery, and protocol event emission.protocol.py: Firmware command builders and response parsers for HELP, STATUS, VERSION, MODEL, SET, START, RUN, STOP, STARTALL, and STOPALL.state.py: Application controller and immutable app state. Selected channels are stored as a 4-bit mask for future grouped operations.The desktop client is organized as a normal Python package with:
python -m entry point: desktop_app/main.pyPyInstaller packaging is intentionally deferred until the grouped-command workflow is stable. Until then, the focus is keeping runtime behavior and serial semantics correct.
Grouped selected-channel command semantics are defined as follows: Start Selected and Run Selected initialize all selected outputs from the inactive phase and apply timing state together as part of one command handling path. This is the operator-visible meaning of grouped selected-channel actions once mask commands are used end-to-end.
The desktop GUI now exposes two operator-facing test modes:
All: all checked channels receive the current configuration and run together for the requested pulse count.Sequential: the GUI runs checked channels one at a time for counted-pulse tests, advancing automatically after each channel finishes.Default desktop behavior:
Sequential is the default test mode.1.0 s.The desktop GUI now uses a 3-step wizard:
Connection: choose a serial port, connect, and verify communication with the controller.Test Type: select Simple or Advanced, then configure only the controls for the selected mode.Execute: start or cancel the test and monitor progress and channel state.Connection requirements:
Next remains disabled until the controller is connected and connection verification succeeds.VERSION response and a STATUS response from the controller.Test configuration:
Simple reuses the basic counted-test inputs for model, RPM, duty, and pulse count.Advanced reuses the calculated test setup with derived duty cycle and pulse count.Test Mode still controls whether checked channels run together (All) or one at a time (Sequential).Execution page:
Start Test applies the selected mode's settings to the checked channels and starts the run.Cancel calls the global stop action and stops all channels immediately.Navigation rules:
test_progress.active is true.Install dependencies:
python -m pip install -e .
Start the desktop app:
python -m desktop_app
Or, after installation:
injector-tester
By default the UI points at /dev/ttyACM0; change the port in the connection bar as needed.
No comments yet. Be the first to ask about this board.