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 2025 | 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 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: [asyn] link already open! |
From: | Pavel Maslov <[email protected]> |
To: | Mark Rivers <[email protected]>, EPICS Tech Talk <[email protected]> |
Date: | Fri, 9 Aug 2013 17:05:23 +0200 |
You have created the port with autoconnect disabled. Thus, I expect the error message that says that queueRequest failed, because the port is not connected. But then asynReport says that the port is connected. This must be because StreamDevice connected it? But once it is connected then your StreamDevice records should work correctly. Do they? If you force an input or output record to process does it work?
One possibility for your problem is that your Java server takes longer than 0.5 second to connect. If a port has autoconnect enabled, then when the port is first connected asyn will try to connect to it, but it will only wait 0.5 seconds by default. You can lengthen that time to 2 seconds, for example with this command before you create the IP port.
asynSetAutoConnectTimeout 2.0
You can also try to wait for the port to connect in your startup script with this command:
asynWaitConnect(const char *portName, double timeout)
i.e.
asynWaitConnect("lambda1", 2.0)
right after your drvAsynIPPortConfigure command.
Mark
________________________________
From: Pavel Maslov [[email protected]]
Sent: Friday, August 09, 2013 9:00 AM
To: Mark Rivers; EPICS Tech Talk
Subject: Re: [asyn] link already open!
Hi Mark!Port 127.0.0.1:7001<http://127.0.0.1:7001>: Connected
The error occurs at iocInit (since my PVs have PINI=YES) and each time I read/write via CA.
The server is a Java Device Simulator at localhost:7001. It is always running and it never disconnects. All of my PVs are marked Invalid. In fact they have not been initialized.
I have tried with noAutoConnect=1 and this is what i get:
epics> 2013/08/09 15:48:06.034504 CAS-client lambda-ps:PWR_OUTPUT:RBV lockRequest: pasynManager->queueRequest() failed: port lambda1 not connected
epics> asynReport 2
lambda1 multiDevice:No canBlock:Yes autoConnect:No
enabled:Yes connected:Yes numberConnects 1
nDevices 0 nQueued 0 blocked:No
asynManagerLock:No synchronousLock:No
exceptionActive:No exceptionUsers 2 exceptionNotifys 0
interposeInterfaceList
asynOctet pinterface 0x7fdceea29800 drvPvt 0x1c6f820
interfaceList
asynCommon pinterface 0x7fdceea26c60 drvPvt 0x1c6c270
asynOctet pinterface 0x1c6c2f8 drvPvt 0x1c6c270
fd: 9
Characters written: 0
Characters read: 0
--
Regards,
Pavel Maslov, MS
On Fri, Aug 9, 2013 at 3:16 PM, Mark Rivers <[email protected]<mailto:[email protected]>> wrote:From: [email protected]<mailto:[email protected]> [[email protected]<mailto:[email protected]>] on behalf of Pavel Maslov [[email protected]<mailto:[email protected]>]
Please provide some more information:
- When does the error occur? At iocInit when connecting to the device for the first time? When the server first comes on line? When the server is restarted?
- The server is at port 7001 on the localhost. Is that server always running when the IOC is running? Does the server disconnect after each transaction?
You have created the drvAsynIPPort with the default value of 0 for the last 3 parameters, so it is using noAutoConnect=0, which means that asynManager will automatically try to connect the port before queuing a request. If the connection attempt fails then asynManager will not queue the request. So I am having a hard time understanding how StreamDevice found the port disconnected, unless your server disconnected in the time between when asynManager queued the request and when StreamDevice was called.
Mark
________________________________
Sent: Friday, August 09, 2013 4:20 AM2013/08/09 11:03:11.051131 lambda1 lambda-ps:CURR:MAX:RBV: pasynCommon->connect() failed: 127.0.0.1:7001<http://127.0.0.1:7001><http://127.0.0.1:7001>: Link already open!
To: EPICS Tech Talk
Subject: [asyn] link already open!
Hello all,
When can this message pop up:
2013/08/09 11:03:11.052968 lambda1 lambda-ps:CURR:MAX:RBV: Protocol aborted
--
Regards,
Pavel Maslov, MS
Controls Engineer