USBのセンサから出力されたバイナリデータの変換方法を教えて下さい
2 次查看(过去 30 天)
显示 更早的评论
USB出力のジャイロセンサをPCに接続して使用しています。 Matlabのコマンドウィンドウから、以下のようにRAWデータの要求を行いデータが返ってきました。 しかしながら、肝心な測定データがバイナリデータのため文字化けしてしまいました。

また、RAWデータフォーマットは以下のようになっています。

データ型:X(ASCII) U(Unsigned) I(Signed)
バイナリデータから測定値に変換する方法を教えてください。 よろしくお願いします。
1 个评论
Walter Roberson
2016-12-21
编辑:Walter Roberson
2016-12-21
Approximate translation:
USB output gyro sensor is connected to the PC. From the command window of Matlab, we requested RAW data and returned the data as follows. However, since the measurement data which is important is binary data, it got garbled.
The RAW data format is as follows.
采纳的回答
Walter Roberson
2016-12-21
You should use fread() rather than fscanf() when you are working with binary. You should also be reading a specific number of bytes, rather than looking for a line terminator, as the line terminator can accidentally occur in the binary. You should configure BytesAvailableFcnMode to 'bytes'.
2 个评论
Walter Roberson
2016-12-22
The "Data Size" appears to start counting from the '$' but not to include the CR LF.
It appears that the data is in Big-Endian format, so you probably need to swapbytes() on the data.
angular_x = swapbytes( typecast(out(18:19), 'int8') );
angular_y = swapbytes( typecast(out(20:21), 'int8') );
angular_z = swapbytes( typecast(out(22:23), 'int8') );
acceleration_x = swapbytes( typecast(out(24:25), 'int8') );
acceleration_y = swapbytes( typecast(out(26:27), 'int8') );
acceleration_z = swapbytes( typecast(out(28:29), 'int8') );
and so on.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
