Hi Jakub,
> I had a question about best practices for writing an asynPortDriver or more specifically an areaDetector driver.
> The cameras I am writing support for allow for auto-gain and auto-exposure modes, that adjust the gain and exposure
> internally based on the recieved image.
Is this a GenICam camera? If so this should already be implemented. If it is not a GenICam camera then I would suggest implementing it in a similar manner.
Below is a screen shot for an ADAravis camera. ADVimba and ADSpinnaker are similar. In the upper right of this screen shot notice the "Status" section. The StatusRate controls the rate at which the ReadStatus record is processed, and hence the rate at which camera status is polled. The ReadStatus record is in ADBase.template, and hence is available for all cameras.
For GenICam cameras this reads the values of all of the GenICam features for the camera, which will include the auto-exposure values. These PVs will thus already be update on the camera-specific screens that can be loaded from this screen.
[cid:dc051c12-fa9a-4379-8163-b28da8ee0529]
You need to be aware that reading the features while the camera is acquiring competes for bandwidth and camera resources with the image streaming. Thus it may impact performance.
That is true for the Oryx camera in the screen shot above. If I set StatusRate=Passive then it consistent runs at the full requested 160 frames/s with no FrameFailures. If I set StatusRate=1 second then FrameFailures increases at a few per second and the number of frames/s drops below 160.
Mark
________________________________
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Wlodek, Jakub via Tech-talk <tech-talk at aps.anl.gov>
Sent: Wednesday, September 2, 2020 8:39 AM
To: tech-talk at aps.anl.gov
Subject: How to handle adjusting values as they change independent of the driver in an asynPortDriver?
Hi all,
I had a question about best practices for writing an asynPortDriver or more specifically an areaDetector driver.
The cameras I am writing support for allow for auto-gain and auto-exposure modes, that adjust the gain and exposure
internally based on the recieved image. At the moment, I show this updating in my screens by in the main image processing
thread loop grabbing the pv value for auto-gain and auto-exposure, and if either is on, I ping the camera for the current value
an update the value in the parameter library and run callParamCallbacks.
Would this be a "best practices" solution, or is there a better way to do this? I was thinking maybe something could be
done with EPICS record SCAN fields, or maybe the readInt32 method.
Thanks,
Jakub
- References:
- How to handle adjusting values as they change independent of the driver in an asynPortDriver? Wlodek, Jakub via Tech-talk
- Navigate by Date:
- Prev:
Re: Alarm and logging systems Konrad, Martin via Tech-talk
- Next:
Support for Watlow EZ-zone PM controller Phillip A. Sorensen 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
- Navigate by Thread:
- Prev:
How to handle adjusting values as they change independent of the driver in an asynPortDriver? Wlodek, Jakub via Tech-talk
- Next:
Support for Watlow EZ-zone PM controller Phillip A. Sorensen 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
|