Hallo Heinz,
I did a little test with 3.15.9 and the lso and stringout records. The database load did not like the single quote on the the string value.
With double quotes the lso still had problems like you report. I have never used the lso.
3.15.9 did not like the JSON link which Steve mentioned. Sorry for being no help here.
stringout accepts the string both for the VAL and DOL field, however if you use DOL, it is interpreted as a CA link and the string does not end up in the VAL field. The record reference manual says this for both the lso and stringout:
"DOL can also be a constant in addition to a link, in which case VAL is initialized to the constant value. Your string constant, however, may be interpreted as a CA link name. If you want to initialize your string output record, it is therefore best to use
the VAL field. Note that if DOL is a constant, OMSL cannot be closed_loop ."
HTH - rolf -
-- The old generation has to die off so that a new set of idiots can make the same mistakes all over again --
Rolf Keitel, Ph.D
Researcher Emeritus
Tel.: 604 222 7453
e-mail:
rolf at triumf.ca
TRIUMF Canada’s particle accelerator centre
4004 Wesbrook Mall Vancouver, BC, V6T 2A3
www.triumf.ca |
Twitter |
Facebook |
Instagram
TRIUMF is located on the traditional, ancestral, and unceded territory of the xʷməθkʷəy̓əm (Musqueam) people
who for millennia have passed on their culture, history, and traditions from one generation to the next on this site
From: Tech-talk on behalf of Heinz Junkes via Tech-talk
Sent: Monday, September 9, 2024 8:44 AM
To: EPICS Tech Talk
Subject: lso record
Good evening,
I have a problem with the lso (long string out) record.
When I use it as a replacement for stringout (limited to 41 char),
according to the Record reference Manual : "To initialize a string output record it is simplest to set the VAL field directly"
record(lso, "$(user):zone0")
{
field(VAL, 'blabberblabberblub')
}
I get the following message:
dbLoadRecords "db/tempLinuxExample.db", "user=ares"
Can't set "ares:zone0.VAL" to "blabberblabberblub" : Bad Field value
ERROR: at or before ')' in file "db/tempLinuxExample.db" line 7
7 | field(VAL, 'blabberblabberblub')
ERROR failed to load 'db/tempLinuxExample.db’
We then tried the contradictory definitions of the description:
"DOL can also be a constant instead of a link, in which case VAL is initialized to the constant value.”
record(lso, "$(user):zone0")
{
field(DOL, 'blabberblabberblub')
}
epics@ares:~$ caget -s ares:zone0.VAL$
ares:zone0.VAL$ 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
But I don't quite understand this:
"The first field that determines where the desired output originates is the output mode select (OMSL) field, which can have two possible values: closed_loop or supervisory. If closed_loop is specified, the VAL field's value is fetched from the address specified
in the Desired Output Link field (DOL) which can be either a database link or a channel access link. If supervisory is specified, DOL is ignored, “
record(lso, "$(user):zone0")
{
field(OMSL, "closed_loop")
field(DOL, 'blabberblabberblub')
}
The same output :
epics@ares:~$ caget -s ares:zone0.VAL$
ares:zone0.VAL$ 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Danke Heinz
|