printfで指定の位置に文字を表示する

Printf関数でUART接続してデバッグとかありますが、同じ文字列が永遠と\nの改行だとだーっと流れてしまってとても見づらい。なので以下のようにすれば、同じ場所を書き換えてくれるから行数があるかぎり沢山表示しても平気っていう感じで。 例

#include <stdio.h>

int main(void)
{
                printf("\033[1;1H");
                printf("VOL.In %.6f\n", VOL.read());
                printf("\033[1;20H");
                printf("VOL-PWM-OUT   %.6f\n", VOLFET);
                printf("\033[2;1H");
                printf("THU.In %.6f\n", TH.read());
                printf("\033[2;20H");
                printf("THLED-PWM-OUT %.6f\n", THLED);
                printf("\033[3;1H");
                printf("IC.In  %.6f\n", IC.read());
                printf("\033[3;20H");
                printf("ICLED-PWM-OUT %.6f\n", ICLED);
}

/*
printf("\033[2J")画面クリア
printf("\033[K カーソル位置〜行末迄をクリア 
printf("\033[yA カーソルを上へy行移動
printf("\033[yB カーソルを下へy行移動
printf("\033[xC カーソルを右へx桁移動
printf("\033[xD カーソルを左へx桁移動
printf("\033[y;xH カーソルをy行x桁目へ移動
ESCは\033 で 8進 \x1b で16進
*/

上記の例だと、1行目の1桁目から小数点以下6桁で表示、1行目の20桁目から小数点以下6桁で表示、二行目の1桁目から小数点以下6桁で表示、二行目の20桁目から小数点以下6桁で表示、三行目(以下略 ぐるぐる回しとけば同じ位置を描画するのでターミナルの表示が許す限り改行で流れる事はないですよ。


Please log in to post comments.