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 16:59:26 -0600 |
Sounds like you still need a Python softIoc expert then.
It might be helpful if you post the output ofdbpr("XX:CALC", 2)anddbpr("XX: VALUE", 2)though so we can see what it sets all the fields to though.
- Andrew
On Feb 5, 2021, at 1:39 PM, Paul Nord <Paul.Nord at valpo.edu> wrote:
Andrew,
That loads without error. But the calculation doesn't actually work.
#!/usr/local/epics/modules/pythonIoc/pythonIoc
from 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
On Fri, Feb 5, 2021 at 1:27 PM Johnson, Andrew N. <anj at anl.gov> wrote:
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.
--Complexity comes for free, simplicity you have to work for.