EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  <20232024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  <20232024 
<== Date ==> <== Thread ==>

Subject: Re: DBRecord <-> PVRecord data exchange
From: Michael Davidsaver via Tech-talk <tech-talk at aps.anl.gov>
To: Ignacio Arriagada <ignacio.arriagada at noirlab.edu>
Cc: tech-talk at aps.anl.gov
Date: Thu, 12 Oct 2023 17:19:18 -0700
I think I have allowed sufficient time for someone else to jump to
support pvDatabaseCPP...


On 10/4/23 08:38, Ignacio Arriagada via Tech-talk wrote:
Hello Tech-Talk!
I'm trying to integrate PVAccess (or PVXS) capabilities into an old IOC. *
*

  * *What would be the best way to exchange data between the old DBRecords and the new PVRecords with custom data structures, within the same IOC*?

The PVRecord c++ class is specific to the pvDatabaseCPP modules, which
I do not recommend for new code.

I do *not* see PVRecord as a replacement for the process database.

imo. the name "PVRecord" is a misnomer.  It has no linking or scanning
facilities.  And only simple locking.  It is a fairly low level tool
comparable to the "casPV" class from PCAS, or the SharedPV class from
"PVXS".


  * Do I need to set up a pvClient within the same ioc?
  * Does the exchange need to be done via PVAccess connections or is there an internal way of doing it?

Through PVAccess.  "PVRecord" is an interface to a PVA server.


I've been reading Marty Kraimer EPICSV4 developers guide <https://mrkraimer.github.io/website/developerGuide/developerGuide.html> and associated git examples. I'm also consulting Michael Davidsaver's PVXS documentation but it is not clear to me yet how to accomplish this. Are there other resources or examples that I could access regarding this topic?

Unless you have some special need, I would suggest writing an "normal"
EPICS driver (w/ device support, .db files, etc.).

If you do want something more, like more complex data structures, I
would suggest first looking into QSRV groups.

https://mdavidsaver.github.io/pvxs/qgroup.html#understanding-groups

Or if you find something some data structure or operation which
can't be mapped to the process database, you could look into SharedPV.

eg. https://mdavidsaver.github.io/pvxs/example.html#mailbox-server

This example sets up a standalone server.  It is also possible to
add a SharedPV alongside (but separate from) the records served
by QSRV2.

https://mdavidsaver.github.io/pvxs/ioc.html#adding-custom-pvs-to-server


Thank you all in advance,
Regards,
Ignacio


References:
DBRecord <-> PVRecord data exchange Ignacio Arriagada via Tech-talk

Navigate by Date:
Prev: RE: Question regarding ADPluginFile driver Mark Rivers via Tech-talk
Next: process multiple lines with streamdevice Gerrit Kühn via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  <20232024 
Navigate by Thread:
Prev: Re: DBRecord <-> PVRecord data exchange Érico Nogueira Rolim via Tech-talk
Next: Provision for alying sound file in CS-Studio Anindya Roy via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  <20232024 
ANJ, 17 Oct 2023 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·