AsyncPro(TApdComPort)を使用してWindows 7のCOMポートに接続しようとすると、「デバイスは既に開いています」などのエラーメッセージが表示されます。しかし、同じアプリケーションがWinXpマシンで正常に動作しています。私はDelphi6を使用してプログラムを開発しています。この問題の解決にご協力ください。あなたの助けに感謝。ありがとう。
3 に答える
COM ポートに接続するためにどのコンポーネントを使用していますか?
CreateFile API を使用してポートを開く場合は、GetLastError() API を使用して問題の詳細なエラーを取得します。
それでも解決しない場合は、ハードウェアの問題であることを意味します
ApdComPortを使用しているコンポーネントについてはわかりませんが、このようにポートを開くための簡単なアプリケーションを作成して簡単なテストを行うことができます
var
comHandle : THandle;
begin
comHandle := CreateFile('COM66',GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0);
if comHandle = INVALID_HANDLE_VALUE then ShowMessage(SysErrorMessage(GetLastError))
else ShowMessage('Port opened');
end //Make shure to replace COM66 with your actual COM Port you wish to open
ポートが開いていると表示される場合は、使用しているコンポーネントに問題があるため、解決策を見つけるためにhttp://sourceforge.net/projects/comport/他のエラー メッセージをここに投稿することをお勧めします。
シリアルポートの詳細プロパティでポート名をCOM1からCOM4に変更することで解決された同様の問題がありました(デバイスマネージャー経由)。
その後、すべてが正常に機能しました。一部のプログラムは、名前が変更されたポートを引き続き COM1 として認識しますが、ポートにアクセスできるようになりました。
私にとって、問題はリモートデスクトップでした。接続内のすべてのローカル リソースのチェックを外しました。どういうわけか、リモート デスクトップが com ポートをブロックしていました。