EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  <20252026  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  <20252026 
<== Date ==> <== Thread ==>

Subject: Populate a waveform from substitutions file
From: Dariush Hampai via Tech-talk <[email protected]>
To: Dariush Hampai <[email protected]>, Mark Rivers <[email protected]>
Date: Tue, 11 Nov 2025 19:39:03 +0100
Hi community,
Hi Mark,

I'm trying to do a SNL state machine, however I need some help in order to conlude the work.
This SNL is really simple: a scan acquisition (from start to and end with step movement), i.e. a motor and a detector. Up to now, I did the while loop and the sequence of commands is right. However, as the motors and the detectors need a waiting time (to reach the position or to wait the end acquisition) I hade to include a nested while loop to wait the "hardware ready". Unfortunately, as all the devices have different way to say "I'm ready", I put a substitution file in order to have the list for all the terminators.
file db/scan.db {
        pattern {ioc, ready}
                {"mm4006_1", "@"}
                {"pi_1", "0"}
                {"pi_2", "1"}
                {"ortec_1", "1"}
                ...
}
Has I define which device I'm using ad a record in db
record(stringout, $(user):motor_device) {
        field(DESC, "Num device motor")
}
so for example
caput xlabsrv2:motor_name mm4006_1
How can I prepare two waveforms (or and array with 2 columns) and populate them as one reads from the substitution file the IOCs, the second the terminatro character,
record(waveform, $(user):ioc) {
        field(DESC, "IOC loaded")
        field(NELM, "200")
        field(FTVL, "STRING")
        field(PINI, "YES")
}
record(waveform, $(user):ready) {
        field(DESC, "Terminators loaded")
        field(NELM, "200")
        field(FTVL, "STRING")
        field(PINI, "YES")
}

find the index that correspond to the IOC selected, and extract the corresponding charater?
Have you any idea?
Thank you in advance

Dariush


PhD Dr. Dariush Hampai

INFN - LNF
X-Lab Frascati
Via E. Fermi, 54 (ex 40)
I-00044 Frascati (RM)
Italy

Room: +39.06.9403.5248
Lab.: +39.06.9403.2286
Mob.: +39.06.9403.8025
Fax.: +39.06.9403.2597

Replies:
RE: Populate a waveform from substitutions file Mark Rivers via Tech-talk

Navigate by Date:
Prev: Re: caget: Identical process variable names on multiple servers Guruswamy, Tejas via Tech-talk
Next: Re: caget: Identical process variable names on multiple servers Smith, Martin via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  <20252026 
Navigate by Thread:
Prev: Re: caget: Identical process variable names on multiple servers J. Lewis Muir via Tech-talk
Next: RE: Populate a waveform from substitutions file Mark Rivers via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  <20252026 
ANJ, 19 Mar 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·