Patrick,
Event flags can be explicitly set, which is typically used to allow
communication between state sets. Or event flags can be synced to a PV,
and will be set whenever a monitor is received for that PV, as in the
example I sent you.
You can use the efTest() function outside of a when statement, just like
any other function.
Mark
-----Original Message-----
From: Patrick Thomas [mailto:[email protected]]
Sent: Thursday, October 01, 2009 5:20 PM
To: Mark Rivers
Cc: [email protected]
Subject: Re: state notation code flags
Hi Mark,
Are the flags on a monitored variable set whenever the monitored
variable is used in the code, including a pvPut, pvGet, assignment,
calculation, or print statement? Is there a way to test if the flag is
set besides an efTest in a when statement?
Thank you,
Patrick
Mark Rivers wrote:
> Hio Patrick,
>
> Here are some code snippets from one of my SNL programs. It has a
variable nelements assigned to a PV, and a monitor on that PV. It has
an event flag, nelementsMon that is synced to nelements. Whenever
nelements changes the event flag will be set. In the init state I clear
the event flag, just to be sure it is clear when the SNL code starts
running (after all PVs connect). I then use efTestAndClear in a when
statement to take actions when that event flag is set, and to clear it.
This works fine for me.
>
> int nelements; assign nelements to "{P}{R}Nelements.VAL";
> monitor nelements;
> evflag nelementsMon; sync nelements nelementsMon;
>
>
> /* Initialize things when first starting */
> state init {
> when() {
> /* Clear all event flags */
> ...
>
> efClear(nelementsMon);
> } state monitor_inputs
> }
>
>
> ...
>
> state monitor_inputs {
>
> ...
>
> when(efTestAndClear(nelementsMon) && (nelements>=1)) {
> /* If nelements changes, then change endPulses to this
value,
> * since this is what the user normally wants. endPulses
can be
> * changed again after changing nelements if this is
desired. */
> if (moveMode == MOVE_MODE_RELATIVE)
> endPulses = nelements;
> else
> endPulses = nelements-1;
> pvPut(endPulses);
> } state monitor_inputs
> }
>
> Mark
>
> ________________________________
>
> From: [email protected] on behalf of Patrick Thomas
> Sent: Wed 9/30/2009 10:35 PM
> To: [email protected]
> Subject: state notation code flags
>
>
>
> Hi,
>
> I was wondering if there is a way to track at what point in the state
> notation code evflags are getting set and cleared, or if someone could
> clarify under what conditions they get set. I'm having trouble with
them
> getting set somewhere and not being cleared, but I'm not sure where.
>
> Thank you,
> Patrick
>
>
>
- Replies:
- Re: state notation code flags Patrick Thomas
- Re: state notation code flags Patrick Thomas
- References:
- state notation code flags Patrick Thomas
- RE: state notation code flags Mark Rivers
- Re: state notation code flags Patrick Thomas
- Navigate by Date:
- Prev:
Re: state notation code flags Patrick Thomas
- Next:
propagating value upward at init Emmanuel Mayssat
- 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
- Navigate by Thread:
- Prev:
Re: state notation code flags Patrick Thomas
- Next:
Re: state notation code flags Patrick Thomas
- 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
|