EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  <20072008  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  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: Sequencer problem
From: "Mark Rivers" <[email protected]>
To: <[email protected]>, <[email protected]>
Date: Mon, 12 Feb 2007 08:26:54 -0600
Benjamin,
 
This is from the online documentation at:
http://www.slac.stanford.edu/comp/unix/package/epics/sequencer/manual/Manual-6.html#pgfId-691616

pvPut


int pvPut( variable_name )

int pvPut( variable_name , SYNC )

int pvPut( variable_name , ASYNC )

This function puts (or writes) the value of an SNL variable to the underlying control system variable. The function returns the status from the PV layer ( e.g. pvStatOK for success).

By default, pvPut does not wait for the put to be complete; completion must be inferred by other means. The optional SYNC argument causes it to block on completion with a hard-coded timeout of 10s. The optional ASYNC argument allows completion to be checked via a subsequent call to pvPutComplete (typically in a when clause).

Note that, when using channel access, the SYNC and ASYNC arguments result in use of ca_put_callback ; if neither optional argument is specified, ca_put is called as with previous versions.


pvPutComplete


int pvPutComplete( variable_name )

int pvPutComplete( array_name )

int pvPutComplete( array_name , long any )

int pvPutComplete( array_name , long any , long * pComplete )

This function returns TRUE if the last put of this control system variable has completed. This call is appropriate only if pvPut 's optional ASYNC argument was used.

The first form is appropriate when the SNL variable is a scalar. However, it can also be an array (each of whose elements may be assigned to a different control system variable). In this case, the single argument form returns TRUE if the last puts of all the elements of the array have completed (the missing arguments are implicitly 0 and NULL respectively). If any is TRUE , then the function returns TRUE if any put has completed since the last call. If pComplete is non-NULL, it should be a long array of the same length as the SNL variable and its elements will be set to TRUE if and only if the corresponding put has completed.



***********************************************



So pvPutComplete is documented.

Mark


 

________________________________




From: Benjamin Franksen [mailto:[email protected]]
Sent: Mon 2/12/2007 8:22 AM
To: [email protected]
Subject: Re: Sequencer problem




On Monday 12 February 2007 14:38, Benjamin Franksen wrote:
> being in the final stages of the process to convert an application from
> 3.13 to 3.14, I have just noted that the latest version of the sequencer
> (2.0.11) does not contain the built-in routines pvPutAsync,
> pvPutComplete, and pvPutWait, which have been added to the 3.13
> compatible branch around version 1.9.6 or so.

After taking a closer look, I see that at least pvPutComplete seems to exist
in seq-2.0.11, although it is undocumented.

> Have they been renamed to something else? Or have they never been in the
> 2.0 branch? If the latter, how do other people solve the problem of
> finding out reliably whether and when a pvPut has been completely
> executed?

So am I right in assuming that the standard solution is to pvPutComplete
inside the condition of a when-clause? (This could become tedious if you
want to issue many such pvPuts in sequence, where each one should only be
issued after teh one before is complete -- you'd need as many additional
states as pvPut actions in the sequence, right?)

Ben
--
"Programming = Mathematics + Murphy's Law" (Dijkstra in EWD1008)




Replies:
Re: Sequencer problem Benjamin Franksen
References:
Sequencer problem Benjamin Franksen
Re: Sequencer problem Benjamin Franksen

Navigate by Date:
Prev: Re: Sequencer problem Benjamin Franksen
Next: VxWorks SSH server Lawrence T. Hoff
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Sequencer problem Benjamin Franksen
Next: Re: Sequencer problem Benjamin Franksen
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 10 Nov 2011 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·