epicsdev is a Python framework designed for rapidly developing EPICS PVAccess servers using the p4p library.
Device process variables (PVs) are defined using a compact format:
[name, description, initial_value, attributes]Device-specific logic resides within a small, well-structured Python file following a predictable pattern. Given an instrument programming manual, an LLM assistant (such as GitHub Copilot) can easily leverage this pattern to spin up initial support for new hardware in under an hour.
- High-Bandwidth Data Streaming: Minimizes packet overhead and uses the optimized p4p bindings to move complex data structures directly.
- Built-in Services: Out-of-the-box support for autosave/restore, IocStats, heartbeat monitoring, and PV-put logging.
- Rapid Prototyping: Simple, declarative format for PV definitions.
- LLM-Friendly: Highly predictable boilerplate that allows AI code assistants to write drivers effortlessly.
- OPI Integration: Automated operator interface generation for Phoebus.
Follow the Detailed Server Generation Guide to bootstrap a functional PVAccess server supporting your instrument's core functions.
You can automatically create an operator interface (OPI) layout using phoebusgen. See the OPI Generation Instructions for details.
To see the framework in action without physical hardware, you can launch a simulated multi-channel waveform generator, which can be useful for stress-testing EPICS installations. The following command generates 100 noisy waveforms (1,000 points each) alongside 300 scalar parameters:
python -m epicsdev.multiadc -C 100 -n 1000To change the data publication frequency, modify the sleep PV: pvput multiadc:0:sleep .1.
To control and plot the server's PVs, you can use the pypeto and pvplot modules.
pip install pypeto pvplot
python -m pypeto -f config/multiadc_ppOther examples include a single-waveform generator and a multi-peak image generator:
python -m epicsdev.epicsdev
python -m epicsdev.imagegenSee imagegen usage for more details.
To package epicsdev-based PVAccess servers as standalone Linux executables in your build pipeline, see the Continuous Integration Guide for PyInstaller build instructions and dependency requirements.
Power Supplies
Oscilloscopes
- Keysight (Agilent) DSO-X series
- Rigol DHO series
- Tektronix MSO and DPO series
- LeCroy WaveRunner series
Signal Generators
Data Acquisition Instruments
- CAEN DT5202
- NI cDAQ. Under development
- LabJack U3
Magnetometers
Vacuum Gauge Controllers
- Granville-Phillips 307 and 358
- B-RAX 3000 series from InstruTech
Simulation Utilities