1

Windows 8 マシンで開発した Tcl/Tk アプリがあります。アプリは、FTDI USB Windows ドライバーと tclftd2xx Tcl 拡張機能を使用して、USB デバイスを開きます。

テストの一環として、アプリを Windows 7 マシンにインストールしました。tcl を終了しようとするまで、アプリは正常に動作します。exit コマンドが実行されると、アプリがハングします。

Tkに関係あると思っていたのですが、そうではありません。Tcl コードは非常に単純です (loc 22 は単なる例です)。

package require ftd2xx
set handle [ftd2xx open -location 22]
exit

これは「良い」ハングではありません。プログラム KILL でさえシャットダウンしません。これを回避する唯一の方法は、マシンをハード リセットすることです。これは、ウィンドウがアクティブなプロセスで「安全な」シャットダウンを実行しないためです。

ftd2xx リセットを呼び出すと、tcl が待機しているものはすべてクリアされ、終了が完了することがわかりました。

次のように:

package require ftd2xx
set handle [ftd2xx open -location 22]
ftd2xx reset $handle
exit

今私の問題は、ユーザーがアプリを閉じる前に USB デバイスを取り外すと、ファイル ハンドル ($handle) が古くなるため、ftd2xx リセットがハングを解放できず、ハード リブートに戻ることです。

エラーが初期化にあるのか、libftd2xx.c にあるのか、FTDI ドライバーにあるのか、Tcl にあるのかわかりません。libftd2xx.c のすべてを投稿したくありません

誰かがこれについて何らかの洞察を持っているなら、私はフィードバックをいただければ幸いです。

4

1 に答える 1