AIRcable、数秒の空白――続続々・シリアルポートマニアになりたい

未だにBluetooth CSA経由のKX-HV200や、てるろーど等への接続が行えないAIRcableですが、この原因を、「PPPごっこ」により追ってみました。


PPPごっこというのは、何の事はなく、シリアルコンソール上で自分がモデムのフリをすることです(^^;;; ほとんどのダイアルアップ機器で用いられているヘイズ互換のATコマンドでは、


マシン側:ATZ
モデム側:OK
マシン側:ATDTxxxx.....
モデム側:CONNECT....


という感じのコマンドを受け取ることで、xxxx...の先に電話をかけ、その後IDとパスワードを送信してPPP接続の確立を試みます。つまり、IDとパスワードを受け取る直前までは、プレーンテキストのやりとりで進行するため、モデム側をコンソールで真似できるのです。と言う訳で、まずはibCardでやってみました。すると、あっさりATDTの先まで進みます。


が、問題はAIRcableです。コンソール上に最初のATZが現れません。これは実は出てないのではなく、コマンドが既に発行された後なのでは、と思い至ってOKを入力。すると案の定ATDT...と電話をかけるコマンドが流れてきました。これでようやく納得。


つまりAIRcableでは、マシン側(ザウルス)のDTRがオンになってAIRcableが接続を開始してから、実際に接続が確立する数秒間の間に受け取ったデータを無視しているのです。BlueZでも、接続に1〜数秒程度掛かっているはずですが、こちらはバッファか何かに保持しておき、接続確立後に一気にコマンドを発行しているものと思われます。AIRcableの場合、最初のATZに当たるコマンドがモデム側に伝わっていないため、モデムがOKを返さずに、そのまま接続が停止してしまうようです。厄介な問題ですね。


となると、解決方法としてはDTRをオンにした後に、数秒待ってからATZコマンドを発行させるという手が考えられます。今のところ勉強不足のため、どう設定すれば良いのかまだ分かっていません。が、原因が分かっただけでも随分気が楽になりました。これからゆっくりと改善していこうと思います(^^