MATLABからC言語ヘッダの参照に関して

1 view (last 30 days)
Teppei Iwata
Teppei Iwata on 11 Dec 2019
SHマイコンをMATLABを使用して制御しようと考えております.
SHとMATLABの間はシリアル通信で行うことを検討しております.
その際SH上では,送信するデータを構造体に格納し,それをmemcpyを使用してchar型に変換して送信しております.
このデータをMATLABのシリアル通信プログラム(fread)で受信したのですが,このバイナリデータ(charデータ)を構造体に復元することができません.
構造体の情報はSHとMATLABで統一させたいため,ヘッダファイルを参照して構造体に復元したいです.
現状のプログラムを以下に記載致します.
% 現在MATLABを起動しているPCに接続されているシリアルデバイスの一覧を取得する.
serialList = seriallist
if size(serialList) == 1
s = serial(serialList(1))
else
disp('Error: 複数のシリアルデバイスが接続されています');
end
% シリアルオブジェクトを作成したポートに接続されているデバイスに接続する.
s.BaudRate = 57600;
if strcmp(s.Status, 'closed')
fopen(s)
else
disp('Error: OBJ has already benn opened');
end
% デバイスに接続されているかは,このコマンドを実行することでわかる
s.Status
% データの送受信
% 参考: https://jp.mathworks.com/help/matlab/matlab_external/writing-and-reading-data.html
% データの送受信のフロー(どのように送受信が行われているか)は,上の参考URLに記載されている.
fprintf(s, 'H');
pause(1);
if (s.BytesAvailable > 0)
disp('受信データ');
out = fread(s, s.BytesAvailable);
disp(dec2hex(out));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% この場所でoutを構造体に格納したい
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
% 注意: 「’ ’」で記述した文字列には最後に改行コードが追加される(?)
% デバイスの切断
% デバイスを切断する
fclose(s);
clear s;
C言語ヘッダ
tyoedef struct
{
unsigned long time_stamp;
unsigned short encoder;
} sh2pc_dt_t;

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!