ブレイルメモBMスマート40がUSB接続で認識されない
COMポートのスキャンだけを行うダミー点字ディスプレイドライバーのアドオンを作りました。
https://dl.dropboxusercontent.com/u/62564469/dummyBraille-0.1.nvda-addon
このアドオンを組み込んで、点字設定で Dummy Braille を選ぶと、ログに(例えば)下記のように書き込まれます。
INFO - external:brailleDisplayDrivers.dummyBraille.BrailleDisplayDriver.__init__ (22:48:22): port(COM9) hw(BTHENUM\{00001101-0000-1000-8000-00805f9b34fb}_LOCALMFG&0000) fr(Bluetooth リンク経由の標準シリアル (COM9)) bt(None) INFO - external:brailleDisplayDrivers.dummyBraille.BrailleDisplayDriver.__init__ (22:48:22): port(COM8) hw(BTHENUM\{00001101-0000-1000-8000-00805f9b34fb}_LOCALMFG&000f) fr(Bluetooth リンク経由の標準シリアル (COM8)) bt(bm series)
またスキャンされたポートが点字設定のポート選択に追加されます。
もし可能であれば、BMスマート40がUSB接続された状態で、このダミードライバーを選択していただき、USB接続したポートがどのように検出されるか、ログの内容をご報告いただけないでしょうか?
ちなみに BM46 のUSBドライバーは下記のように認識されます:
INFO - external:brailleDisplayDrivers.dummyBraille.BrailleDisplayDriver.__init__ (09:59:24): port(COM5) hw(USB\VID_1148&PID_0001&REV_0001) fr(KGS USB To Serial Com Port (COM5)) bt(None)
関連チケット
#33795 ダミー点字ドライバの開発
ダミー点字ドライバ 0.2.1
https://dl.dropboxusercontent.com/u/62564469/dummyBraille-0.2.1.nvda-addon
シリアルポートのスキャン結果が分からないと、これ以上の作業はできない (情報が得られても問題解決につながるかどうかはわからない) のですが、本件を解決できなくても 2014.2jp をリリースしてよいでしょうか。 ご意見をお聞かせください。
ダミー点字ドライバ 0.2.2
https://dl.dropboxusercontent.com/u/62564469/dummyBraille-0.2.2.nvda-addon
有効でないシリアルポートもスキャンするように修正しました。
hwPortUtils.py の listComPorts(onlyAvailable=False) を使うと解決するかも知れないのですが、このオプションが何をやるかについての情報:
onlyAvailable=True の場合は DIGCF_PRESENT をつけて SetupDiGetClassDevs が実行される。
SetupDiGetClassDevs
http://msdn.microsoft.com/ja-jp/library/cc429195.aspx
日本マイクロソフト株式会社の DDK/WDK サポートチームの blog 記事:
http://blogs.msdn.com/b/jpwdkblog/archive/2009/07/15/setupdi-api-devcon-setupdi-api.aspx
listComPorts(onlyAvailable=False) でポートスキャンを試していただいたのですが、接続されているはずの COM10 が検出されなかったようです。
可能性:
選択肢:
アドオン版 KGS 点字ディスプレイドライバー kgs-1.0.3
https://dl.dropboxusercontent.com/u/62564469/kgs-1.0.3.nvda-addon
このアドオンをインストールすると BM シリーズと BN46 のドライバーがアドオン版で置き換わります。
いまのところCOM ポートを1から64まですべて選択できるようにしたことだけが仕様の違いです。
内部処理としては2種類のドライバーの共通部分の実装をまとめていますが、 テストはブレイルメモ BM46 でしかやっていません。 なるべく kgsbn46 側の実装を残すようにリファクタリングしたので、 BN46 サポートは壊れてないと思いますが。。
このアドオン版ドライバーを使うと、スキャンに失敗していたポートも強制的に指定できるので、 これで BMスマートのUSBポートを指定して、 うまくつながるかどうか調べていただけるとありがたいです。
ソースコードのレポジトリ:
前述のアプローチで解決しそうなので「2014.2jp公開ベータ版」をマイルストーンにします。
日本語テスト版 jpbeta140515
https://dl.dropboxusercontent.com/u/62564469/nvda_jpbeta140515.exe
点字デバイスコントローラ(KBDC)が複数起動してしまうという報告があったので (DirectBM DLL のインスタンスが複数になるためか?) 今回はアドオンではなく、NVDA 日本語版の KGS ドライバーのポート選択肢の表示だけを変更しました。 Windows が現在有効なポートと判断したものだけポートに名前を付けるようにしています。
アドオン版ドライバーだと BM46 で複数アプリケーションからの接続がうまく行かない という報告があります。
こちらでも NVDA から BM46 に接続した状態で、 BMPad を起動すると、点字出力の初期化に失敗するようです。
点字デバイスコントローラのオプション設定に依存するのか、 BM ユーティリティのバージョンに依存するのか、 もう少し調べてみたいと思います。
以下、開発に関する情報。
このテスト版は jp2014.2 ブランチから派生した ti33777 をビルドしています:
To ssh://git@bitbucket.org/nvdajp/nvdajp.git * [new branch] ti33777 -> ti33777
ti33777 ブランチを jp2014.2 にマージしました。
この問題が起きる場合は自動設定ではなくCOMポートを手動で選んでもらうようにドキュメントに記載したいと思います。
ドキュメントを更新したらクローズします。
「日本語版の説明」の KGS BrailleMemoシリーズ の説明に下記を追加しました。
このドライバーではポートの自動設定に加えて、COM1からCOM64までのポートが選択できます。 USB接続で自動設定に失敗する場合は、ポートを指定して接続してください。
To ssh://git@bitbucket.org/nvdajp/nvdajp.git 43a9b26..2551961 jp2014.2 -> jp2014.2
NVDA 日本語版の KGS BM シリーズのドライバーで、ブレイルメモBMスマート40がUSB接続で認識されないという報告をいただいています。
KGS でも現象は把握されているそうです。
NVDA 日本語版のドライバーで COM ポートのスキャンの方法を変えないといけないのかも知れませんが、まずなにか情報収集のためのツールを作って、実機を持っている人に実行してもらう必要がありそうです。