EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  <20002001  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  <20002001  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: EPICS on a PC
From: "Dennis M. Reichhold" <[email protected]>
To: [email protected]
Date: Thu, 20 Jul 2000 13:56:43 -0400 (EDT)
Hell0

A co-worker is writing a program in Win9x to read out many channels and he
frequently runs into problems (he mail to me follows).  He's reading 288
each from two of the IOC's (they're the ones that time-out most often).  
Is this something that will plague us as long as we're running on a PC, or
is there a way around it?  He's based his code on 3.13.1 for PC.  Thanks.

						-Dennis

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

I have some problems accessing different EPICS channels with
this diagnostic message:
=======================================================
CA.Client.Diagnostic..............................................
    Message: "User specified timeout on IO operation expired"
    Severity: "Warning" Context: "ca_pend_io failure"
..................................................................
CA.Client.Diagnostic..............................................
    Message: "The request was ignored because the specified channel is disconnected"
    Severity: "Error" Context: "ca_get failure"   
=======================================================

It seems to be wrong timeout parameter in ca_pend_io.
I'd tried to set it to 20 seconds but stil get this messages.
I'm sending you small piece of my code, which I put
into a DLL, may be it's wrong (I'm not so familiar with EPICS).
The main program just calls:

   CA_Initialize();
    while(!Terminated) {
       CA_Get(...); // for each variable name (about 400 calls) in each cycle.
    }
   CA_Task_Exit();
   
The reason for clearing channels after each reading is as follows:
It's hard to implement CHID structure in my program,
therefore I can't keep CHID for each variable.
There is another two ways to do it :
    Either make whole program in Visual C
    or put CHID array into my wrapper DLL, together with CA_Initialize
    and others.
Could you advise something or explain me what's wrong with that ?
May be timeout is still too small ?

================== Code goes here =================

DLL_API int CA_Initialize(void)
{
   return ca_task_initialize();
}

DLL_API int CA_Task_Exit(void)
{
   return ca_task_exit();
}

DLL_API int CA_Get(char *name, void *value)
{
    int status;
    chid        mychid;

    ca_search(name,&mychid);
    ca_pend_io(5.0);
    status=ca_get(mychid->privType,mychid,value);
    ca_pend_io(5.0);
    ca_clear_channel(mychid);
    ca_pend_io(5.0);
    return status;
}



Replies:
RE: EPICS on a PC Jeff Hill

Navigate by Date:
Prev: Kinetic Systems 2917/3922 CAMAC interface on PowerPC Mark Rivers
Next: RE: EPICS on a PC Jeff Hill
Index: 1994  1995  1996  1997  1998  1999  <20002001  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: Kinetic Systems 2917/3922 CAMAC interface on PowerPC Mark Rivers
Next: RE: EPICS on a PC Jeff Hill
Index: 1994  1995  1996  1997  1998  1999  <20002001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·