AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

COM ports im Griff bekommen

Ein Thema von r_amse_s · begonnen am 10. Jun 2007 · letzter Beitrag vom 29. Jun 2007
Antwort Antwort
Seite 2 von 3     12 3      
Robert Marquardt
(Gast)

n/a Beiträge
 
#11

Re: COM ports im Griff bekommen

  Alt 11. Jun 2007, 19:33
Deppen haben ueblicherweise immer was zum Reinstecken.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#12

Re: COM ports im Griff bekommen

  Alt 11. Jun 2007, 20:03
angesichts der Ergebnislage gehört dieser thread sowieso in Klatsch und Trasch verschoben...
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#13

Re: COM ports im Griff bekommen

  Alt 12. Jun 2007, 05:18
Wie waer es mal nach den SysInternal Tools zu suchen wie vorgeschlagen?
  Mit Zitat antworten Zitat
WS1976
(Gast)

n/a Beiträge
 
#14

Re: COM ports im Griff bekommen

  Alt 12. Jun 2007, 06:11
Hallo Robert,

Sysinternals bringt uns keinen Schritt weiter. Wie willst du die Tools in deinem eigenen prog verwenden? Wir haben uns da schwindlig gesucht und nichts gefunden.
Ich meine ich habe irgendwo ein Stück Code mit dem man ( ohne try and error ) feststellen kann ob die com offen ist oder nicht.
Ich suche danach. Wenn ich fündig werde stell ich das hier ein.

Grüsse
Rainer
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#15

Re: COM ports im Griff bekommen

  Alt 12. Jun 2007, 07:29
Zitat von WS1976:
Hallo Robert,

Sysinternals bringt uns keinen Schritt weiter. Wie willst du die Tools in deinem eigenen prog verwenden? Wir haben uns da schwindlig gesucht und nichts gefunden.
Ich meine ich habe irgendwo ein Stück Code mit dem man ( ohne try and error ) feststellen kann ob die com offen ist oder nicht.
Ich suche danach. Wenn ich fündig werde stell ich das hier ein.

Grüsse
Rainer
Naja das ist ganz einfach, zum Beispiel:
Delphi-Quellcode:
{
  Result: Wenn benutzt wird dann True, sonst False.
}

function IsComOpen(wPort: Word): Boolean;
var
  hCom: THandle;
const
  lpszPort = '\\.\COM%d\';
begin
  Result := True;
  hCom := CreateFile(PChar(Format(lpszPort, [wPort])), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
  if (hCom <> INVALID_HANDLE_VALUE) then
  begin
    Result := not CloseHandle(hCom);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if IsComOpen(1) then
    ShowMessage('Wird benutzt')
  else
    ShowMessage('Geht scho!');
end;
  Mit Zitat antworten Zitat
WS1976
(Gast)

n/a Beiträge
 
#16

Re: COM ports im Griff bekommen

  Alt 12. Jun 2007, 09:04
Hallo,

das ist genau die Methode, die ich mit "try and error" beschrieben habe.
Ich mache den Port auf und wieder zu, wenns schief geht hab ich halt Pech gehabt.
Das ist so keine akzeptable Lösung. Ich will ohne Öffnungsversuch festellen was mit der
Schnittstelle los ist.
Was macht ich wenn sie besetzt ist booten?

Grüsse
Rainer
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#17

Re: COM ports im Griff bekommen

  Alt 12. Jun 2007, 09:24
Das ist genau die Stelle an der dein Programm sich bescheiden muss. Wenn die Schnittstelle in Benutzung ist, dann ist sie eben in Benutzung. Du beschreibst das softwaretechnische Aequivalent von Arroganz.
  Mit Zitat antworten Zitat
WS1976
(Gast)

n/a Beiträge
 
#18

Re: COM ports im Griff bekommen

  Alt 12. Jun 2007, 09:53
Hallo Robert,

das sehe ich nicht so. Was ist denn illegal (oder arrogant) daran wenn man nach einer etwas eleganteren Methode, zum feststellen ob der Port belegt ist oder nicht, sucht.
Ich weiss dass das geht ( habs schon gemacht kanns aber im Moment nicht finden )

Zum Hintergrund:
Wir stellen professionelle Tools zur Zählerauslesung oder zur Parametrierung anderer Geräte her.
Da die Kommunikation noch sehr oft direkt über RS232 oder über virtuelle Com Ports läuft ist dieses Problem für uns existentiell wichtig.
Wer auch immer einen Com Port blockiert, es hilft nur noch ein völliges Ausschalten des Systems.

Ich finde es überhaupt nicht arrogant festzustellen wer die Schnittstelle im Griff und diese Verbindung, natürlich auf Nachfrage, zu killen.

Grüsse
Rainer
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#19

Re: COM ports im Griff bekommen

  Alt 12. Jun 2007, 10:48
Es genuegt dann aber festzustellen welches Programm die Schnittstelle belegt und dieses per Hand zu beenden oder zu deinstallieren.
Das Problem auf die harte Art zu loesen, indem man das andere Programm killt (oder zumindest die Verbindung) ist eben "Arroganz". Das eigene Programm ist wichtiger als das andere.
Es liegt natuerlich ein Fehler vor wenn ein Programm einen COM Port blockiert, obwohl nicht das Geraet dranhaengt mit dem man reden will.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#20

Re: COM ports im Griff bekommen

  Alt 12. Jun 2007, 11:30
Zitat von Robert Marquardt:
Es genuegt dann aber festzustellen welches Programm die Schnittstelle belegt und dieses per Hand zu beenden oder zu deinstallieren.
Dafür hatten wir jetzt aber noch keine Lösung, die sich in ein Delphi-Programm einbinden läßt. Und damit ist auch keine Überwachung einer Schnittstelle möglich, die z.B. rechtzeitig den Zustand meldet, so daß man das Problem ohne Keule beheben kann.
Zitat von Robert Marquardt:
Das Problem auf die harte Art zu loesen, indem man das andere Programm killt (oder zumindest die Verbindung) ist eben "Arroganz". Das eigene Programm ist wichtiger als das andere.
Wichtig ist, daß das System korrekt funktioniert, die Software (egal welche) ist dem untergeordnet. Technik kennt keine Arroganz.

Grüße, Messie
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:12 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