EasyPVA (Easy PVAccess) is a software library that provides to an EPICS client programmer, a friendly client side programming interface to the data of an EPICS based control system. It is intended for such uses as rapid development of ad hoc programs by controls engineers, or to provide scientists a way to directly develop analytical applications.
Specifically, easyPVA provides an easy interface for pvAccess, which is the software support for high speed controls network communications used in EPICS version 4. PvAccess provides a callback based interface, which can be hard to use. EasyPVA provides an interface that does not require callbacks even for monitors.
EasyChannel provides many "convenience" methods to directly get and put scalar and scalarArray data types. Additional methods provide access to the full features of pvAccess.
EasyMultiChannel provides access to data from multiple channels as long as each channel has a top level field named value. EasyMultiChannel provides two ways to access data from multiple channels: The first is as an NTMultiChannel. The second is as a double array. The double array can be used if the value field of every channel is a numeric scalar. There is code for NTMultiChannel that helps with access to more complicated data types.
EasyPVA will become part of pvAccess when it is ready.
For more information about EPICS generally, please refer to the home page of the Experimental Physics and Industrial Control System.
Under development
EasyPVA is a synchronous API for accessing PVData via PVAccess. It provides an interface to many of the features provided by pvData and pvAccess.
The EasyPVA API has the following features:
This document briefly describes the CPP version of EasyPVA. Doxygen documentation is available at doxygenDoc
A client obtains the interface to EasyPVA via the call:
EasyPVAPtr easyPVA = EasyPVAFactorys->create();
The client can call this an arbitrary number of times. On the first call the PVAccess client factory is started. When the last EasyPVA is destroyed the PVAccess client factory is stopped.
EasyPVA creates interfaces to one of the following:
This interface creates Easy support for each PVAccess::Channel create method:
This interface creates Easy support for accessing a set of channels. The only requirement of the channels is that each must have a top level field named value.
The examples require that an example pvAccess server is runnimg. This distribution has a file exampleDatabaseEasyPVA.zip. When unzipped this is used to create an example IOC database. The database has the record used by the examples are tests that come with easyPVAJava. It uses pvDatabaseCPP to build the database.
After unzipping the file:
cd configure cp ExampleRELEASE.local RELEASE.local edit RELEASE.local cd .. make cd iocBoot/exampleDatabase ../../bin/<arch:>/exampleDatabase st.cmd
These are examples in directory example/src. An example of how to run them is:
mrk> pwd /home/hg/easyPVACPP/example mrk> bin/linux-x86_64/exampleEasyGet
See the source code for each example.