Tim,
I suggest that you create a branch of ADCore with your new Java viewer code and push it to github.com/areaDetector/ADCore. That way others can look at the code, test it,
and make suggestions.
Has anyone else written a Java PVAccess client that receives NTNDArrays?
Mark
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");
}