[nvdajp-team 1075] Re: 開発スナップショットjpdev130105

MISONO mison****@my*****
2013年 1月 5日 (土) 21:14:22 JST


 MISONOです。

ログもできればML共有してほしいところです。

_kgs.py
みました。ソースだけみた範囲では、

たぶん

def statusChanged(nStatus, nDispSize):
のコールバックと、
def connect(comPort = None):
def disconnect():
のタイミングがうまくいっていないように読めます。

def connect(comPort = None):
でみると、

ポートチェックを最初はすべてで、
2回目はリスト化した存在するポートでスキャンしてますよね。

それぞれのループでいえることですが、

				if connected:

の判定が不十分でコールバックのタイミングと必ずしも合わない可能性がありま
す。

				watchdog.alive()
をパスしていますし・・・。
(				watchdog.alive()
は単にもともとはイベントドリブンをセットしてるだけっていう話もあります
が)

できれば 
connected
の判定を5秒ぐらいループで回して、その間にTrueが返されればOKでそうでなけ
れば落とすように改良した方がいいです。

終了処理も上記と同じことがいえます。

さらに、

	ret = kgsDLL.bmEndDisplayMode()
	ret = kgsDLL.bmEnd()
これらも戻り値を調べて確実に終わらせないと、他のピンディスを使用するソフ
トウェアに影響してきます。しかも、これらの関数を呼ぶには connected が真
である条件付きです。

とりあえず、こんなところでしょうか。

ハードとのやりとりは大変ですが、よろしくお願いします。


>西本です。
>
>開発スナップショットjpdev130105
>https://dl.dropbox.com/u/62564469/nvda_snapshot_jpdev130105.exe
>
>USB仮想ポートではない実際のシリアルポートも自動設定のスキャン対象にしました。
>
>misonoさま:
>ご教示ありがとうございます。
>
>IsKbdcInstalled() は初期化で実行しているのですが、
>KBDC がインストールされていなくてもエラーにはしていません。
>
>私が実装している自動設定は、NVDA の listComPorts が返したリストについて、
>しらみつぶしに bmStart または bmStartInProcess を実行してみる、という
>原始的な処理です。
>初期化に失敗して次のポートに移るときの処理がよくないためか、
>正しいポートが先頭でない場合にオープン失敗しているようです。。
>
>ログを観察しつつソースをみたところ braille.py でドライバを切り替えたときに、
>新しいドライバをオープンしてから以前のドライバをクローズ
>(実際にはクラスのインスタンスの初期化と解放)
>しています。
>ポート選択を切り替えるときにも似たようなことが起きています。
>ですので、リソースが共有されていると、オープンしたものが直後にクローズされて
>しまいます。
>
>インスタンスのクローズに依存しないリソース管理をしようとして、
>参照カウンタを _kgs.py のレベルで導入しました。
>それが裏目に出て、NVDA 終了時にデバイスのリリースに失敗しているようですが。。
>
>--
>Takuya Nishimoto
>
>_______________________________________________
>nvdajp-team mailing list
>nvdaj****@lists*****
>http://lists.sourceforge.jp/mailman/listinfo/nvdajp-team




nvdajp-team メーリングリストの案内