0

シリアル 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

4

2 に答える 2

1

データがバイナリの場合は、のfread代わりに試してください。fscanf

于 2013-04-10T20:56:10.977 に答える