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: Creating calc record in Python softioc |
From: | Paul Nord via Tech-talk <tech-talk at aps.anl.gov> |
To: | "Johnson, Andrew N." <anj at anl.gov> |
Cc: | EPICS tech-talk <tech-talk at aps.anl.gov> |
Date: | Fri, 5 Feb 2021 13:39:17 -0600 |
#!/usr/local/epics/modules/pythonIoc/pythonIocfrom softioc import softioc, builderbuilder.SetDeviceName('XX')rec = builder.aIn('VALUE',VAL=3)calc = builder.records.calc('CALC', CALC = 'A*B', INPA = rec, B = 42)rec.FLNK = builder.PP(calc)#run the iocbuilder.LoadDatabase()softioc.iocInit()#start the ioc shellsoftioc.interactive_ioc(globals())
$ caput "XX:VALUE" 7Old : XX:VALUE 3New : XX:VALUE 7$ caget "XX:CALC"XX:CALC 0
>> dbpr("XX:CALC")A: 0 ASG: B: 42 C: 0CALC: A*B D: 0 DESC: DISA: 0DISP: 0 DISV: 1 E: 0 F: 0G: 0 H: 0 I: 0 J: 0K: 0 L: 0 NAME: XX:CALC SEVR: INVALIDSTAT: UDF TPRO: 0 VAL: 0
Hi Paul,
On Feb 5, 2021, at 12:23 PM, Paul Nord via Tech-talk <tech-talk at aps.anl.gov> wrote:
According to the documentation, this should work:
#!/usr/local/epics/modules/pythonIoc/pythonIoc
from softioc import softioc, builder
builder.SetDeviceName('XX')
rec = builder.aIn('VALUE')
calc = builder.records.calc('CALC', CALC = 'A*B', A = rec, B = 42)
rec.FLNK = builder.PP(calc)
I’ve never used the Python softIoc, but given this error message
AssertionError: Can't write "XX:VALUE" to field A: not a number
have you tried this instead?
calc = builder.records.calc('CALC', CALC = 'A*B', INPA = rec, B = 42)
- Andrew
--Complexity comes for free, simplicity you have to work for.