Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Check ob Ports durch andere Anwendungen besetzt sind ? (https://www.delphipraxis.net/3481-check-ob-ports-durch-andere-anwendungen-besetzt-sind.html)

Florian 15. Mär 2003 12:07


Check ob Ports durch andere Anwendungen besetzt sind ?
 
hi,
also folgendes Problem.
Ich hole mir alle Ports die mir auf der Workstation zur Verfügung stehen aus der registry und schreib sie in eine stringlist.
Soweit so gut. Ich verwende die ComPort264.

Anwendung: Automatische Device Erkennung!

Also ich schicke meinem Gerät ein Zeichen! --> diese verarbeitet es und schickt mir danach seine Kennung....-> Folge von Zeichen!
Ich muss jetzt also alle Ports nach der Reihe durch gehen und schaun ob ich diese Kennung zurückbekomme und dann eben ausgeben wo das gerät dran hängt.
Das Problem hierbei ist, dass ich einen Fehler bekomme wenn ich versuche einen Port zu öffnen wenn dieser schon von einem anderen Programm in beschlag genommen wurde.

Dh. Abfolge:
  • 1. Ports aus Registry
    2. Check welche davon sind belegt
    3. die restlichen nacheinander öffnen und kennung checken, wenn nix zurückkommt-> nächsten port checken

doch wie kann überprüfen ob eine andere Anwendung einen port, und wenn welchen benutzt?

In de Komponente gibt es die prozedur ComPort1.Connected
doch durch herum testen bin ich zum schluss gekommen, dass diese nur checked ob ein Port durch die Komponente geöffnet wurde nicht aber ob sie durch ein anderes Programm geöffnet ist.

Ich hoff jemand hat dazu eine produktive Idee?
mfg Flo
danke schon im Voraus :coder:

Florian 16. Mär 2003 07:13

Hat den wirklich niemand eine Idee, oder hab ich mich so schlecht ausgedrückt ?
Zumindest ein kleiner Ansatz wäre echt cool.
Danke für eure Hilfe!
mfg Flo :nerd:

jbg 16. Mär 2003 08:29

Wenn du schon eine Fehlermeldung bekommst, wenn der Port von einer anderen Anwendung in Beschlag genommen ist, dann fange die Fehlermeldung doch einfach mit try/except ab und setze im Except-Teil eine Variable auf False.
Delphi-Quellcode:
function PortFrei(const Port: string);
begin
  Result := True;
  try
    Com1.OpenPort(Port); // <-- frei erfunden da ich die Komponente nicht kenne
    Com1.ClosePort;
  except
    Result := False;
  end;
end;

Florian 16. Mär 2003 14:47

Hehe jojo, des mach ich doch eh schon.
Aber er zeigt mir trotzdem eine Fehlermeldung an, dass ist ja
das was mich so verwirrt, eigentlich sollte keine Meldung kommen.
Aber es wird trotzdem eine angezeigt.

Aber danke für die Tipp :-)

Weiter Möglichkeiten , oder hat jemand eine Erklärung dafür?
mfg FLo :cry:

Luckie 16. Mär 2003 16:27

Zitat:

Zitat von Florian
Hehe jojo, des mach ich doch eh schon.
Aber er zeigt mir trotzdem eine Fehlermeldung an, dass ist ja
das was mich so verwirrt,

Starte die Anwendung mal aus dem Explorer und nicht aus der IDE raus.

Florian 1. Apr 2003 10:07

Du meinst einfach mal die Exe starten oder wie?
naja des geht auch nicht --> selber Fehler!
aber danke trotzdem !


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz