Hi Iian,
My previous response was not quite correct. You also need to define the TWST to be “”, otherwise you will still have 3 choices in the OPI menu:
record(mbbo, "$(P)$(R)ImageMode")
{
field(ZRST, "Single")
field(ZRVL, "0")
field(ONST, "Continuous")
field(ONVL, "2")
field(TWST, “”)
}
record(mbbi, "$(P)$(R)ImageMode_RBV")
{
field(ZRST, "Single")
field(ZRVL, "0")
field(ONST, "Continuous")
field(ONVL, "2")
field(TWST, “”)
}
Ø
I may have to make a separate AreaDetector project for our sensor and modify that.
That is generally the recommended approach for a new detector.
-
Create a new project (e.g. Github repository)
-
Create a new C++ driver that derives from ADDriver.
-
Create a new database that first includes ADBase.template. Overwrite fields from ADBase records and add new records for your detector.
-
Create a new OPI screen starting with ADBase.adl, .opi, .ui, or .edl.
Back to your original post:
Ø
We only want to use “Single” and “Continuous” ImageMode, not “Multiple”.
Even if the hardware only supports Single and Continuous you might want to consider implementing Multiple via software in your driver. That is what a number of the existing
areaDetector drivers do. Users often want to be able to collect N images and then stop acquisition.
Mark
That is what I did in my first implementation, although due to how I set things up I was modifying the ADCore template, which doesn’t seem very portable. I may have to
make a separate AreaDetector project for our sensor and modify that.
Hi Iian,
You can do it in a simpler way. You can just redefine the fields of the existing ImageMode record in the database for your detector. You don’t need to leave a gap. The
ONVL field can be 2, it does not have to be 1.
Here is an example from ADAndor/andorApp/Db/andorCCD.template where additional choices were added:
record(mbbo, "$(P)$(R)ImageMode")
{
field(ZRST, "Single")
field(ZRVL, "0")
field(ONST, "Multiple")
field(ONVL, "1")
field(TWST, "Continuous")
field(TWVL, "2")
field(THST, "Fast Kinetics")
field(THVL, "3")
field(VAL, "2")
}
record(mbbi, "$(P)$(R)ImageMode_RBV")
{
field(ZRST, "Single")
field(ZRVL, "0")
field(ONST, "Multiple")
field(ONVL, "1")
field(TWST, "Continuous")
field(TWVL, "2")
field(THST, "Fast Kinetics")
field(THVL, "3")
field(SCAN, "I/O Intr")
}
In your case you can do:
record(mbbo, "$(P)$(R)ImageMode")
{
field(ZRST, "Single")
field(ZRVL, "0")
field(ONST, "Continuous")
field(ONVL, "2")
}
record(mbbi, "$(P)$(R)ImageMode_RBV")
{
field(ZRST, "Single")
field(ZRVL, "0")
field(ONST, "Continuous")
field(ONVL, "2")
}
Mark
I am using areaDetector in a product. We only want to use “Single” and “Continuous” ImageMode, not “Multiple”. In the first implementation, I modified ADBase.template to remove the “Multiple”
option. For a more portable solution, I made a new mbbo record without the Multiple option, and set the OUT field to $(P)$(R)ImageMode. However, I had to define “ZRVAL” and “TWVAL”, skipping “ONVAL” (Multiple), leaving a gap in a drop-down menu. Is there
a way to avoid this gap?
Thank you,
Iain Marcuson
Software Engineer, Sydor Technologies
585.278.1168 |
www.SydorTechnologies.com
Skype:
[email protected]