Helper module for creating EPICS PVAccess servers using p4p
Project description
epicsdev
Helper module for building EPICS PVAccess servers using p4p.
epicsdev is designed for:
- Rapid PVAccess server development
- High-rate data simulation and stress testing
- GUI-based monitoring and control
- Rapid instrument integration
- AI-assisted automatic device support generation
It integrates following EPICS IOC services:
- Autosave: automatically saves the values of EPICS process variables (PVs) to files on a server host, and restores those values when the server restarts.
- IocStats: provides support for PVs that show the health and status of the server, plus a few control PVs.
- caPutLog: logging of PVAccess
putoperations.
Installation
python -m pip install epicsdev
Quick Demo
Start the demo PVAccess server:
python -m epicsdev.epicsdev
Control & Visualization
Install optional GUI and plotting tools:
python -m pip install pypeto pvplot
Launch the control interface:
python -m pypeto -c config -f epicsdev
This provides:
- Device control panel
- Live waveform plots
- Real-time parameter monitoring
The screenshots can be seen here: control page, plots.
Phoebus Display
An example Phoebus display is provided: config/epicsdev.bob. Screenshot.
Multi-Channel Waveform Generator
epicsdev.multiadc generates high-throughput synthetic data for stress-testing EPICS systems.
For example, the following command :
python -m epicsdev.multiadc -s 0.1 -c 10000 -n 100
Will start a server, which generates:
- 10,000 noisy waveforms per second
- 100 points per waveform
- 40,000 scalar parameters per second
Monitoring GUI
python -m pypeto -c config -f multiadc
Text Put Logger
epicsdev.putlog hosts a writable PV named dump and appends any written text to a file.
Start the logger server (required argument: output file path):
python -m epicsdev.putlog /tmp/putlog.txt
Default PV prefix is putlog0:, so write text to:
pvput putlog0:dump "hello from client"
AI-Assisted Device Support Development
epicsdev is structured to enable automated server generation using AI tools such as GitHub Copilot.
Workflow Example
-
Create a new GitHub repository.
-
Provide an AI prompt such as:
Build device support for Tektronix MSO oscilloscopes using epicsdev_rigol_scope as a template and the programming manual available at <PDF link>. -
Within ~20–40 minutes, the AI can generate a pull request.
-
Review, test, make minor corrections if needed, then merge.
Real-World Example
Using this method, a server implementation for Tektronix MSO oscilloscopes was:
- ~99% correct on first generation
- Required only minor adjustments
Requirements
- Python 3.8+
- p4p 4.2.2+
Optional:
- pypeto
- pvplot
- Phoebus (for .bob display files)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file epicsdev-3.1.5.tar.gz.
File metadata
- Download URL: epicsdev-3.1.5.tar.gz
- Upload date:
- Size: 157.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97c83f8d7f38935a7c86443bf8709145c68aa19bb3ea49aae0215c659e7f14be
|
|
| MD5 |
2ecf329c4b902065312b24f78d639b75
|
|
| BLAKE2b-256 |
b1c45a6bcd5e8c89fe2d783ede9d657de46fd8a9e515eb7840e0e5bbd1ae8c89
|
File details
Details for the file epicsdev-3.1.5-py3-none-any.whl.
File metadata
- Download URL: epicsdev-3.1.5-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa324f9988eb509ee0d8e2b4012be983935d105bd068ab9982fc4cf7b9e052a0
|
|
| MD5 |
a1183446f933beac4a2472e163526dfc
|
|
| BLAKE2b-256 |
4288615f39f838b23e0091ff8268df9f59dbd08d02787cfa74764e8bcef4a87d
|