Sounds like you still need a Python softIoc expert then.
It might be helpful if you post the output of
dbpr("XX:CALC", 2)
and
dbpr("XX: VALUE", 2)
though so we can see what it sets all the fields to though.
- Andrew
Andrew,
That loads without error. But the calculation doesn't actually work.
#!/usr/local/epics/modules/pythonIoc/pythonIoc
from softioc import softioc, builder
builder.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 ioc
builder.LoadDatabase()
softioc.iocInit()
#start the ioc shell
softioc.interactive_ioc(globals())
===========
$ caput "XX:VALUE" 7
Old : XX:VALUE 3
New : XX:VALUE 7
$ caget "XX:CALC"
XX:CALC 0
===========
>> dbpr("XX:CALC")
A: 0 ASG: B: 42 C: 0
CALC: A*B D: 0 DESC: DISA: 0
DISP: 0 DISV: 1 E: 0 F: 0
G: 0 H: 0 I: 0 J: 0
K: 0 L: 0 NAME: XX:CALC SEVR: INVALID
STAT: 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.
|