Ø
Or just set all SCAN fields to the same value. Why do you need this to be linked?
In my experience the advantage of linking is that then you can expose the SCAN field of a single record in the OPI and the scan rate of all records is changed.
Ø
I am still wondering why there is nothing foreseen to get prompt execution of a record (and its protocol) once its read via caget (prior
to returning the result).
caget does not cause a record to process, it just reads the current value of the record. That is by design. If you want to process the record you can write to the .PROC field, and then do a caget.
Note that there are alternative ways of talking to devices besides StreamDevice. If you write a driver (for example using the asynPortDriver class) then it can be polling very fast. You can set your record to have SCAN=I/O Intr and it
will process “immediately” when the readback changes, even if that readback change was not due to a “set” operation.
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Ralph Lange via Tech-talk
Sent: Thursday, July 16, 2020 11:31 AM
To: EPICS Tech Talk <tech-talk at aps.anl.gov>
Subject: Re: Stream device - general concept how to use
[...]
Connecting all the get-records together via forward-links sounds a bit
unpractical for maintenance.
Maybe then its better to use a single (or nested if one is not enough)
Fanout records for regular scanning of all status-records ?
Soft event scanning is your friend for such cases. No fanouts needed.
Or just set all SCAN fields to the same value. Why do you need this to be linked?
I am still wondering why there is nothing foreseen to get prompt
execution of a record (and its protocol) once its read via caget (prior
to returning the result).
This would be similar to the PP ProcessPassive flag mechanism when using
input links.
Your record processes asynchronously. The PP mechanism on input links does the same thing as Channel Access: return the current value. Your input link causes the record to process, but always returns the old value.
Asynchronous processing can take any time between pretty fast and never to complete. Waiting that long is not acceptable in database processing (and not nice for a CA client).