I don't think so, I had this problem on Wednesday while writing an areaDetector
IOC that updates a waveform record whenever a new image is saved. If the same
file name is used twice in a row, the second callback does not emit a monitor
event. I'm using EPICS base 3.16 and asyn and areaDetector github master branch.
Em 26/05/2016 10:08, "Mark Davis" <[email protected] <mailto:[email protected]>>
escreveu:
On 5/26/2016 1:52 AM, Torsten Bögershausen wrote:
I remember that Mark Rivers had said something about changing it so that a
callback would happen for parameters for which the appropriate
setXxxParam() function was called, even if the value had not changed. And
I THINK that it made it in to one of the more recent versions, but if so, I
don't remember which one.
Mark Davis, FRIB/NSCL
To my knowledge,
there is no update.
In our driver, we do it like this:
/* If not moving, trigger a record processing at low rate */
if (!nowMoving) setDoubleParam(pC_->motorPosition_,
newPositionInSteps + 1);
setDoubleParam(pC_->motorPosition_, newPositionInSteps);
And I added a test case:
https://github.com/EuropeanSpallationSource/MCAG_Base_Project/blob/master/epics/test/500_DLY-STOP.py
Out of curiosity:
Which kind of device are you using ?
On 25/05/16 23:50, Ford, Christopher wrote:
Hi,
In 2015 there was some discussion on Tech-Talk about how to force a
callback for a parameter that had not changed values.
Mark Rivers suggested a work-around, as shown below.
I wonder if anyone has an update on the situation since then? Has any
other method appeared? Or did you have success with the work-around?
Thanks,
-Chris Ford, SLAC
On16 Nov 2015 Mark Rivers writes:
If a driver wants to force a callback there is a method that does not
require any changes to the base classes, e.g. exposing statusChanged_
as protected or adding a new
isMotorRecordnowFilterButAlwaysProcess_ flag. The driver simply needs
to set a parameter to a different value from present and then back to
its current value, for example
setDoubleParam(pC_->motorPosition_(position+1.);
setDoubleParam(pC_->motorPosition_(position);
callParamCallbacks();
--
Mark Davis
NSCL/FRIB Control Systems Software Engineer
[email protected] <mailto:[email protected]>