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: asynAddress, asynPortDriver maxAddr, and addr in setXXXParam |
From: | Emmanuel Mayssat <[email protected]> |
To: | Mark Rivers <[email protected]>, "[email protected]" <[email protected]> |
Date: | Wed, 17 Apr 2013 16:32:58 -0700 |
Mark, It seems to be because all asynPrint calls in the asyn source, never print the asynAddress. I guess it means that if it works for asynAddress=0, then it work for all asynAddresses<MAX_ADDRESS Is that what is intended? -- Emmanuel From: [email protected] To: [email protected]; [email protected] Subject: RE: asynAddress, asynPortDriver maxAddr, and addr in setXXXParam Date: Thu, 11 Apr 2013 16:37:02 -0700 ASYN_MULTIDEVICE was the issue. Thank you. BTW, why aren't multi-devices and all interfaces enabled by default? -- Emmanuel > From: [email protected] > To: [email protected]; [email protected] > Subject: RE: asynAddress, asynPortDriver maxAddr, and addr in setXXXParam > Date: Sat, 6 Apr 2013 14:33:13 +0000 > > Hi Emmanuel, > > You've sent 2 questions/problems about asyn to tech-talk recently: > > In the first query you asked: > > But when I start the IOC, that line cause the following error: > > WATCH:8:CrntTimeSI devAsynOctet::initCommon interface asynOctet not found > > which apparently means that the asynOctet interface is not registered. > > Isn't the asynPortDriver supposed to take care of that? > > I replied: > > One of the arguments passed to the asynPortDriver constructor is a bit-mask of all of the asyn interfaces your driver will support. > > You forgot to set the asynOctetMask bit in your call to the constructor. Here is an example from asyn/testErrorsApp/src/testErrors.cpp > > In the second query you asked: > > My understanding of maxAddr is that the parameter library is an array of param lists x maxAddr > > So if I set the asynAddress to a value between 0 and maxAddr, I should be able to 'browse' the whole parameter library. > > I replied: > > That is correct. > > Did you set the ASYN_MULTIDEVICE bit in the "asynFlags" parameter in your call to the asynPortDriver base class constructor? > > But you have not posted a follow up on these so that we would know if my suggestions solved your problems. > > It's helpful for me to know if there is a problem I don't know about in asyn, and it's helpful for the tech-talk community to know if the suggestion worked, in case others have a similar problem in the future. > > Mark > > > From: Mark Rivers > Sent: Thursday, April 04, 2013 7:29 PM > To: 'Emmanuel Mayssat'; [email protected] > Subject: RE: asynAddress, asynPortDriver maxAddr, and addr in setXXXParam > > > My understanding of maxAddr is that the parameter library is an array of param lists x maxAddr > > That is correct. > > > So if I set the asynAddress to a value between 0 and maxAddr, I should be able to 'browse' the whole parameter library. > > That is correct. > > Did you set the ASYN_MULTIDEVICE bit in the "asynFlags" parameter in your call to the asynPortDriver base class constructor? > > Mark > > > From: [email protected] [mailto:[email protected]] On Behalf Of Emmanuel Mayssat > Sent: Thursday, April 04, 2013 7:14 PM > To: [email protected] > Subject: asynAddress, asynPortDriver maxAddr, and addr in setXXXParam > > My understanding of maxAddr is that the parameter library is an array of param lists x maxAddr > So if I set the asynAddress to a value between 0 and maxAddr, I should be able to 'browse' the whole parameter library. > > In other words, 2 records with the INP field as > field(INP, "@asyn(asynPort,1,$(asynTimeout))REASON") <-- asynAddress = 1 > and > field(INP, "@asyn(asynPort,2,$(asynTimeout))REASON") > and with > field(PINI, "1") > should immediately read different values. > > A quick test with > /* setDoubleParam(0, P_Reason, 1.0) */ > setDoubleParam(1, P_Reason, 2.0) > setDoubleParam(2, P_Reason, 3.0) > in asynPortDriver constructor and after firing up the ioc, both of the records want to read the address 0. > > Are those addresses related? What am i missing? > > -- > Emmanuel > > |