Experimental Physics and
| |||||||||||||||
|
Channel Access subscription updates are triggered by the database, there is practically no way around that. Changing Channel Access to allow the client to define the update rate would need a compatibility breaking change in the wire protocol, major code changes in the CA server etc. I see three feasible ways to achieve the required behavior: 1. Add records for the slower update rates. One more input record of the same type per signal, with a periodic SCAN of the desired rate and an NPP input to the fast signal. If you want to do averaging or other decimation math, use a compress record in front of your slow record. 2. Write a server-side filter that implements a reduced update rate by throwing away updates that are too fast. The filters that are part of base (in src/std/filters), especially the sync filter, give hints how this should be done. A filter that implements a client-defined maximum update rate would definitely be interesting enough for inclusion in base. 3. Have the client do periodic get() requests instead of a subscription. Yes, that would do a request/response message pair every time, but if you are trying to get from really fast update rates down to once per second, doing a full cycle once per second is not that far off. Cheers, ~Ralph
| ||||||||||||||
ANJ, 30 May 2019 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing · |