彼らが最初共産主義者を攻撃したとき
▼ 2008/04/27(日) DNRH-001を正しく酷使するための下準備
【DNRH-001】
■UPSの通信を適当に解析
Windowsで使う分には何の問題もないのですが、Linuxで使うとなるとUPSからの電源断信号を受信出来ないと困ります*1。で、さっくりと解析。どうせ大したコトして無かろうと思いつつPortmonで見たら、「Test」という文字を送ってエコーバックした後にひたすらIOCTL_GET_MODEMSTATUSを発行してました。要するに延々とGetCommModemStatusを呼び続けているんだからDSR/RING/CTS/RLSDのどれかが電源断信号*2だろうと踏んでAcknowrichを起動して電源をすっこ抜くと、1秒ぐらい後*3にRLSDが来ました*4。*1 : バッテリの状況もモニタにはあるんですが…
*2 : そしてどれかがバッテリ状況信号なんだろうなぁ…
*3 : 瞬停をバックアップするキャパシタが支えてるんじゃないかなと勝手に妄想
*4 : ちなみに電源を復帰させると即座にRLSDは落ちます
■で、どうしようか
WindowsではGetCommModemStatusを呼べばRLSDの様子が分かりますが、Linuxだとどうなのかさっぱり分からない。んで、ぐぐってみる。と、どうやら/dev/ttyS1をopenする際にDCD*5が立つまでblockされるらしい。んー。シェルスクリプトでほへっと出来るのかなぁ…。取りあえずまた実験せんとね。
*追記(05 May 2008)
日記で書いてます*6がLinuxではgenpowerd使ってshutdown出来ます。まぁ作るとすればWindows版だけですね■バッテリは…
誰か実験して教えてくださいなー。ちなみにわたしのマシンではバッテリの接続を切ってても「Bat OK」と表示される有様でどうしようもありません。バッテリは電源スイッチがONの時に*7適当に充電をしているんで状況がわかると幸せっちゃ幸せなんですがなぁ。コンパレータ(LM339)いくつか積んでるし、ドライブ用と思われるトランジスタが二つあるので何が悪いのかと思ったりもしますな。
*追記
何回か実験したところ、DSRがアクティブになると「Bat Low」になりました。ただ「Bat Low」と出るラインが壮絶に低い*8のか表示が出てすぐに落ちます。その割には電源が繋がっているときは「Bat OK」とか出る*9のであんまり当てになりません…。以上の実験結果をメインの方へ書いてみました。まぁ、バッテリが死んでる個体もある*10のでUPSは動けばおめでとう程度のおまけ*11に考えた方がいいのかもしれません。
▼ コメント(0件)
- TB-URL(確認後に公開) http://mono.kmc.gr.jp/~walkure/013/tb/