fprintfでデー​タを送る際のゼロパデ​ィングのやり方

12 views (last 30 days)
O.E
O.E on 26 Dec 2017
Commented: O.E on 27 Dec 2017
fprintfを用いてデータを送信しようと考えています。
0~255までの16進数のデータの組を10組送ろうと考えて以下のコードを作成しました。
SA = dec2hex(A);
SB = dec2hex(B);
SC = dec2hex(C);
SD = dec2hex(D);
SE = dec2hex(E);
SF = dec2hex(F);
SG = dec2hex(G);
SH = dec2hex(H);
SI = dec2hex(I);
SData = [SA SB SC SD SE SF SG SH SI]; 
s = serial('COM3');
set(s,'BaudRate',115200);
set(s,'Terminator',{'CR/LF','CR/LF'});
fopen(s);
fprintf(s,SData);
このとき例えばAのデータが2であった場合、fprintfでデータを送る際は2桁の状態にして、つまりこの場合で言えば、02として送りたいと考えているのですが、どのようにして数字の前に0をつければいいでしょうか。

Accepted Answer

Jiro Doke
Jiro Doke on 26 Dec 2017
dec2hex のドキュメンテーションをご覧になると、 dec2hex(d,n) という構文があるのがわかります。
>> dec2hex(2,2)
ans =
'02'
また、 dec2hex を使う代わりに、直接 fprintf で二桁の16進法表記を指定することができます。
>> fprintf('%02x',1:20)
0102030405060708090a0b0c0d0e0f1011121314
これをシリアルポートで送るには
>> fprintf(s,'%02x',1:20)
  1 Comment
O.E
O.E on 27 Dec 2017
ありがとうございます。
解決いたしました。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!