EPICS PVAccess server for Liquid Instruments Moku Oscilloscope, implemented with epicsdev and moku.instruments.
This server connects to a Moku device, acquires oscilloscope frames, and publishes waveform data and derived statistics as PVs.
- Python 3.11+
- Network access to a Moku device
- Python packages (installed via
pyproject.toml):epicsdevp4pmokunumpy
Install in editable mode from this folder:
pip install -e .
Start the server:
python -m epicsdev_osc_moku -i <moku_ip> -d moku -x 0
This creates PV prefix:
<device><index>:
For example, with -d moku -x 0, PVs are under moku0:.
-i, --ipMoku IP address (default:192.168.1.2)-d, --devicePV device prefix base (default:moku)-x, --indexPV device index (default:0)-m, --max-lengthmaximum waveform points requested from Moku (default:2048)-f, --force-connectforce ownership claim-v, --verboseincrease verbosity
Global PVs:
trigSource: Trigger sourcetrigLevel: Trigger leveltimePerDiv: Horizontal scaletAxis: Horizontal axis array
Per-channel PVs for channels 01..04:
c<n>Waveform: Waveform arrayc<n>Mean: Mean of waveformc<n>Min: Waveform minimumc<n>Peak2Peak: Peak-to-peak amplitudec<n>RMS: RMS of waveform
Additional utility PVs:
scopeIDNacqCount
- Trigger/timebase writes are applied to the instrument immediately.
- Waveform statistics are computed from each acquired frame.
- On exit, the server attempts to relinquish Moku ownership cleanly.