I've run into a problem converting data to exponential readings. I have a device that outputs messages and data in the same channel. I have separated the readings from messages with data by using the following records and protocol.
I am wondering whether I can add some arguments in the protocol and convert the data through calcout, but I am new to Streams and can't figure out the details.
Data format: ppsee (p.p * 10see):
Symbols Description
pp Mantissa of the reading (1.0 to 9.9)
s Sign of the exponent (0 = negative, 1 = positive)
ee Exponent (00 to 11)
record(ai, "$(Sys)$(Dev)Ch1_Reading")
{
field(DESC, "Ch1 Reading")
field(DTYP, "stream")
field(INP, "@Televac.proto get_Ch1_reading($(Sys)$(Dev)Ch1message) $(PORT)")
field(SCAN, ".1 second")
}
record(stringin, "$(Sys)$(Dev)Ch1message")
{
}
get_Ch1_reading {
out "S101";
in "%f";
@mismatch {in "%(\$1)39c";}
}
Current channel readback examples:
[sxin@eic-905-pc01 ~]$ caget 905-HC1-Televac:Ch5_Reading device panel reading 1.0E-11
905-HC1-Televac:Ch5_Reading 10011
[sxin@eic-905-pc01 ~]$ caget 905-HC1-Televac:Ch6message
905-HC1-Televac:Ch6message OFF
Thank you!
Susheng