2

AsyncPro(TApdComPort)を使用してWindows 7のCOMポートに接続しようとすると、「デバイスは既に開いています」などのエラーメッセージが表示されます。しかし、同じアプリケーションがWinXpマシンで正常に動作しています。私はDelphi6を使用してプログラムを開発しています。この問題の解決にご協力ください。あなたの助けに感謝。ありがとう。

4

3 に答える 3

2

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/他のエラー メッセージをここに投稿することをお勧めします。

于 2012-06-05T12:51:05.637 に答える
0

シリアルポートの詳細プロパティでポート名をCOM1からCOM4に変更することで解決された同様の問題がありました(デバイスマネージャー経由)。

その後、すべてが正常に機能しました。一部のプログラムは、名前が変更されたポートを引き続き COM1 として認識しますが、ポートにアクセスできるようになりました。

于 2012-10-08T14:09:18.347 に答える
0

私にとって、問題はリモートデスクトップでした。接続内のすべてのローカル リソースのチェックを外しました。どういうわけか、リモート デスクトップが com ポートをブロックしていました。

于 2014-10-23T19:29:09.040 に答える