シリアル COM を介して浮動小数点数を Matlab に送信し、それを単精度浮動小数点数として解釈したいと考えています。
データをシリアル経由でバイト パケットとして送信できます。
送信側では、32ビットの浮動小数点数を8でシフトし、マスクして送信します
(byte)((number >> 8) & 0x000000FF)
(byte)((number >> 16) & 0x000000FF)
...
\r\n (line termination)
ここで、Matlab で COM に接続し、fscanf(s,'%f')
s がシリアル インスタンスであることを使用して受信します。終端行までバイトを読み取ります。
さて、問題は、Matlab の出力が送信したものと同じではないことです。問題は、フロート表現が異なるか、送信順序が異なるかであると思います。
例えば。decimal を送信する1.2 (0x3f99999a)
と、Matlab が出力します1.5315e+010
私は何が間違っているのでしょうか?
編集:
Matlab fscanf http://www.mathworks.co.uk/help/matlab/ref/fscanf.html