Experimental Physics and Industrial Control System
Hi Matt,
In general for complex application I would recommend that you ignore the
ca_array_get() and ca_pend_io() functions completely — they're designed for
simple linear programs. Instead you should aim to get all of your completion
notifications from CA using callbacks, calling ca_poll() or ca_pend_event() in
your event loop (or turning on preemptive callbacks and adding locks). Note
that using ca_get_callback() also means that you don't have to allocate a data
buffer for an incoming array until it arrives. You can't use ca_array_get()
for variable-length arrays either.
BTW, ca_pend_event() returns ECA_TIMEOUT in normal operation, because it
doesn't normally return until that time has elapsed. The alternative return
code is ECA_EVDISALLOW which means you called it from inside a callback
routine (not allowed).
HTH,
- Andrew
--
Optimization is the process of taking something that works and
replacing it with something that almost works, but costs less.
-- Roger Needham
- References:
- reading large data arrays over slow networks Matt Newville
- Navigate by Date:
- Prev:
Re: epicsQt plugin build errors Martin Konrad
- Next:
Re: reading large data arrays over slow networks Kevin Peterson
- 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: reading large data arrays over slow networks Matt Newville
- Next:
Re: reading large data arrays over slow networks Kevin Peterson
- 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