APx Control Server
A Flask-based web server for controlling Audio Precision APx500 test equipment remotely.
Architecture
This server acts as a shim between a Linux client and the Windows-based APx500 application. It exposes a REST API that wraps the APx500 .NET API.
┌─────────────┐ HTTP ┌─────────────┐ .NET API ┌──────────────┐
│ Client │ ─────────────► │ apxctrl │ ───────────────► │ APx500 │
│ │ ◄───────────── │ │ ◄─────────────── │ Application │
└─────────────┘ └─────────────┘ └──────────────┘
Design Principles
- 1:1 client model: One client, one server, sequential requests
- State tracking: Server tracks APx state, loaded project (name + SHA256)
Installation
On Windows, install Python and uv:
# Install uv (Python package manager)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
$env:Path = "C:\Users\$env:USERNAME\.local\bin;$env:Path"
# Install Python 3.11
uv python install 3.11.4
Install dependencies:
uv pip install -e .
Running tests
uv run py.test -v
Running the Server
Allow access through firewall
netsh firewall add portopening TCP 5000 "apxctrl"
netsh advfirewall firewall add rule name="apxctrl TCP Port 5000" dir=in action=allow protocol=TCP localport=5000
netsh advfirewall firewall add rule name="apxctrl TCP Port 5000" dir=out action=allow protocol=TCP localport=5000
Basic usage of server:
uv run apxctrl --kill-existing
Note that you can't run this from a no-GUI terminal (like an SSH session), it will not work.
With options:
Command Line Options
| Option | Description | Default |
|---|---|---|
--kill-existing |
Kill running APx500 processes on startup | False |
--host HOST |
Host to bind to | 0.0.0.0 |
--port PORT |
Port to bind to | 5000 |
--debug |
Enable Flask debug mode | False |
Basic usage of client (demonstrates API usage):
uv run apxctrl-client --help
Metadata
Release files for apxctrl 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| apxctrl-0.5.0.tar.gz | 7.9 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| apxctrl-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 7.9 MB
Release files / apxctrl-0.5.0.tar.gz
| Download URL | apxctrl-0.5.0.tar.gz |
|---|---|
| Size | 7.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
987158aeeda01cae9d3f2f7fa119df6ee12956e75fbbf1bcc3dd09015a5b0385
|
|
BLAKE2b-256 checksum How to use checksums |
baa577f21f3fb5fa3b3b2d84e2b35d4b35d826f7046965ba756527691767e95c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.17
|
Release files / apxctrl-0.5.0-py3-none-any.whl
| Download URL | apxctrl-0.5.0-py3-none-any.whl |
|---|---|
| Size | 16.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
16fb195f45886ce62cf971cd54cc5440f227068bf9760430f3447e04fedaea73
|
|
BLAKE2b-256 checksum How to use checksums |
5be1de7c70bec1edb28365da7e84570449f33bba35b9660ca4db284ee2ad3643
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.17
|