On Wed, 2022-06-29 at 09:28 +0200, Zimoch Dirk wrote:
> On Wed, 2022-06-29 at 07:25 +0000, Zimoch Dirk (PSI) via Tech-talk wrote:
> > Hi Patrick,
> >
> > The error "Record does not accept input" happens when you send a string (parsed with %s) to a record with an enum
> > VAL
> > like your mbbi, but the string does not match any of the enum strings in the record.
> > As your record only has "STANDBY", "OPERATE" and "SELFTEST", it does not accept the input "MONITOR".
> >
> > Dirk
> >
>
> The mbbi should be in INVALID/CALC alarm state after that.
Except.... that your record is "I/O Intr". Such records get all the available input but process only matching input.
Non-matching input is silently ignored. That is by design how StreamDevice implements I/O Intr.
Instead of %s you can use a more specific input format like "%{STANDBY|OPERATE|SELFTEST|}%*s". This one returns 0,1,2 on
the known strings (actually on anything starting with a known string) and 3 on anything else (which is then ignored so
that the format does not fail)). Set an alarm for state 3.
readSystemState
{
in "SYSTEM:STATE %{STANDBY|OPERATE|SELFTEST|}%*s";
out "%(\$1)s";
}
record(mbbi, "RCV_STATE")
{
field(DESC, "SYSTEM:STATE P01")
field(DTYP, "stream")
field(SCAN, "I/O Intr")
field(INP, "@simCmd.proto readSystemState(STATE_RTN) $(PORT) 0")
field(ZRST, "STANDBY")
field(ONST, "OPERATE")
field(TWST, "SELFTEST")
field(THST, "ERROR")
field(THSV, "MAJOR")
field(UNSV, "INVALID")
}
As now StreamDevice returns the index number and not the string, you can even use different Strings in your *ST fields.
>
>
> >
> > On Tue, 2022-06-28 at 16:37 +0000, Barrett (US), Patrick E via Tech-talk wrote:
> > > I am working to simulate a SCPI type device with an IOC. I am using I/O Intr records to read in the SCPI and set
> > > the
> > > state of the mbbi record. The IOC should return ERROR if an error occurs, such as if an invalid state is
> > > requested.
> > > I
> > > can see the error message in the IOC when an invalid state is requested, but do not know how to capture the error
> > > in
> > > the protocol file or db setup to send a return string of “ERROR”.
> > >
> > > The error I get is when sending the IOC “SYSTEM:STATE MONITOR” is: ’… RCV_STATE: Record does not accept input
> > > "MONITOR"’
> > >
> > > Proto definition:
> > > readSystemState
> > > {
> > > in "SYSTEM:STATE %s";
> > > out "%(\$1)s";
> > > }
> > >
> > > Record definition:
> > > record(mbbi, "RCV_STATE")
> > > {
> > > field(DESC, "SYSTEM:STATE P01")
> > > field(DTYP, "stream")
> > > field(SCAN, "I/O Intr")
> > > field(INP, "@simCmd.proto readSystemState(STATE_RTN) $(PORT) 0")
> > > field(ZRST, "STANDBY")
> > > field(ZRVL, "0")
> > > field(ONST, "OPERATE")
> > > field(ONVL, "1")
> > > field(TWST, "SELFTEST")
> > > field(TWVL, "2")
> > > field(UNSV, "INVALID")
> > > }
> > > record(bi, " STATE_RTN ")
> > > {
> > > field(DESC, "State Return")
> > > field(DTYP, "Soft Channel")
> > > field(SCAN, "Passive")
> > > field(ZNAM, "OK")
> > > field(ONAM, "ERROR")
> > > field(VAL, 0)
> > > field(PINI, 1)
> > > }
> > > Patrick Barrett
> > > Software Engineer
> > > The Boeing Company
> > >
- Replies:
- Re: StreamDevice return state error Kasemir, Kay via Tech-talk
- RE: StreamDevice return state error Barrett (US), Patrick E via Tech-talk
- References:
- StreamDevice return state error Barrett (US), Patrick E via Tech-talk
- Re: StreamDevice return state error Zimoch Dirk (PSI) via Tech-talk
- Re: StreamDevice return state error Zimoch Dirk (PSI) via Tech-talk
- Navigate by Date:
- Prev:
Re: StreamDevice return state error Zimoch Dirk (PSI) via Tech-talk
- Next:
Re: Phoebus connection to alarm server / Kafka Ian Gillingham via Tech-talk
- 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
- Navigate by Thread:
- Prev:
Re: StreamDevice return state error Zimoch Dirk (PSI) via Tech-talk
- Next:
Re: StreamDevice return state error Kasemir, Kay via Tech-talk
- 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
|