Skip to main content

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apxctrl-0.5.0.tar.gz (7.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

apxctrl-0.5.0-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file apxctrl-0.5.0.tar.gz.

File metadata

  • Download URL: apxctrl-0.5.0.tar.gz
  • Upload date:
  • Size: 7.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.17

File hashes

Hashes for apxctrl-0.5.0.tar.gz
Algorithm Hash digest
SHA256 987158aeeda01cae9d3f2f7fa119df6ee12956e75fbbf1bcc3dd09015a5b0385
MD5 a44cf2aa336ecafbcf1012fce3f9850e
BLAKE2b-256 baa577f21f3fb5fa3b3b2d84e2b35d4b35d826f7046965ba756527691767e95c

See more details on using hashes here.

File details

Details for the file apxctrl-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: apxctrl-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.17

File hashes

Hashes for apxctrl-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 16fb195f45886ce62cf971cd54cc5440f227068bf9760430f3447e04fedaea73
MD5 4f03f086eafebe7e6c123613c6a254e2
BLAKE2b-256 5be1de7c70bec1edb28365da7e84570449f33bba35b9660ca4db284ee2ad3643

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page