一汁三菜

自分が楽しいと思うこと、マラソン、旅行、その他日々の記録をしたい。

D02HWの通信状態の取得

どこから取得するか

MacintoshにはCheetahWatchというソフトウェアがあります。このソフトウェアを使うと、イーモバイルの7.2Mbps対応USBモデムD02HWの電波強度をリアルタイムに取得する事が出来ます。

これと同じ事をWindowsでもしたいと思って調べてみると、hwhack: メモ:D02HW解析にあった。

モデムの観測用インターフェイス

つなげるとATコマンドを受理する。ステートは主インターフェイスの設定を継承している(たとえばate0と主インターフェイスで打ち込んであるとATコマンドにエコーバックしない)。使い道は2つ。

  • インターフェイスで通信をしているときにもATコマンドを受理するので、AT^ANQUERY?(電波強度問い合わせ)などで状態を取得できる
  • インターフェイスで通信しているときは定期的(2秒に一回)、^DSFLORRPTという行が出力される。

なのでCOMnを開いて読み書きすればよさそう。しかし当たり前だけど、PPP通信中はデバイスドライバがCOMnを握ってしまうので、それを奪うことは不可能。

が、探してみれば手はあるもので、E-Mobile Utilityをインストールしたフォルダの下のLog以下を調べてみると、ATRecord.txtに制御用のATコマンドが全てダンプされていた。なので、これを読めばよさそうな感じ。幸いにして、接続中は定期的にAT^ANQUERY?をデバイスドライバが投げてくれるらしいので、その出力を拾っていけば、電波強度の取得は出来そう。

出力フォーマット

しかし、ここで問題になるのが、AT^ANQUERY?コマンドの出力の意味。

^ANQUERY:68,46,69,4

というフォーマットで出力されているのだけれども、このそれぞれの数の意味は何だろう。電波強度をdBで表した物だと考えても、それっぽい数値がいくつかあるし。このあたりあまりよく分からない。

まとめ

  • 制御用インターフェースに対して、AT^ANQUERY?コマンドを投げると電波強度が得られる。
  • だけどCOMnは握れないので、Log\ATRecord.txtから読み出す。
  • ^ANQUERY?の出力値は不明

今のところ、こんな感じ。