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: scalcout fails to write to bo |
From: | "Mooney, Tim M." <[email protected]> |
To: | Isabella Rey <[email protected]>, "[email protected]" <[email protected]> |
Date: | Fri, 15 May 2015 17:08:39 +0000 |
Hi Isabella,
There are three ways to get the behavior you want in this situation: 1. Have the calc _expression_ produce a string value that is one of the bo record's ZNAM or ONAM strings: record(scalcout, "BS:CAMS_OK") { field(SCAN, ".1 second") field(CALC, "AA==CC ? 'ON' : 'OFF' ") <---<< field(INAA, "CAM1:TRAFFIC_LIGHT") field(OUT, "BS:AUTO PP") field(OOPT, "When Zero") field(CC, "OK") } 2. Have the calc _expression_ explicitly produce a string value that is '0' or '1': record(scalcout, "BS:CAMS_OK") { field(SCAN, ".1 second") field(CALC, "AA==CC ? '1' : '0' ") <---<< field(INAA, "CAM1:TRAFFIC_LIGHT") field(OUT, "BS:AUTO PP") field(OOPT, "When Zero") field(CC, "OK") } 3. Make the scalcout record's conversion from number to string produce zero decimal digits: record(scalcout, "BS:CAMS_OK") { field(PREC, "0") <---<< field(SCAN, ".1 second") field(CALC, "AA==CC") field(INAA, "CAM1:TRAFFIC_LIGHT") field(OUT, "BS:AUTO PP") field(OOPT, "When Zero") field(CC, "OK") } Tim Mooney ([email protected]) (630)252-5417
Software Services Group (www.aps.anl.gov) Advanced Photon Source, Argonne National Lab From: [email protected] [[email protected]] on behalf of Isabella Rey [[email protected]]
Sent: Friday, May 15, 2015 11:21 AM To: [email protected] Subject: scalcout fails to write to bo Hi All,
I have a scalcout record whose output should go into a bo record, as follows:record(scalcout, "BS:CAMS_OK") { field(SCAN, ".1 second") field(CALC, "AA==CC") field(INAA, "CAM1:TRAFFIC_LIGHT") field(OUT, "BS:AUTO PP") field(OOPT, "When Zero") field(CC, "OK") } record(bo, "BS:AUTO") { field(PINI, "YES") field(VAL, "0") field(ZNAM, "OFF") field(ONAM, "ON") } Illegal choice PV: BS:AUTO 0.00000000 record(scalcout, "BS:CAMS_OK") { field(CALC, "AA==CC") field(INAA, "CAM1:TRAFFIC_LIGHT") field(CC, "OK") } record(calcout, "BS:CAMS_OK_FAN") { field(SCAN, ".1 second") field(INPA, "BS:CAMS_OK PP") field(OUT, "BS:AUTO PP") field(OOPT, "When Zero") } record(bo, "BS:AUTO") { field(PINI, "YES") field(VAL, "0") field(ZNAM, "OFF") field(ONAM, "ON") } I could live with the workaround, but it's a bit of a hack...
Any thoughts on why this is not working? |