質問する質問する
 

回答済みWindows CEでの仮想シリアルポートの使用

  • 2009年8月31日 8:06鏑木肆星 ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    お世話になります、鏑木と申します。
    現在、Windows CE 6.0にてC++のアプリケーションを開発しており、そのアプリケーション内でシリアル通信が必要となりました。
    しかし、現在プログラムを開発中の組み込み機器にはUSBポートしかないため、FTDI社のFT232RLというUSB-シリアル変換ドライバーを
    いれて、USBをシリアルの仮想ポートとして通信しようとしています。
    そこで質問なのですが、
    たぶんドライバー自体のインストールには成功していると思うのですが、仮想ポートを開くことが出来ません。
    ポートの開き方として試した方法は
    CreateFile()です。とりあえず、どのポートが開かれるかが、CEの中にハイパーターミナルのようなソフトがないため調べることが出来ず、ポート0~9
    までを全てCreateFile()を呼んでみたのですが、返り値のHANDLEがすべてINVALID_HANDLE_VALUEとなり、失敗してしまいます。

    これはやはりドライバーのインストールに失敗しているということでしょうか?それとも仮想ポートを使用するためには、OSのカタログ作成時に
    シリアル通信関係のものを選択しなければならないのでしょうか?
    解決方法や、仮想ポートの番号を調べる方法をご存じの方がいらっしゃいましたら、ご意見を頂ければと思っております。

    開発環境は
    Windows CE 6.0
    Visual Studio 2005
    です。

回答

  • 2009年9月1日 10:01鏑木肆星 ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     回答済み

    鏑木です。この件に関して自己解決することが出来ました。
    今後の勉強の為にも回答をこちらに書かせていただきます。

    仮想ポートのドライバに関してですが、ドライバのDLLを所定の位置に保存するだけではどうもダメなようでした。
    ・初めに行った方法
    ルートディレクトリ下のWidowsディレクトリ内にドライバのDLLを保存する

    これだけですと、レジストリに書き込まれず、電源をリセットするだけでDLLが削除されてしまいました。
    そこで、
    ・改善した方法
    OSのproject.bib,project.regを以下の様に編集し、

    project.bibファイル
    ****.dll     $(_FLATRELEASEDIR)\****.dll   NK SHK

    project.regファイル
    regの内容をペースト

    とし、ビルドしたOSをKITL接続で、ダウンロードさせることによって、初期起動時からWindowsフォルダ内に
    指定のdllファイルを保存することが出来るようになりました。

    また、もう一点ですが、今回の実機にはUSBコネクタが2つあり、USB1,USB2があったのですが、USB1に
    繋ぐことでCOM0がVCPとなって使用することが出来るようになりました。

    考えて頂いた方、誠に勝手ながらこれで解決とさせて頂きます。ご迷惑をおかけいたしました。

すべての返信

  • 2009年9月1日 10:01鏑木肆星 ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     回答済み

    鏑木です。この件に関して自己解決することが出来ました。
    今後の勉強の為にも回答をこちらに書かせていただきます。

    仮想ポートのドライバに関してですが、ドライバのDLLを所定の位置に保存するだけではどうもダメなようでした。
    ・初めに行った方法
    ルートディレクトリ下のWidowsディレクトリ内にドライバのDLLを保存する

    これだけですと、レジストリに書き込まれず、電源をリセットするだけでDLLが削除されてしまいました。
    そこで、
    ・改善した方法
    OSのproject.bib,project.regを以下の様に編集し、

    project.bibファイル
    ****.dll     $(_FLATRELEASEDIR)\****.dll   NK SHK

    project.regファイル
    regの内容をペースト

    とし、ビルドしたOSをKITL接続で、ダウンロードさせることによって、初期起動時からWindowsフォルダ内に
    指定のdllファイルを保存することが出来るようになりました。

    また、もう一点ですが、今回の実機にはUSBコネクタが2つあり、USB1,USB2があったのですが、USB1に
    繋ぐことでCOM0がVCPとなって使用することが出来るようになりました。

    考えて頂いた方、誠に勝手ながらこれで解決とさせて頂きます。ご迷惑をおかけいたしました。