update sensor bench
This commit is contained in:
+81
-11
@@ -1,6 +1,9 @@
|
||||
# Sensor Bench EXE Build
|
||||
|
||||
This folder contains the Windows PyInstaller build setup for Sensor Bench.
|
||||
This folder contains Windows PyInstaller build setups for:
|
||||
|
||||
- **Public** exhibition app → `dist/SensorBench/`
|
||||
- **Private** operator app → `dist/SensorBenchOperator/` (internal use only)
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -9,7 +12,8 @@ This folder contains the Windows PyInstaller build setup for Sensor Bench.
|
||||
- Python 3.10 build environment
|
||||
- Internet access to install `orisys` from PyPI
|
||||
|
||||
The build installs `orisys` from PyPI. Do not use `PYTHONPATH` or an editable `orisys-sdk` checkout for release builds.
|
||||
The build installs `orisys` from PyPI. Do not use `PYTHONPATH` or an editable
|
||||
`orisys-sdk` checkout for release builds.
|
||||
|
||||
## Build
|
||||
|
||||
@@ -20,7 +24,8 @@ From the repository root (cmd or PowerShell):
|
||||
.\build\build_exe.bat
|
||||
```
|
||||
|
||||
The `.bat` wrappers bypass the local PowerShell execution policy. If you prefer calling PowerShell directly:
|
||||
The `.bat` wrappers bypass the local PowerShell execution policy. If you prefer
|
||||
calling PowerShell directly:
|
||||
|
||||
```bat
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File .\build\create_env.ps1
|
||||
@@ -33,7 +38,23 @@ Output:
|
||||
dist/SensorBench/SensorBench.exe
|
||||
```
|
||||
|
||||
The build is `onedir` rather than `onefile` so startup is faster and bundled DLL/resource issues are easier to diagnose.
|
||||
After installing/upgrading `orisys`, the build syncs wheel sensor `*.json` into
|
||||
repo `config/` via `build/sync_wheel_configs.py` (for example `ddjx01.json`)
|
||||
before PyInstaller, never touching `locales/`. The helper reads from the
|
||||
installed wheel's bundled `orisys/configs/` directory instead of
|
||||
`orisys.configs.CONFIG_DIR`, which can point at the repo's local `config/`
|
||||
during builds. PyInstaller bundles that `config/`, then the script copies repo
|
||||
`config/` beside the EXE so operators can edit sensor JSON and locales.
|
||||
|
||||
The public build intentionally excludes:
|
||||
|
||||
- `internal/` (private operator UI)
|
||||
- `steps/` workflow JSON
|
||||
- `config/options.json` lab component metadata
|
||||
- `sensor_bench_operator` / former `sensor_bench.app` modules
|
||||
|
||||
The build is `onedir` rather than `onefile` so startup is faster and bundled
|
||||
DLL/resource issues are easier to diagnose.
|
||||
|
||||
## Validation
|
||||
|
||||
@@ -44,15 +65,64 @@ python tests/test_smoke.py
|
||||
python build/verify_dist.py
|
||||
```
|
||||
|
||||
`verify_dist.py` checks the expected public layout **and** fails if internal
|
||||
paths, operator modules, workflow locale keys, or private workflow text appear
|
||||
in the dist tree.
|
||||
|
||||
Manual hardware check:
|
||||
|
||||
1. Run `dist\SensorBench\SensorBench.exe`.
|
||||
2. Confirm the UI opens without setting `PYTHONPATH`.
|
||||
2. Confirm the exhibition UI opens without setting `PYTHONPATH`.
|
||||
3. Confirm the UI defaults to Simplified Chinese and can switch to English.
|
||||
4. Confirm Orisys status is available and fixed mode shows DDJX01.
|
||||
5. Use Next / Revert / New Sample Reset on the left workflow panel.
|
||||
6. Start preview with camera index `0`.
|
||||
7. Confirm raw preview and processed preview update.
|
||||
8. Record a short clip and verify it appears under `dist\SensorBench\recordings`.
|
||||
4. Confirm Orisys status is available, the config dropdown lists local editable
|
||||
sensor configs (for example `ddjx01`), and Start uses DDJX01.
|
||||
5. Confirm Search finds cameras (or logs none) and Camera still opens a
|
||||
video-file picker. There is no Cal (.npy) field; Reset resets the Orisys
|
||||
tracker while preview is running.
|
||||
6. Start preview with camera index `0` (or a searched index / video file).
|
||||
7. Confirm the image panel and FN/FX/FY plots update.
|
||||
8. Toggle processed/raw view and start/stop recording under
|
||||
`dist\SensorBench\recordings`.
|
||||
|
||||
Locale files are bundled under `_internal/config/locales/` (and can also be placed beside the EXE under `config/locales/` for overrides). Edit those JSON files to change operator-facing text without rebuilding.
|
||||
Locale files are bundled under `_internal/config/locales/` (and can also be
|
||||
placed beside the EXE under `config/locales/` for overrides). Edit those JSON
|
||||
files to change exhibition-facing text without rebuilding.
|
||||
|
||||
## Private operator EXE (internal only)
|
||||
|
||||
Do **not** ship `SensorBenchOperator` to customers. It includes workflow steps,
|
||||
lab `options.json`, and operator locale copy.
|
||||
|
||||
```bat
|
||||
.\build\create_env.bat
|
||||
.\build\build_operator_exe.bat
|
||||
```
|
||||
|
||||
Or:
|
||||
|
||||
```bat
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File .\build\build_operator_exe.ps1
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```text
|
||||
dist/SensorBenchOperator/SensorBenchOperator.exe
|
||||
```
|
||||
|
||||
Validation:
|
||||
|
||||
```powershell
|
||||
python tests/test_smoke.py
|
||||
python internal/tests/test_operator_smoke.py
|
||||
python build/verify_operator_dist.py
|
||||
```
|
||||
|
||||
Manual check:
|
||||
|
||||
1. Run `dist\SensorBenchOperator\SensorBenchOperator.exe`.
|
||||
2. Confirm the workflow/steps panel and component options appear.
|
||||
3. Confirm Start Preview / record / force curves still work with a camera.
|
||||
4. Confirm `config/options.json` and `steps/default.json` beside the EXE are editable.
|
||||
|
||||
Source-level operator docs: [`../internal/README.md`](../internal/README.md).
|
||||
|
||||
Reference in New Issue
Block a user