シリアル通信(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を試みるという不可解な現象が :roll:

wincom.rbを調べてた時に以下のようなページを見つけていたので、最初はてっきりノイズでも :?: と思ったわけですが…。

原因はまったく違って、wincom.rbのポートオープン処理にあった以下のコードが原因でした。今回のケースでは、該当部分をコメントアウトすることで事なきを得たわけですが :)

    bi = @@wEscapeCommFunction.call(@iht,setdtr)    #DTR ON

DTRをオンしているだけなので、普通ならまったく問題ないと思うのですが…DTR信号に反応して、ActiveSyncしようとする挙動の理由が良くわからないんですが… :| そういうモノなんですかね :?:

Rubyスクリプティングテクニック ―テスト駆動による日常業務処理術 Rubyスクリプティングテクニック ―テスト駆動による日常業務処理術
菅野 良二

Rubyによるデザイン・パターン Rubyレシピブック 第2版 268の技 プログラミング言語 Ruby Ajax on Rails Railsレシピブック 183の技
by G-Tools

Be Sociable, Share!

TrackBack URL :

No comments yet. Be the first.

Leave a reply