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

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をつければいいでしょうか。

 Risposta accettata

Jiro Doke
Jiro Doke il 26 Dic 2017

2 voti

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

1 Commento

O.E
O.E il 27 Dic 2017
ありがとうございます。
解決いたしました。

Accedi per commentare.

Più risposte (0)

Richiesto:

O.E
il 26 Dic 2017

Commentato:

O.E
il 27 Dic 2017

Community Treasure Hunt

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

Start Hunting!