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: | How to work with motor record position counts larger than 2147483648? |
From: | "Sobhani, Bayan" <[email protected]> |
To: | "[email protected]" <[email protected]> |
Date: | Mon, 22 Jan 2018 22:19:56 +0000 |
I am working on adapting the SmarAct MCS motor record driver for the MCS2, which seems to record its position in picometers unlike the MCS’s nanometers. I have the following code in my polling function: Int64_t val = getp(0); //Gets position of channel 0 positioner printf(“%f\n”,(double) val); //prints -6000093133.000000 setDoubleParam(c_p_->motorEncoderPosition_,(double)val); setDoubleParam(c_p_->motorPosition_,(double)val); … callParamCallbacks(); return asynSuccess; But when I look at the motor record, the RRBV is shown as -2147483648. I looked at asynMotorController.cpp and saw the line: createParam(motorEncoderPositionString, asynParamFloat64, &motorEncoderPosition_); Shouldn’t this mean I can write 64-bit floating point values to motorEncoderPosition_ (i.e. larger than 2147483648)? How should I go about working with position counts larger than 2147483648? Alex |