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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: NTNDArrays, Java |
From: | bob dalesio <[email protected]> |
To: | "Madden, Timothy J." <[email protected]> |
Cc: | EPICS tech-talk <[email protected]> |
Date: | Fri, 10 Mar 2017 12:10:22 -0500 |
I am playing with NTNDArrays. I generate them from AD 2-5 with a sim detector and the pva plugin.
pvget can display the arrays that pop out of the driver.
Now I am writing a java program to monitor and eventually display in Image J.
The code is below.
I problem I have is that the dimensions and uniqie ID seem to be abscent from the data.
Also, calling NTNDArray.wrap fails, as the returned data seems to be not a real NT ND Array.
Furtner, the image data is byte[] type. I can get out the Union or values, or call toString to get the raw data.
I am not sure how Java figures out if the union is bytes or ints or whatever.
I will have to be able to ask the NTNDArray what its datatype is, then convert to ints or whatever the datatype is. Not sure how this is done.
I have looked at the C++ code for the PVA ADDriver in AD2-5, but there are differences between cpp and java interfaces.
Also I have to call wrapUnsafe to even convert the PVStructure into NTNDArray, which makes no sense. wrap fails.
Thanks
Tim Madden
Code below:
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Maddens test java get image");
if (true)
{
PvaClient pva=PvaClient.get();
PvaClientChannel mychannel = pva.channel("13SIM1:Pva1:Image");
PvaClientMonitor pvamon=mychannel.monitor();
//pvamon.connect();
pvamon.start();
PvaClientMonitorData easydata = pvamon.getData();
while(true)
{
pvamon.waitEvent(0);
//String sc = easydata.showChanged();
PVStructure pvs = easydata.getPVStructure();
NTNDArray myarray =NTNDArray.wrapUnsafe(pvs);
//String imgstr = myarray.toString();
PVUnion pvu = myarray.getValue();
PVStructureArray dims = myarray.getDimension();
//org.epics.pvdata.pv.Field a = pvu.getField();
//PVInt uniqid = myarray.getUniqueId();
//PVStructureArray psa =myarray.getAttribute();
System.out.println("got data ");
pvamon.releaseEvent();
}
}
System.out.println("Maddens test java end");
}