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

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

采纳的回答

MathWorks Support Team
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!