日記

フリーページ

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秒

PR

キーワードサーチ

▼キーワード検索

プロフィール


nisiken2002

お気に入りブログ

まだ登録されていません

Copyright (c) 1997-2019 Rakuten, Inc. All Rights Reserved.