2010年4月20日
シリアル通信(WinCE⇔wincom.rb)でハマる
WindowsCE機のシリアル通信プログラムを試験するためにWindows側の対向プログラムをRuby+wincom.rbで書いてみました。
CやC++で書くのも仰々しいし、C#って線もあったけど…試験用の対向プログラムなので、スクリプト言語で安易にちょこちょこ修正できた方が便利ってことで、Ruby+wincom.rbを選択したわけです
まぁ、シリアルを制御するためのスクリプト言語にはRuby以外の選択肢もあったし、Rubyにしてもwincom.rb以外にも数種類の選択肢があったわけですが…対向用のマシンはWindowsだったし、使い方もすごく簡単そうだったのでwincom.rbを採用しました。
機器間は直結のシリアルケーブルで接続していたのですが、WindowsCE機側のPCとの通信設定で「PCとのケーブル接続を有効にする」状態にして、wincom.rbでシリアルポートをオープンするとActiveSyncを試みるという不可解な現象が
wincom.rbを調べてた時に以下のようなページを見つけていたので、最初はてっきりノイズでも
と思ったわけですが…。
原因はまったく違って、wincom.rbのポートオープン処理にあった以下のコードが原因でした。今回のケースでは、該当部分をコメントアウトすることで事なきを得たわけですが
bi = @@wEscapeCommFunction.call(@iht,setdtr) #DTR ON
DTRをオンしているだけなので、普通ならまったく問題ないと思うのですが…DTR信号に反応して、ActiveSyncしようとする挙動の理由が良くわからないんですが…
そういうモノなんですかね
![]() |
Rubyスクリプティングテクニック ―テスト駆動による日常業務処理術 菅野 良二 by G-Tools |
TrackBack URL :

