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
<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: 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
<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
|