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

10 次查看(过去 30 天)
O.E
O.E 2017-12-26
评论: O.E 2017-12-27
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をつければいいでしょうか。

采纳的回答

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

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!