In p4p (python) implementation of EPICS PVAccess protocol you have full control of the processing loop. It should be no problem to implement your processing flow. An AI agent usually can do most of the routine coding very well.
Hi Karel, One approach you might look at uses the Event scan type and the record EVNT fields which hold event names. You can write your own C/C++ code that periodically calls postEvent(evnt); where the EVENTPVT evnt was returned by a call
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.
ZjQcmQRYFpfptBannerEnd
Hi Karel,
One approach you might look at uses the Event scan type and the record
EVNT fields which hold event names.
You can write your own C/C++ code that periodically calls postEvent(evnt); where the
EVENTPVT evnt was returned by a call to eventNameToHandle(char *name) and that
name string matches the EVNT fields of one or more records. Posting an event like that causes all of the records whose
EVNT values match to be processed by one of the IOC’s callback tasks. You can create as many of these as you like (within memory limits) so you can spread them around in time as you need.
The IOC shell command scanpel is useful to see what event names your IOC knows, or list which records will be scanned by a particular event name that you provide (recent versions of Base even accept a pattern for matching name).
HTH,
- Andrew
--
Complexity comes for free, Simplicity you have to work for.
On 8/24/26, 3:37 PM, "Tech-talk" <tech-talk-bounces at aps.anl.gov> wrote:
Hi,
I have a slightly weird question and Claude suggested it's not possible, but I'll still ask.
I'm writing device support for Ekspla laser units. They have several hundred registers which are published as individual HTML pages, reading all of them usually takes several seconds. The device support is a subclass of AsynPortDriver.
I want to read some of the registers once per second, while many others may be read only once per minute. But it occured to me, that when the scan thread schedules processing of the bulk of the records, my once-per-second registers will be delayed probably
by more than a seconds, which is undesirable. I was looking for a mechanism to spread processing of the slow records over the minute interval or to somehow process the fast records with higher priority, but didn't find anything suitable.
Does EPICS base or asyn driver provide a mechanism for this? I mean something nicer than using a sequence record.
Thanks,
Karel
Karel Majer | Controls Software Development Group Leader
Phone: +420 607 205 469
E-mail: karel.majer@eli-laser.eu
|
|
ELI Beamlines Facility|The Extreme Light Infrastructure ERIC
Za Radnicí 835, 252 41 Dolní Břežany, The Czech Republic
www.eli-laser.eu
|