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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: StreamDevice for an odd float format |
From: | Ralph Lange via Tech-talk <[email protected]> |
To: | EPICS Tech Talk <[email protected]> |
Date: | Fri, 7 Jun 2019 16:44:24 +0200 |
Thanks, I like your approach. I'll give it a try.
Garth
From: Priller, John <[email protected]>
Sent: Wednesday, June 5, 2019 2:05:30 PM
To: Davis, Mark; [email protected]; Brown, Garth
Subject: Re: StreamDevice for an odd float formatZ is just the letter I selected when I wrote my protocol converter add-on. There's a couple issues doing it this way but it seemed the best way forward for us at the time.
One, the interface to Stream is unofficial and can (and does) change from version to version.
Two, several necessary header files aren't exported as part of the package. We have a lightly-patched version of Stream we link against that does export those files
From: [email protected] <[email protected]> on behalf of Davis, Mark via Tech-talk <[email protected]>
Sent: Wednesday, June 5, 2019 4:01 PM
To: Brown, Garth; [email protected]
Subject: Re: StreamDevice for an odd float formatYou can add your own format converters to StreamDevice.
John Priller ([email protected]) at our lab has written the code for several odd format like this (see attached code). I believe the one you want is the %ZHF one.
Mark
Mark Davis NSCL/FRIB Control Systems Software Engineer [email protected]On 6/5/2019 1:58 PM, Brown, Garth via Tech-talk wrote:
Hi All,
I'm trying to use StreamDevice to talk to a device that is almost, but not quite, giving me data that the format converters (as I understand them) can convert.
It’s an ASCII representation of the IEEE 32 bit floating point format, e.g. the raw data for a value of 28.0 is
0x34 0x31 0x45 0x30 0x30 0x30 0x30 0x30
Which is the ASCII code for
41E00000
Which is the IEEE-754 floating point representation of 28.0.
I think that if the raw data were 0x41E00000, %R would be able to convert it. And if the raw data were
0x32 0x38 0x2E 0x30 (ASCII for 28.0)
then %f would be able to convert it.Before I start writing calc records to convert the 32 bits to a float value, I figured I'd ask if someone had a less brute-force approach. Maybe a StreamDevice format converter trick I don't know about?
Thanks,Garth