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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: [asyn] link already open! |
From: | Pavel Maslov <[email protected]> |
To: | Dirk Zimoch <[email protected]> |
Cc: | EPICS Tech Talk <[email protected]> |
Date: | Mon, 12 Aug 2013 09:48:12 +0200 |
On 09.08.2013 17:05, Pavel Maslov wrote:I do the same and that works for me. But you have to be careful: Are you sure that you load the same version of asyn that you used to compile StreamDevice?
Mark, I cannot do anything to StreamDevice records - I mean I can caget
and caput, but everytime they get processed - those error messages pop
up. And the PVs are invalid all the time never change values. This said,
I can talk to my Java Simulator using asynrecord:
dbpf lambda1-ps:asyn.AOUT "*idn?"
, and I get the response. No problem. So it's StreamDevice that produces
these errors (as you pointed out). Also, I don't think that my Java
Simulator is slow. I tried your solution to lengthen the auto connect
time but the problem still remains.
What I am confident in, though, (sorry for not telling this before) is
that it has to do with the fact that I am loading asyn+streamdevice
support module dynamically (from iocsh).
When I use it the normal EPICS way - everything is fine as it should be.
Sometimes the binary API of asyn changes from one version to another (although the source API is the same). That happens when functions pointers in the function tables get re-ordered in a new asyn version.
Dirk
<mailto:pavel.masloff@gmail.com>]<mailto:[email protected].edu>> wrote:
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]<http://127.0.0.1:7001><http://127.0.0.1:7001>: Connected
Sent: Friday, August 09, 2013 9:00 AM
To: Mark Rivers; EPICS Tech Talk
Subject: Re: [asyn] link already open!
Hi Mark!
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
Port 127.0.0.1:7001<mailto:[email protected].edu><mailto:rivers@cars.uchicago.edu
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:tech-talk-bounces@aps.anl.gov><mailto:tech-talk-[email protected]
<mailto:[email protected].edu>>> wrote:
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
________________________________
From: [email protected]
<mailto:tech-talk-bounces@aps.anl.gov>>
[[email protected]
<mailto:tech-talk-bounces@aps.anl.gov><mailto:tech-talk-[email protected] <mailto:pavel.masloff@gmail.com><mailto:pavel.masloff@gmail.com<http://127.0.0.1:7001><http://127.0.0.1:7001><http://127.0.0.1:7001>:
<mailto:pavel.masloff@gmail.com>>]
Sent: Friday, August 09, 2013 4:20 AM
To: EPICS Tech Talk
Subject: [asyn] link already open!
Hello all,
When can this message pop up:
2013/08/09 11:03:11.051131 lambda1 lambda-ps:CURR:MAX:RBV:
pasynCommon->connect() failed: 127.0.0.1:7001
Link already open!
2013/08/09 11:03:11.052968 lambda1 lambda-ps:CURR:MAX:RBV: Protocol
aborted
--
Regards,
Pavel Maslov, MS
Controls Engineer