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  2023  2024  2025  <2026 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  2023  2024  2025  <2026
<== Date ==> <== Thread ==>

Subject: Re: AW: pvget, pvxget and pvxs interoperability and differences
From: Peter Milne via Tech-talk <tech-talk at aps.anl.gov>
To: "Gotz, Malte" <malte.gotz at helmholtz-berlin.de>, Michael Davidsaver <mdavidsaver at gmail.com>
Cc: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Thu, 12 Mar 2026 12:00:35 +0000
Hello Malte

Bearing in mind Michael's comment that the CLI tools are a work in progress, this worked well for me:

Here's a Q:group table:
acq2206_088> pvget acq2206_588:SOE_LUT:TAB:Tbl | head
acq2206_588:SOE_LUT:TAB:Tbl
Row Event Pad PV_ID OFFSET_US
  0  1000   0  2000         0
  1  1001   0  2001         2
  2  1002   0  2002         4

Nice table-like render for the human client!

acq2206_088> pvxget acq2206_588:SOE_LUT:TAB:Tbl
acq2206_588:SOE_LUT:TAB:Tbl
    record._options.atomic bool = true
    labels string[] = {5}["Row", "Event", "Pad", "PV_ID", "OFFSET_US"]
    value.ROWNUM uint8_t[] = {64}[0,  ....

This is more like the "middleware developer edition" with ALL the info, but it gives a good clue how to pick off elements e.g. the first column :

acq2206_088> pvxget -r value.ROWNUM acq2206_588:SOE_LUT:TAB:Tbl | head
acq2206_588:SOE_LUT:TAB:Tbl
    value.ROWNUM uint8_t[] = {64}[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63]

So that works well!

ps: for Michael, the old caget tools seem to default to "client app developer mode", by default giving just what that developer really wants - the value.

e.g. repeat the above for a group of scalars:

acq2206_088> pvxget acq2206_588:SMPL | wc -l
154

154 lines : too much information!

The interesting bit for the "client app dev" :

acq2206_088> pvxget  acq2206_588:SMPL | head -n 3
acq2206_588:SMPL
    record._options.atomic bool = true
    AI_COUNT.value int32_t = 32

OK, so pvxget can pull this field by itself and this is good:
acq2206_088> pvxget -r AI_COUNT.value acq2206_588:SMPL | head -n 3
acq2206_588:SMPL
    AI_COUNT.value int32_t = 32


Hmm, but what I really want to see at a glance is  all the fields and their values, like this:

acq2206_088>  /usr/local/bin/pvget_value -t acq2206_588:SMPL
AI_COUNT      32
AI_INDEX       0
DI_COUNT       1
DI_INDEX      16
NSAM        1024
SP_COUNT      15
SP_INDEX      17
SSB          128

.. using wrapper script below to fake what perhaps "caget" would have done.

The wrapper is simple enough* of course, but it would be really helpful if that could be the "quick-look-see" default for the CLI tool itself.

* OK, after some googled sed/awk foo :-)

Cheers

Peter

acq2206_088> cat /usr/local/bin/pvget_value
#!/bin/sh

if [ -z $1 ]; then
	echo "USAGE pvget_value [-t] PV [PV]"
	exit 1
fi


if [ "$1" = "-t"  ];then
	shift
	pvget $* | sed -n  '/epics:nt/N;s/\n//p' | awk '{ printf("%-10s %5s\n", $2, $5) }'
else
	pvget $* | sed -n  '/epics:nt/N;s/\n//p'
fi






On 12/03/2026 10:20, Gotz, Malte via Tech-talk wrote:
Hello Michael,

thank you for your quick reply. I totally understand that pv… and pvx… are
not fully compatible and you do give ample warning, that the command line
tools from pvxs are rather for testing. I mostly remarked on the
discrepancies, because I also couldn’t find a definitive documentation on
how to use that feature. Now, I know, this wasn’t just a failure of my
search skills.
As far as I understand it this explains the differences in some -r arguments
working for pvxget but not for pvget and vice versa.

The more pressing issue for me is, that if I create an NT/Table group with
QSRV2, I can’t retrieve a single column using pvget with any syntax. My
understanding is that the client tool (pvget) should parse the string into
some structure and send that via PVA to retrieve/request the data. The QSRV2
on the other hand doesn’t need to parse the string I give with pvget -r,
right?

So, any idea what is going on here?

Von: Michael Davidsaver <mdavidsaver at gmail.com>
Gesendet: Mittwoch, 11. März 2026 21:48
An: Gotz, Malte <malte.gotz at helmholtz-berlin.de>
Cc: tech-talk at aps.anl.gov
Betreff: Re: pvget, pvxget and pvxs interoperability and differences

On 3/11/26 7:53 AM, Michael Davidsaver wrote:

PRs and issues open.

I have created an additional issue specifically about pvRequest syntax
interoperability

  <https://urldefense.us/v3/__https://github.com/epics-base/pvxs/issues/156__;!!G_uCfscf7eWS!f0sfPQ_1pDgB3TagFQirbwsUOp7PTzmsJL80KGOvZX1tMydeM-p2l1koESeGKHw3fOLS3d2X6smPxXkf96vYrUNffsw$ >
https://urldefense.us/v3/__https://github.com/epics-base/pvxs/issues/156__;!!G_uCfscf7eWS!f0sfPQ_1pDgB3TagFQirbwsUOp7PTzmsJL80KGOvZX1tMydeM-p2l1koESeGKHw3fOLS3d2X6smPxXkf96vYrUNffsw$



--
Peter Milne
Director of Sales
https://urldefense.us/v3/__http://www.d-tacq.com__;!!G_uCfscf7eWS!f0sfPQ_1pDgB3TagFQirbwsUOp7PTzmsJL80KGOvZX1tMydeM-p2l1koESeGKHw3fOLS3d2X6smPxXkf96vY74y6Y2k$
References:
pvget, pvxget and pvxs interoperability and differences Gotz, Malte via Tech-talk
Re: pvget, pvxget and pvxs interoperability and differences Michael Davidsaver via Tech-talk
Re: pvget, pvxget and pvxs interoperability and differences Michael Davidsaver via Tech-talk
AW: pvget, pvxget and pvxs interoperability and differences Gotz, Malte via Tech-talk

Navigate by Date:
Prev: Re: E3 conda build problem Anders Lindh Olsson via Tech-talk
Next: Re: E3 conda build problem Jörn Dreyer 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  2023  2024  2025  <2026
Navigate by Thread:
Prev: AW: pvget, pvxget and pvxs interoperability and differences Gotz, Malte via Tech-talk
Next: EPICS SNMP compile error Peter Sx 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  2023  2024  2025  <2026
ANJ, 19 Mar 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·