16進数のデータを送受信する方法はありますか?

13 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2012 年 12 月 19 日
Instrument Control Toolbox を使用し、外部機器と通信をしています。16進数のデータを送受信する方法を教えてください。下記コードでは、ASCII文字としてデータが送信されてしまいます。
s = serial('COM1');
fopen(s)
fprintf(s,'%X','E8')
fclose(s)
delete(s)
clear s

採用された回答

MathWorks Support Team
MathWorks Support Team 2012 年 12 月 19 日
Instrument Control Toolbox で16進数の値を送受信する場合は FWRITE/FREAD 関数をご利用ください。FWRITE ではバイナリデータを扱うことが可能です。
s = serial('COM1');
fopen(s);
%%データ定義
txdata = ['01';'E8';'C3';'00';'B2';'F9';'76'];
%10進数へ変換
txdata_dec = hex2dec(txdata);
%Uint8で送信
fwrite(s,tcdata_dec,'uint8');
%データを受信
rxdata_dec = fread(s);
%16進数へ変換
rxdata = dec2hex(rcdata_dec)
fclose(s)
delete(s)
clear s

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!