[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 時計



よついです。

> > はい、ですからWinCEに戻して電源offの状態で数時間後の再立ち上げの場合です。
> > 時間を設定しなくて動作には問題ないですが、(たまにgmakeが文句言うくらい)
> > 文章など書いてるとつい触ってる機械の時計を見てしまうので。
> > WinCEでの経過時間をrc.localなんかで足せたらという願望です。
> > ついでにbootにかかる時間も足さないとダメですね。
> 
> 時間があっていないのを前提にrcで自動で変な処理をすると
> 時間があっている場合に困るとおもいますが...
今の使い方では、WinCEでは絶対に時間を合わせないと思います。
というわけで、人に手伝ってもらって書いてみました。(ほとんど書いてもらった)
#もしかしたらいらないものincludeしてるかもです。

date `./timefix` 
半日程、rc.localで動かしていますが、数回bootしても全く問題無いように思えます。
どのような場合に困るのでしょうか?
母艦と繋いでいる時はtimedにでも合わせるようにすれば良いと思います。(やってないです)

異常終了せず、CEで時間とtimezoneの設定をしなければかなり正確です。
NICを挿しているかいないかで5秒ほど狂ってしまいます。
DOS領域をdisklabelに書かないと使えません。
リセットされた時間とbootにかかる時間もそれぞれ修正する必要があります。

#プログラミングできる人って偉いなとあらためて実感。
#まともに勉強しなきゃいけないのかなぁ

--timefix.c--ここから

#include <stdio.h>
#include <string.h>
#include <time.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>


main () 
{
  struct stat bootini; /* pbsdboot.ini 情報 */
  time_t currenttime; /* RTC */
  time_t fixingtime; /* 修正したカレンダー時間 */
  struct tm fixedtime; /* 修正したローカル時間 */
  struct tm startuptime; /* 1998.1.2.05:00 Friday JST (ローカル時間) */
  time_t startupctime; /* 1998.1.2.05:00 Friday JST (カレンダー時間) */
  char outputtime;   /* dateへの出力 */

  /*
  startuptime.tm_sec=0;
  startuptime.tm_min=0;
  startuptime.tm_hour=5;
  bootなどにかかる28secも修正すると*/
  startuptime.tm_sec=32;
  startuptime.tm_min=59;
  startuptime.tm_hour=4;
  startuptime.tm_mday=2;
  startuptime.tm_mon=0;
  startuptime.tm_year=98;
  startuptime.tm_wday=5;
  startuptime.tm_yday=1;
  startuptime.tm_isdst=0;

  startupctime=mktime(&startuptime);

  stat("/dos/pbsdboot.ini",&bootini);
  
  currenttime=time(0);
  fixingtime=currenttime+bootini.st_mtime-startupctime;
  fixedtime=*localtime(&fixingtime);

  strftime(&outputtime,15,"%Y%m%d%H%M.%S",&fixedtime);

  printf("%s\n",&outputtime);
  
}

----ここまで