Yes – this is true. Some options:
There are some options
You could write something in the driver that allocates memory on initialization and puts the arrays in there – point the device support at the buffered data.
Disable the digitizer until it is rearmed
Look are areaDetector for processing the arrays under the EPICS database
Channel Access also does not buffer arrays – it only queues up the pointer to the array. If you are reusing the same buffer (as the waveform record does) it
may also be overwritten if the client is not taking the data fast enough.
We are working on ways to better support very large arrays in EPICS V4 – these must be done for us over the next 12 months – but only pieces are done now.
Bob
From:
[email protected] [mailto:[email protected]]
On Behalf Of Vishnu Patel
Sent: Friday, February 21, 2014 12:35 PM
To: techtalk
Subject: Waveform record I/O interrupt. asyn
Hello,
I am facing problem in I/O Interrupt for waveform record in the asyn. If the value of waveform record change very fast then some of the samples missing or same sample repeat twice even if before p_interruptInt32Array->callback ()
function the value is scanned properly by driver. But i think the read value is pushed to the callback but it is not handle that much fast in the callback.
I checked the code for interruptCallbackInput in devAsynXXXArray.h.
In devAsynXXXArray.c dbScanUnlock has been used before scanIoRequest(). Can it create problem for repeating same value?
My assumption is as dbScanUnlock and before scanIoRequest() execute, value change and second time triggers interrupt. This result same value for both interrupts.
I checked interrupt callback code in devAsynInt32.c where epicsMutexUnlock has been used after scanIoRequest().
Get your own
FREE website,
FREE domain &
FREE mobile app with Company email.
|
Know
More >
|