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

21 vues (au cours des 30 derniers jours)
O.E
O.E le 26 Déc 2017
Commenté : O.E le 27 Déc 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をつければいいでしょうか。

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!