少し遊んでみた

  • 投稿日:
  • by
  • カテゴリ:

サンプルのLEDの点滅間隔制御は、設定用のCGIが、静的なHTMLになっているため、設定されている値の如何に関わらず、常に’1’を表示していて面白くない。ので、設定値を読み込んで、設定ページのフォームに値を埋めるようにしてみた。

何のことはない。’/’ を text/html の index.htmlにしてあった部分を変えて、’/’も cgi で、index_func()とかを実行するという風に変えただけ。

あとは、生成された、main.cに、indexページを生成するコードを書けばいいだけ。尤も、main.cに書き込むとごちゃごちゃしすぎるから、sample_cgi.cの中に、本体を作って、main.cはそれを呼び出すだけにした。

設定値を書き込むのに、安易にsprintf()を使ったら、「制限サイズを超える」とリンカに怒られてしまった。横着しないで、一桁ずつ書き込むことに。

void CgiScriptIndex(T_HTTP_SERVER *http) 
{   
  static char page[512];   
  char *p;   
  strcpy(page, (char*)index_cgi1);   
  TMO tmo = LedTmo / 100;   
  unsigned long n;   
  unsigned int nz = 0;   
  p = &page[strlen(page)];   
  for (n = 1000000 ; n > 0 ; n /= 10) {   
    if (nz || tmo / n > 0) {   
      *p++ = '0' + (tmo / n);   
      tmo %= n;   
      nz = 1;   
    }   
  }
  strcpy(p, (char *)index_cgi2);
  HttpSendText(http, (char*)page, strlen(page) + 1);  
}

あまり、凝ったページは作れないし、とりあえず内容がないようだから、512byte以内ってコトにしたけれど、まぁ、こんなものだろうか?

とりあえず、当初の目標通り、最初のフォームに、設定値が出るようになったので、プチうれしい(^^)。