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

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

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 19 Dec 2012
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

More Answers (0)

Community Treasure Hunt

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

Start Hunting!