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: asynError IOC message |
From: | Mark Rivers <[email protected]> |
To: | "'Vikram Bhagat'" <[email protected]>, epics talk <[email protected]> |
Date: | Wed, 16 Oct 2013 23:13:56 +0000 |
>> Are using standard asyn device support?
> I am using asynDriver with my own support. I think you mean you are using your own asynPort driver, but you are using the standard asyn device support for the ai record from asyn/devEpics/devAsynInt32.c, right?
case temperature:
retval = readCOMPort("0" , &val); if (retval) return asynError; if (val < 10) {
pasynUser->auxStatus = INVALID; } *value = val; return asynSuccess;
Not quite. It should be:
pasynUser->auxStatus = asynError; Mark From: Vikram Bhagat [mailto:[email protected]]
Hi Mark, Are you using an asyn port driver that you wrote? ->I am using my own asyn driver wrote using asynDriver ----------- You seem to be using standard devAsynUInt32Digital device support. But it sounds like you are reading temperature, which I would have thought would use an "ai" record. But
devAsynUInt32Digital does not support the ai record. For that one would use devAsynInt32. Why are using devAsynUInt32Digital rather than devAsynInt32 (if the device returns an integer) or devAsynFloat64 (if the device returns a floating point number). ---------- Actually i miss print there are 2 message on IOC one is for UInt32Digital and there is asynInt32, my mistake i picked up wrong one from IOC shell in copy past. i am using
ai record. --------- Are you saying that in your driver you are reading 10, and you would like the record to have INVALID alarm in this case, even though the hardware support as low as -10? ------ Actually in front end electronics not behave ok lower then 10 and second it is not of my interest. so I want to signal in device support that reading lower than 10 is INVALID.
even though i am displaying that value. ----------- In your driver set the pasynUser->auxStatus field to asynError in your read() function or the callback function to device support. That will set the record alarm without printing
an error message. Don't return asynError as the function return, return asynSuccess instead. -------- you mean to say in my asynRead function i can directly write case temperature:
retval = readCOMPort("0" , &val); if (retval) return asynError; if (val < 10) {
pasynUser->auxStatus = INVALID; } *value = val; return asynSuccess;
Thanks & Regards Vikram On Wednesday, October 16, 2013 2:28 PM, Mark Rivers <[email protected]> wrote: Hi Vikram,
|