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

10 Ansichten (letzte 30 Tage)
O.E
O.E am 26 Dez. 2017
Kommentiert: O.E am 27 Dez. 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をつければいいでしょうか。

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!