【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

フリーページ

2019年02月13日
XML
カテゴリ:Linux
サーボのトリム調整をおこなう場合、ターミナルにパラメータをいろいろ表示できると便利だな~って、
生まれて初めて、エスケープシーケンスを使ってみた。(^^;;;

ターミナルっていうと、いつもダラダラ、情報を垂れ流すイメージだけど、
画面制御文字列を使ってカーソルを操作すると、それらしいウィンドウ画面になります。

調整したトリム情報は、ファイルに保存して、起動時に読み込むことができます。

エスケープシーケンスの参考にしたのは​ここ​。

コードはこんな感じ。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
  char buf[40],*cp;
  int a,b;
  int iPOS[25];
  int i;
  FILE *file;
  file = fopen("iPOS.txt","r");
  if (file == NULL) {
 printf("Can't open file:%s\n","test.txt");
  }
  for ( i = 2; i < 25; i++ ) {
    fscanf(file,"%d\n",&iPOS[i]);
  }
  fclose(file);
     printf("\n*** Servo Trimer ***\n\n\n\n\n\n\n");
  while(1) {
     printf("\033[5A"); // カーソルを上に
   for ( i = 2; i < 14; i++ ) {
     printf("No.%2d ",i);
   }
     printf("\n");
   for ( i = 2; i < 14; i++ ) {
     printf("%5d ",iPOS[i]);
   }
     printf("\n");
   for ( i = 14; i < 25; i++ ) {
     printf("No.%2d ",i);
   }
     printf("\n");
   for ( i = 14; i < 25; i++ ) {
     printf("%5d ",iPOS[i]);
   }
     printf("\n");
     printf("\033[K"); // カーソルから行末までクリア
   fgets(buf, sizeof(buf), stdin);
   if ( buf[0] == 'q' ) break;
   a = (int)(strtol(buf, &cp,0));
   b = (int)(strtol(cp, &cp,0));
   iPOS[a] = b;
  }
  file = fopen("iPOS.txt","w");
  if (file == NULL) {
 printf("Can't open file:%s\n","test.txt");
  }
  for ( i = 2; i < 25; i++ ) {
   fprintf(file,"%d\n",iPOS[i]);
  }
  fclose(file);
  return 0;
}





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2019年02月13日 21時52分12秒
[Linux] カテゴリの最新記事


PR

キーワードサーチ

▼キーワード検索

プロフィール

nisiken2002

nisiken2002

お気に入りブログ

まだ登録されていません

© Rakuten Group, Inc.