Skip to main content

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 put operations.

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

  1. Create a new GitHub repository.

  2. 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>.
    
  3. Within ~20–40 minutes, the AI can generate a pull request.

  4. 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


Download files

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

Source Distribution

epicsdev-3.1.5.tar.gz (157.0 kB view details)

Uploaded Source

Built Distribution

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

epicsdev-3.1.5-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

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

Hashes for epicsdev-3.1.5.tar.gz
Algorithm Hash digest
SHA256 97c83f8d7f38935a7c86443bf8709145c68aa19bb3ea49aae0215c659e7f14be
MD5 2ecf329c4b902065312b24f78d639b75
BLAKE2b-256 b1c45a6bcd5e8c89fe2d783ede9d657de46fd8a9e515eb7840e0e5bbd1ae8c89

See more details on using hashes here.

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

Hashes for epicsdev-3.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 aa324f9988eb509ee0d8e2b4012be983935d105bd068ab9982fc4cf7b9e052a0
MD5 a1183446f933beac4a2472e163526dfc
BLAKE2b-256 4288615f39f838b23e0091ff8268df9f59dbd08d02787cfa74764e8bcef4a87d

See more details on using hashes here.

Supported by

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