MATLABからC言語ヘッダの参照に関して
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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;
0 Kommentare
Antworten (0)
Siehe auch
Kategorien
Mehr zu ワークスペース変数と MAT ファイル finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!