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: disconnect and reconnect port via PV |
From: | Mark Rivers <[email protected]> |
To: | "'Niedermayer, Philipp'" <[email protected]>, Bruno Martins <[email protected]> |
Cc: | "[email protected]" <[email protected]> |
Date: | Tue, 4 Sep 2018 13:51:00 +0000 |
Hi Philipp, > Out of curiosity: is it also possible to change the IP-Address of the VXI-11 device in a similar fashion? No, I don’t think that is currently possible. It is possible with the drvAsynIPPort driver. That implements the asynOption interface, and the option “hostInfo” allows
one to specify a new IP name or IP address to connect to. It closes the existing connection and connects to the new address. drvVxi11.c does implement the asynOption interface, but the only option it currently supports is “rpctimeout”. I am not sure how hard it would be to also support “hostInfo”.
I don’t really have any VXI11 devices to test with, so someone else would need to implement and test this. Mark From: Niedermayer, Philipp <[email protected]>
Hello Mark, hello Bruno, thank you very much for your answers, it was exactly what I was looking for. Out of curiosity: is it also possible to change the IP-Address of the VXI-11 device in a similar fashion? Greetings Philipp Von: Mark Rivers [mailto:[email protected]]
Hi Philip, You should be able to do what you want by loading an asynRecord in that IOC and setting its PORT field to the name of “device_port” you used in the vxi11Configure command.
Below is a screen shot of the medm screen for controlling the asynRecord. Note that there are 2 widgets labelled “Connect”, which is a bit confusing. The upper one is the .PCNCT field and connects the asynRecord to an asyn port. It results in a call to pasynManager->connectDevice() or pasynManager->disconnect(). You
want to leave that in the Connect state. The lower one is the .CNCT field, and connects or disconnects the actual device, i.e. it calls pasynCommon->connect() or pasynCommon->disconnect(). If you select Disconnect
on this then it will close the VXI11 connection. You will also need to set the .AUCT field to noAutoConnect so that asynManager does not try to automatically reconnect the device the next time a record tries to communicate with it. Let me know if you have questions or problems. Mark From:
[email protected] <[email protected]>
On Behalf Of Niedermayer, Philipp Hello everyone, I have implemented a soft IOC that communicates to a spectrum analyzer via asyn and stream device using vxi11: vxi11Configure("device_port","$(DEVICE_IP)",0,"0.0","inst0",0,0) The device has a limitation that it can only be controlled by one remote controller at a time. The current approach is to temporarily stop the entire soft IOC when required and then restart it via the st.cmd file. It would be better to have a PV (e.g. a bo with CONNECTED/DISCONNECTED state) for this task, that can dis- and reconnect the asyn port. I know that you can disable record processing by the DISA field, but that did not prevent asyn to keep up a connection to the device in background. I found the “asynManager” which has the promising “connectDevice” and “disconnect” option, but I’m not sure how to (if at all) call them from the PV. Is there a way to have such a PV? How could that be implemented? Greetings and tanks in advance Philipp
|