Hi Mark,
Just one word about our local practice: the xml/db/op files are stored in a dedicated repo ADGenICamDB.
It allows us to frequently add cameras, without touching ADGenICam.
But of course the drawback is as you pointed out, the Python script has to be duplicated/synced with ADGenICam.
Best
Xiaoqiang
> On 18 Apr 2025, at 23:57, Mark Rivers via Tech-talk <tech-talk at aps.anl.gov> wrote:
>
> Hi Kuktae,
> Thanks for letting me know.
> I was not sure of the best place to keep the XML files and derived database and OPI files for the frame grabber. I don’t like the idea of duplicating the Python scripts, since they will then get out of sync. They are not really any more “vendor-specific” than all of the camera file in ADGenICam. For now I think I will keep them in ADGenICam.
> Mark
> From: Kim, Kuktae <ktkim at slac.stanford.edu>
> Sent: Friday, April 18, 2025 4:22 PM
> To: Mark Rivers <rivers at cars.uchicago.edu>; tech-talk at aps.anl.gov
> Subject: Re: Question About ADEuresys XML File Support for the EPICS IOC
> 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,
> KuktaeFrom: 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:
> • The Python scripts that generate the database and OPI files in ADGenICam. These now accept an optional 2-letter prefix. The default is GC, which was used previously.
> • The parser in ADGenICam::drvUserCreate. It now allows any 2-letter prefix, not just GC.
> • EuresysFeature class. It is now a template class that uses the GenICam module template parameter.
> • ADEuresys:createFeature(). It now uses the prefix in the drvInfo string to determine which module to use:
> • GC = RemoteModule
> • DV = DeviceModule
> • DS = DataStreamModule
> • IF = InterfaceModule
> • SY = SystemModule
> ADGenICam now contains the XML, database, and OPI files for the Euresys TL modules.
> The release notes for ADGenICam and ADEuresys explain the changes.
> https://urldefense.us/v3/__https://github.com/areaDetector/ADEuresys/blob/main/RELEASE.md__;!!G_uCfscf7eWS!ejleK0cSIdaOfdslA0jGMo5txF_8NJWwToFpmplAj469AgzPKdntVhlfYXvNW1QPU0ks393_e8EMoknwSpqHMkbxdS89Cg$
> https://urldefense.us/v3/__https://github.com/areaDetector/ADGenICam/blob/master/RELEASE.md__;!!G_uCfscf7eWS!ejleK0cSIdaOfdslA0jGMo5txF_8NJWwToFpmplAj469AgzPKdntVhlfYXvNW1QPU0ks393_e8EMoknwSpqHMkYpr1tCJA$
> 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.
> image.png (view on web)
> image.png (view on web)
> Please give it a try and let me know of any issues.
> Mark
> From: Kim, Kuktae <ktkim at slac.stanford.edu>
> Sent: Wednesday, March 26, 2025 1:37 PM
> To: Mark Rivers <rivers at cars.uchicago.edu>; tech-talk at aps.anl.gov
> Subject: Re: Question About ADEuresys XML File Support for the EPICS IOC
> 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>
> Sent: Wednesday, March 26, 2025 11:12 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,
> 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://urldefense.us/v3/__https://github.com/areaDetector/ADEuresys/blob/03fdd23dc59118d89863aa3a895c3e108f32d8ee/EuresysApp/src/EuresysFeature.cpp*L81C10-L82C9__;Iw!!G_uCfscf7eWS!ejleK0cSIdaOfdslA0jGMo5txF_8NJWwToFpmplAj469AgzPKdntVhlfYXvNW1QPU0ks393_e8EMoknwSpqHMkYCrInA4g$
> 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://urldefense.us/v3/__https://github.com/areaDetector/ADEuresys/blob/main/EuresysApp/src/EuresysFeature.cpp__;!!G_uCfscf7eWS!ejleK0cSIdaOfdslA0jGMo5txF_8NJWwToFpmplAj469AgzPKdntVhlfYXvNW1QPU0ks393_e8EMoknwSpqHMkZCGngd4Q$
> 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://urldefense.us/v3/__https://github.com/areaDetector/ADEuresys/issues/2__;!!G_uCfscf7eWS!ejleK0cSIdaOfdslA0jGMo5txF_8NJWwToFpmplAj469AgzPKdntVhlfYXvNW1QPU0ks393_e8EMoknwSpqHMkYueMO8wA$
> Thanks,
> Mark
> From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of Kim, Kuktae via Tech-talk
> Sent: Monday, March 24, 2025 7:04 PM
> To: tech-talk at aps.anl.gov
> Subject: Question About ADEuresys XML File Support for the EPICS IOC
> 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:
> •
> Database templates: ADGenICam/GenICamApp/Db
> •
> OPI screens: ADGenICam/GenICamApp/op/edl
>
> 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:<image001.png> <image002.png> 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
- References:
- Question About ADEuresys XML File Support for the EPICS IOC Kim, Kuktae via Tech-talk
- RE: Question About ADEuresys XML File Support for the EPICS IOC Mark Rivers via Tech-talk
- Re: Question About ADEuresys XML File Support for the EPICS IOC Kim, Kuktae via Tech-talk
- RE: Question About ADEuresys XML File Support for the EPICS IOC Mark Rivers via Tech-talk
- Re: Question About ADEuresys XML File Support for the EPICS IOC Kim, Kuktae via Tech-talk
- Re: Question About ADEuresys XML File Support for the EPICS IOC Kim, Kuktae via Tech-talk
- RE: Question About ADEuresys XML File Support for the EPICS IOC Mark Rivers via Tech-talk
- Navigate by Date:
- Prev:
RE: Question About ADEuresys XML File Support for the EPICS IOC Mark Rivers via Tech-talk
- Next:
Questions about Eiger2 Mark Rivers 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>
- Navigate by Thread:
- Prev:
RE: Question About ADEuresys XML File Support for the EPICS IOC Mark Rivers via Tech-talk
- Next:
Using Streamdevice to run SQL Query ? Heinz Junkes 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>
|