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: Question About ADEuresys XML File Support for the EPICS IOC |
From: | "Kim, Kuktae via Tech-talk" <tech-talk at aps.anl.gov> |
To: | Mark Rivers <rivers at cars.uchicago.edu>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Fri, 18 Apr 2025 21:22:15 +0000 |
Hi Mark,
We’ve applied your updates to the ADGenICam and ADEuresys drivers, and everything is working great with our camera and frame grabber—thank you!
To keep the repositories clean and well-organized, we decided to keep only GenICam camera-related files in ADGenICam, and all Euresys frame grabber-related files in ADEuresys. As a result, we’ve placed the XML, database, and OPI files for the Euresys TL modules,
along with the "addcamera.sh" and Python converting files in the scripts folder, in the ADEuresys repository, even if it means some duplication.
Thanks again for your help!
Best regards,
Kuktae
From: Kim, Kuktae <ktkim at slac.stanford.edu>
Sent: Monday, March 31, 2025 12:44 AM To: Mark Rivers <rivers at cars.uchicago.edu>; tech-talk at aps.anl.gov <tech-talk at aps.anl.gov> Subject: Re: Question About ADEuresys XML File Support for the EPICS IOC
Hi Mark,
I really appreciate your help with the XML file support for the frame grabber. Unfortunately, our camera is being moved from the test stand to the hutch tomorrow, so I won’t have access to it for a week or two. Once I regain access, I’ll test the new ADGenICam
and ADEuresys modules and update you.
Best regards,
Kuktae
From: Mark Rivers <rivers at cars.uchicago.edu>
Sent: Sunday, March 30, 2025 10:27 AM To: Kim, Kuktae <ktkim at slac.stanford.edu>; tech-talk at aps.anl.gov <tech-talk at aps.anl.gov> Subject: RE: Question About ADEuresys XML File Support for the EPICS IOC BEWARE: This email originated outside of our organization. DO NOT CLICK links or attachments unless you recognize the sender and know the content is safe. Hi Kuktae,
I have now completed this enhancement. It required the following changes:
ADGenICam now contains the XML, database, and OPI files for the Euresys TL modules.
The release notes for ADGenICam and ADEuresys explain the changes.
These are the new medm screens corresponding to the edm screens in the first post in this thread. Note that now the PVs are showing the actual values of the features and they can be controlled.
Please give it a try and let me know of any issues.
Mark
From: Kim, Kuktae <ktkim at slac.stanford.edu>
Hi Mark,
Thank you for your detailed explanation and for moving this discussion to a GitHub issue.
I really appreciate the insights you've shared on how ADEuresys handles different modules and the potential enhancements to support StreamModule, InterfaceModule, and others more generically.
Best regards, Kuktae
From: Mark Rivers <rivers at cars.uchicago.edu>
BEWARE: This email originated outside of our organization. DO NOT CLICK links or attachments unless you recognize the sender and know the content is safe.
Hi Kuktae,
You raise an interesting question. The Euresys EGrabber software is nice because grabber it uses GenApi to read and write feature values for both the camera and the frame grabber.
For example, integer features on the camera itself are read with this code: https://github.com/areaDetector/ADEuresys/blob/03fdd23dc59118d89863aa3a895c3e108f32d8ee/EuresysApp/src/EuresysFeature.cpp#L81C10-L82C9
value = mGrabber->getInteger<RemoteModule>(mFeatureName);
Note that getInteger is a template function, where the template defines the module that feature belongs to, RemoteModule in this case.
ADEuresys currently handles RemoteModule features in a generic way using this function. https://github.com/areaDetector/ADEuresys/blob/main/EuresysApp/src/EuresysFeature.cpp
The features you would like to use are in other modules. ADEuresys currently handles just a few of those in a non-generic way. For example, this is the ADEuresys::readStatus function:
asynStatus ADEuresys::readStatus() { mGrabber_->setString<StreamModule>("EventSelector", "RejectedFrame"); epicsUInt64 rejectedFrames = mGrabber_->getInteger<StreamModule>("EventCount"); setIntegerParam(ESRejectedFrames, (int)rejectedFrames); epicsUInt64 CRCErrors = mGrabber_->getInteger<InterfaceModule>("CxpStreamDataPacketCrcErrorCount"); setIntegerParam(ESCRCErrorCount, (int)CRCErrors); epicsUInt64 outputQueue = mGrabber_->getInfo<StreamModule, uint64_t>(GenTL::STREAM_INFO_NUM_AWAIT_DELIVERY); setIntegerParam(ESOutputQueue, (int)outputQueue);
return ADGenICam::readStatus(); }
Note that it reads features from the StreamModule and InterfaceModule.
ADEuresys could be enhanced so that it provides generic support for the StreamModule, InterfaceModule, and other modules. It would not be too difficult. The EuresysFeature class would need to be extended so that it knows which module a feature belongs to. That information would need to be encoded in the link fields of the records that the Python parser produces. This is an example record for a camera feature that uses the RemoteModule.
record(ao, "$(P)$(R)GC_AcqFrameRate") { field(DTYP, "asynInt64") field(OUT, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))GC_I_AcquisitionFrameRate") field(DISA, "0") }
Note that drvInfo string is GC_I_AcquisitionFrameRate. “GC” flags that this is a GenICam camera parameter (i.e. RemoteModule), “I” means that it is an integer, and AcquisitionFrameRate is the feature name from the camera XML file. We could use ST for StreamModule, IN for InterfaceModule, etc. The Python code would need to use those strings when writing the database file, and the GenICam parser would need to understand them and create a GenICam feature with the correct module identifier.
I am moving this discussion to a Github issue. https://github.com/areaDetector/ADEuresys/issues/2
Thanks, Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Kim, Kuktae via Tech-talk
Hello,
I am currently developing an EPICS IOC for the AXIS-SXRF-60 camera and the Euresys Coaxlink CXP-12 Quad Frame Grabber. Thanks to ADGenICam and ADEuresys, I’ve been able to save a significant amount of time and effort.
Using the Euresys gentl utility, I extracted the XML files for both the camera and the frame grabber as below:
$ gentl xml $ ls 6060CXP.xml Euresys_Coaxlink_TLDataStream_25_02_0.xml Euresys_Coaxlink_TLDevice_25_02_0.xml Euresys_Coaxlink_TLInterface_25_02_0.xml Euresys_Coaxlink_TLSystem_25_02_0.xml
Next, I used the Python scripts in ADGenICam to generate the EPICS database files and OPI screens from the camera’s XML file. These were saved in:
I’d like to know if a similar process can be applied to ADEuresys using the XML files from the Euresys frame grabber. I created the EPICS database template and OPI screens and placed them in "/ADEuresys/EuresysApp/Db" and "/ADEuresys/EuresysApp/op/edl."
However, when I launched the GUI, most of the PVs displayed zero or N.A as below:
If I can use the database template and GUI in ADEuresys, it would be helpful for troubleshooting and diagnostics.
Does anyone know if ADEuresys has plans to support this in the same way as ADGenICam?
Thank you for your help!
Best regards, Kuktae
|