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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: AreaDetector Pva problem |
From: | Mark Rivers via Tech-talk <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>, Jörn Dreyer <j.dreyer at hzdr.de> |
Date: | Wed, 19 Jun 2024 12:58:26 +0000 |
Hi Jörn,
The Pva plugin uses the NTNDArray data structure.
https://docs.epics-controls.org/en/latest/pv-access/Normative-Types-Specification.html#ntndarray
NDArrays are defined here:
https://github.com/areaDetector/ADCore/blob/1a9135976b4bc75bfdfe1ed7516a3e7d29e08e6b/ADApp/ADSrc/NDArray.h#L99
Is this what you were asking?
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Jörn Dreyer via Tech-talk <tech-talk at aps.anl.gov>
Sent: Wednesday, June 19, 2024 7:14 AM To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov> Subject: Re: AreaDetector Pva problem Hi all,,
after some more investigation it turned out the the problem was an not handled error situation in which the PV did not return a valid array. This now leaves me with the question how the data is organized in the case of the Pva plugin versus the standard NDArray data. Where can I find some detailed information about that? Regards Jörn Am Montag, 17. Juni 2024, 13:39:50 MESZ schrieb Jörn Dreyer via Tech-talk: > Hi all, > > I have a problem with EPICS 7.0.8 when trying to retrieve image data from an areaDetector using the pva protocol. > I'm using the Pva plugin because of the size of the image (61 Mpixels). The PV is "cam:Pva1:Image" and in my program > using pvAccess I get the following error: > > Error: PvaClientData::getDoubleArray() did not find a scalarArray field > > When doing the following: > > pva = PvaClient::get("pva ca"); > PvaClientChannelPtr channel = pva->channel("cam:Pva1:Image", "pva", 2.0); > epics::pvData::shared_vector<const double> array = channel->getDoubleArray(); > > Enabling debugging for pva gives the following: > > PvaClientChannel::PvaClientChannel channelName WIZZLERHD:HZDR:asicam1:Pva1:Image > PvaClientChannel::connect channelName WIZZLERHD:HZDR:asicam1:Pva1:Image > PvaClientChannel::issueConnect channelName WIZZLERHD:HZDR:asicam1:Pva1:Image > PvaClientChannel::issueConnect calling provider->createChannel > PvaClientChannel::channelCreated channelName WIZZLERHD:HZDR:asicam1:Pva1:Image connectState 1 isConnected false status.isOK true > PvaClientChannel::waitConnect channelName WIZZLERHD:HZDR:asicam1:Pva1:Image > PvaClientChannel::channelStateChange channelName WIZZLERHD:HZDR:asicam1:Pva1:Image CONNECTED > PvaClientGet::create(pvaClient,channelName,pvRequest) > channelName WIZZLERHD:HZDR:asicam1:Pva1:Image pvRequest structure > structure field > structure value > > PvaClientGet::PvaClientGet channelName WIZZLERHD:HZDR:asicam1:Pva1:Image > PvaClientGet::connect channelName WIZZLERHD:HZDR:asicam1:Pva1:Image > PvaClientGet::issueConnect channelName WIZZLERHD:HZDR:asicam1:Pva1:Image > PvaClientGet::waitConnect channelName WIZZLERHD:HZDR:asicam1:Pva1:Image > PvaClientGet::channelGetConnect channelName WIZZLERHD:HZDR:asicam1:Pva1:Image status.isOK true > PvaClientGetData::create > PvaClientGet::get channelName WIZZLERHD:HZDR:asicam1:Pva1:Image > PvaClientGet::issueGet channelName WIZZLERHD:HZDR:asicam1:Pva1:Image > PvaClientGet::waitGet channelName WIZZLERHD:HZDR:asicam1:Pva1:Image > PvaClientGet::getDone channelName WIZZLERHD:HZDR:asicam1:Pva1:Image status.isOK true > PvaClientData::setData > PvaClientGet::getData channelName WIZZLERHD:HZDR:asicam1:Pva1:Image > PvaClientGet::checkConnectState channelName WIZZLERHD:HZDR:asicam1:Pva1:Image > PvaClientData::getDoubleArray > PvaClientData::getSinglePVField > Error: PvaClientData::getDoubleArray() did not find a scalarArray field > > The array vaiable is 0 in this case. > No clue what I am doing wrong here? > > I can retrieve the value of the pv with pvget. So it exists and is correctly filled. > Any help appreciated! > > Regards > > Jörn > > > |