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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | A way to ensure that a record chain completes processing before processing another record chain |
From: | "Wang, Andrew via Tech-talk" <tech-talk at aps.anl.gov> |
To: | EPICS tech-talk <tech-talk at aps.anl.gov> |
Date: | Tue, 12 Jul 2022 17:38:47 +0000 |
Hi all, This is a bit of a complex question so if there is anything that doesn’t make sense, please let me know and I will do my best to clarify. Basically, we have an IOC, which uses StreamDevice, to talk to an instrument. Within the database file, I have two record chains to perform two operations on the instrument. One is feeding a pattern file to the instrument and another is
for getting some system parameters such as voltage settings, laser status, etc. at a constant scan rate of 1 Hz via a record called slow_scan that has its SCAN field set at 1 Hz. So roughly these are what the two chains are. Chain 1: |slow_scan (1 Hz)| --- FLNK ---> |get_voltage (passive)| --- FLNK ---> |get_laser (passive)| --- FLNK ---> |get_error_flags (passive)| Chain 2: |set_pattern (passive)| --- FLNK --> |check_pattern_good (passive)| Suppose the user wants to feed a pattern file to the instrument and they force-process Chain 2 by calling set_pattern.PROC field via caput, CSS GUI, etc. Ideally I would like Chain 1 to finish before letting Chain 2 start. For example,
suppose the user force-processes Chain 2 while Chain 1 is still processing get_laser. I would like get_error_flags to complete processing first and then allow Chain 2 to process. Then, after Chain 2 processes, I resume slow_scan in Chain 1.
Let me know what your thoughts are on this. Thanks, Andy |