Ticket #33777

ブレイルメモBMスマート40がUSB接続で認識されない

Open Date: 2014-05-08 22:21 Last Update: 2014-05-15 22:22

Reporter: nishimoto Owner: nishimoto
Type: Bugs Status: Closed
Component: 点字ディスプレイ MileStone: 2014.2jp-public-beta (closed)
Priority: 5 - Medium Severity: 5 - Medium
Resolution: Fixed

Details

NVDA 日本語版の KGS BM シリーズのドライバーで、ブレイルメモBMスマート40がUSB接続で認識されないという報告をいただいています。

KGS でも現象は把握されているそうです。

NVDA 日本語版のドライバーで COM ポートのスキャンの方法を変えないといけないのかも知れませんが、まずなにか情報収集のためのツールを作って、実機を持っている人に実行してもらう必要がありそうです。

Attachment File List

No attachments

Ticket History (3/12 Histories)

2014-05-08 22:21 Updated by: nishimoto
  • New Ticket "ブレイルメモBMスマート40がUSB接続で認識されない" created
2014-05-10 22:55 Updated by: nishimoto
Comment

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接続したポートがどのように検出されるか、ログの内容をご報告いただけないでしょうか?

2014-05-11 10:01 Updated by: nishimoto
Comment

ちなみに 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)
2014-05-12 11:02 Updated by: nishimoto
Comment

関連チケット

#33795 ダミー点字ドライバの開発

ダミー点字ドライバ 0.2.1

https://dl.dropboxusercontent.com/u/62564469/dummyBraille-0.2.1.nvda-addon

シリアルポートのスキャン結果が分からないと、これ以上の作業はできない (情報が得られても問題解決につながるかどうかはわからない) のですが、本件を解決できなくても 2014.2jp をリリースしてよいでしょうか。 ご意見をお聞かせください。

2014-05-12 13:27 Updated by: nishimoto
Comment

ダミー点字ドライバ 0.2.2

https://dl.dropboxusercontent.com/u/62564469/dummyBraille-0.2.2.nvda-addon

有効でないシリアルポートもスキャンするように修正しました。

2014-05-12 14:40 Updated by: nishimoto
Comment

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

2014-05-12 22:58 Updated by: nishimoto
Comment

listComPorts(onlyAvailable=False) でポートスキャンを試していただいたのですが、接続されているはずの COM10 が検出されなかったようです。

可能性:

  • NVDAの実装:hwPortUtils モジュールにバグがあってスキャン(listComPorts)に失敗している?
  • Windows API:SetupDiGetClassDevs で GUID_CLASS_COMPORT をスキャンしても取得できないシリアルポートが存在する?
  • KGSのドライバー:BMスマート40 の USB ドライバが仮想シリアルポートではない、BMユーティリティはシリアルポートではないものをCOM10と表示している?

選択肢:

  • ポートをスキャンする別の方法をもっと模索する
  • ポートスキャンをやめて COM1 から COM64 くらいまでユーザーに選択させるようにする(ただし、そうすればつながるという保証はない)
  • KGS の技術情報をもっと集める(KGSのサイトに開発者登録してログインしてみたが、BMスマートの情報はなかった。具体的に問い合わせるべき?)
  • 実機でデバッグするべき?どこからどうやって実機を借りる?
2014-05-13 23:15 Updated by: nishimoto
Comment

アドオン版 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ポートを指定して、 うまくつながるかどうか調べていただけるとありがたいです。

ソースコードのレポジトリ:

https://bitbucket.org/nishimotz/kgsbn46

2014-05-14 10:24 Updated by: nishimoto
Comment

前述のアプローチで解決しそうなので「2014.2jp公開ベータ版」をマイルストーンにします。

2014-05-15 12:49 Updated by: nishimoto
Comment

日本語テスト版 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
2014-05-15 21:02 Updated by: nishimoto
  • Resolution Update from Accepted to Fixed
Comment

ti33777 ブランチを jp2014.2 にマージしました。

この問題が起きる場合は自動設定ではなくCOMポートを手動で選んでもらうようにドキュメントに記載したいと思います。

ドキュメントを更新したらクローズします。

2014-05-15 22:22 Updated by: nishimoto
  • Ticket Close date is changed to 2014-05-15 22:22
  • Status Update from Open to Closed
Comment

「日本語版の説明」の KGS BrailleMemoシリーズ の説明に下記を追加しました。

このドライバーではポートの自動設定に加えて、COM1からCOM64までのポートが選択できます。
USB接続で自動設定に失敗する場合は、ポートを指定して接続してください。
To ssh://git@bitbucket.org/nvdajp/nvdajp.git
   43a9b26..2551961  jp2014.2 -> jp2014.2

Edit

Please login to add comment to this ticket » Login