[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);
}
----ここまで
- Follow-Ups:
- Re: 時計
- From: sato@ba2.so-net.ne.jp
- References:
- Re: 時計
- From: sato@ba2.so-net.ne.jp