1chipMSXと無線LAN(FlashAir) その4
2017-02-28


こちらのサイトを参考に、1chipMSXの起動時に外部タイムサーバーから時間を取得してセットするluaスクリプトを書いてみた。
制限はいくつかあるけど、日付時刻の自動取得が実現できる。

仕様は
1・FlashAIRの起動時実行スクリプトで、日付時刻指定用のバッチファイル作成
2・AUTOEXECの中で1のバッチを呼び出し
という簡単なもの。

日付時刻指定用のバッチの作成タイミングは、無線LANが有効になるまでの時間を考慮して、8秒後に指定。
起動に時間がかかる1chipNextorMSXだと十分間に合うみたい。

欠点は、日付時刻指定用のバッチは電源ON時に更新=リセットでは更新されないので、リセットしたときには時間が巻き戻る事。
MSX側からluaスクリプト呼べるか、なにかプログラム組めればどうにかできそうな気もするけど、とりあえず気にしない方向で…

以下手順。
※FlashAirはSTAモードで。

FlashAirのカレントに
TIMESET.BAT ファイル(空)
SCRIPT ディレクトリ
を用意

FlashAirのSD_WLANディレクトリのCONFIGファイルに1行追加
LUA_RUN_SCRIPT=/SCRIPT/startup.lua

上記サイトからダウンロードした
libFlashTime.lua
をlibFT.luaという名前でSCRIPTディレクトリに配置

以下スクリプトを
startup.lua
という名前でSCRIPTディレクトリに配置
---------------------------------------------
print("Script Start")
sleep(8000)
local timebat   = "/TIMESET.BAT"
local t = require "/SCRIPT/libFT"
print("Get Time from NICT")
t.SetNICT();
t.ShowTime();

local Year,Month,Day,Hour,min,sec = t.GetTime();
local outfile = io.open(timebat, "w")

print("DATE "..Year.."/"..Month.."/"..Day.."\r\n")
outfile:write("DATE "..Year.."/"..Month.."/"..Day.."\r\n")
print("TIME "..Hour..":"..min..":"..sec.."\r\n")
outfile:write("TIME "..Hour..":"..min..":"..sec.."\r\n")

outfile:close()

print("Script End")

これで、FlashAirの起動毎にカレントのTIMESET.BATが更新される。
後はAutoexec内から
COMMAND2.COM TIMESET.BAT
として呼び出すだけ。


続きを読む

[FlashAir]
[MSX]
[Nextor]

コメント(全2件)
コメントをする


記事を書く
powered by ASAHIネット