Delphi XE Starter + Windows 7
GPSのデータを取り込みたいとComPortライブラリを試しています。
上手く動いていたのですが一度USB端子が外れてしまうと再接続した際にエラー「PurgeComm function failed(Error:5)」というのが出てソフトの終了もできないようになってしまいます。(コードはダウンロードした中にあるComExample.dprとほぼ同じ)試しにTeraTermでやってみると再接続しても順調に表示できています。
この現象を回避する方法はあるのでしょうか? また他のライブラリで使いやすいものなどありましたら教えてください。
ComPortライブラリは「TComPort」ですかね?
TeraTermは再接続出来るとのことですので、ライブラリまたは作成しているソフトの処理によるものだと思われます。
USB端子が外れたり再接続することを認識するのはちょっとやっかいなのでタイムアウト処理か手動で再接続しているものとして
基本的には再接続=Close処理のあと、Openするだけです。
Openでエラーが出るのであればTComPortで使用している通信処理用のスレッドがうまく機能していない可能性があります。
その場合はちょっと面倒ですが開始時にOpen、再接続時に Close、Open させるのではなく
Close後にTComPort を解放して再度生成するという方法で解決できるかもしれません。
Closeや解放時に何が関係しているのかはわかりませんが、結構な待ち時間を要求される場合がありました。
ツイート | ![]() |