AGB  ·  Datenschutz  ·  Impressum  







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

Dynamisch ComPort ermitteln...

Ein Thema von bingo72 · begonnen am 21. Feb 2007 · letzter Beitrag vom 23. Feb 2007
Antwort Antwort
Seite 2 von 3     12 3      
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#11

Re: Dynamisch ComPort ermitteln...

  Alt 22. Feb 2007, 07:31
Das Thema kann ich deshalb nicht dem User überlassen, weil wie ich schon oben ausgeführt hatte, der User damit überfodert sein wird. Ich hab selber den Test gemacht:
Steck mal den USB-Hub an einen anderen USB-Anschluß am PC und das Windows vergibt für die Anschlüsse am Hub bereits andere Nummern. Jetzt wird es immer wiedermal passieren, daß der Anwender halt mal einen anderen USB-Anschluß für seinen Hub wählt und dann müßte er jedesmal wieder neue ComPort-Nr. vergeben?? Das kanns nicht sein....
Es geht auch von da her nicht, weil der Hub in der Zwischenzeit wiedermal abgesteckt wird und unterschiedliche Personen darauf arbeiten werden und das dann jemand den Hub an einen anderen USB-Anschluß anschließt ist vorprogrammiert.
Darum mein Posting!!
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#12

Re: Dynamisch ComPort ermitteln...

  Alt 22. Feb 2007, 09:18
Zitat von yörsch:
davon kann mann nicht leider nicht immer ausgehn... auch bei USB!
lange rede gar kein sinn : beim möglichen port selbst fragen was dran ist!
Waere es ein USB-Geraet, dann koennte man ja sicher Informationen herausbekommen, aber dies sind RS232-Geraete. Der USB dient ja nur als Tunnel fuer den RS232.
Es bleibt nur die Moeglichkeit die Geraete via RS232 zu fragen. Wenn sie ein Info-Kommando haben, dann geht es.

Von http://jedi-apilib.sf.net die Module win32api und scapi holen. In scapi ist ein Beispiel wie man serielle Schnittstellen unter XP sauber enumeriert.
  Mit Zitat antworten Zitat
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#13

Re: Dynamisch ComPort ermitteln...

  Alt 22. Feb 2007, 12:46
Hallo Experten!!

Wenn ich einen Char an den ComPort schicke, wird OnTriggerAvail ausgelöst, wenn der ComPort verfügbar ist. Gibt es einen Trigger der auf das Senden eines Chars reagiert, auch wenn der Port nicht verfügbar ist??

LG
Thomas
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#14

Re: Dynamisch ComPort ermitteln...

  Alt 22. Feb 2007, 16:51
Hallo Bingo72,

imho dürfte ein Open auf einen nicht vorhandenen (aktiven?) Port eine Exception auslösen. Er läßt sich gar nicht erst öffnen. Somit erübrigt sich jedes weitere Ereignis.

Ist der Port vorhanden, so kannst du ihn sicher öffnen. Danach stelt sich die Frage, wie erkenne ich meine Endgeräte. Ich rate aber zur Vorsicht mit dem Senden auf den Port so lange nicht klar ist, was dran hängt. Du kannst nicht wissen was dein Kunde alles an den Ports für Endgeräte hat. Können die deine Prüfzeichen ab? Was machen die damit?

Du kannst sicher alles voreinstellen (Baud, Parität ...) wenn du glaubst den richtigen gefunden zu habe. Eine Bestätigung durch den User ist imho nie verkehrt.

Also wie gesagt, senden deine Geräte automatisch nach dem Connecten infos, so kannst du recht sicher das Endgerät erkennen und deine automatische Auswahl treffen ohne einen eigenen Init.

Ich hoffe nur, dein Kunde nutzt nicht noch andere Endgeräte gleicher Machart für andere Anwendungen an den Ports (z.B. 2. GPS-Maus). Dann klaust du unter Umständen anderen die Hardware

Gruß oki
  Mit Zitat antworten Zitat
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#15

Re: Dynamisch ComPort ermitteln...

  Alt 23. Feb 2007, 06:30
Hallo Oki!!

Deine Bedenken sind berechtigt und einen kurzen Auswahl-Dialog einzubauen ist sicher eine Überlegung wert.
Andererseits wenn jemand wirklich z.b. eine 2.GPS-Maus angeschlossen hat....naja??!!

LG
Thomas
  Mit Zitat antworten Zitat
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#16

Re: Dynamisch ComPort ermitteln...

  Alt 23. Feb 2007, 08:02
Da ich noch relativ neu auf dem Gebiet bin wollte ich auch noch Fragen, wie man am Besten weitere Infos über den jeweiligen Sensor herausfindet, um sie unterscheiden zu können?? Passiert das mit einer Funktion die AsyncPro zur Verfügung stellt oder wie sonst??

Bitte um sachdienliche Hinweise erbeten an Kripo...

LG
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#17

Re: Dynamisch ComPort ermitteln...

  Alt 23. Feb 2007, 08:37
Delphi-Quellcode:
sl := TStringlist.Create;
  try
    reg := TRegistry.Create;
    try
      reg.RootKey := HKEY_LOCAL_MACHINE;
      reg.OpenKeyReadOnly('hardware\devicemap\serialcomm');
      reg.GetValueNames(sl);
      reg.CloseKey;
    finally
      FreeAndNil(reg);
    end;
  finally
    FreeAndNil(sl);
  end;
Damit ermittel ich alle Comports im System.
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#18

Re: Dynamisch ComPort ermitteln...

  Alt 23. Feb 2007, 09:34
Hallo!!

Hab jetzt mal den Code ausprobiert und dann die StringList ausgelesen....meine besetzten Com-Schnittstellen sind COM3 und COM6, bekomme aber Serial0, Serial2 und Serial3 zurück...irgendwas paßt nicht??!!

LG
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#19

Re: Dynamisch ComPort ermitteln...

  Alt 23. Feb 2007, 09:52
Sorry hatte die falsche Funktion erwischt, da fehlte noch einiges ...
Delphi-Quellcode:
  sl := TStringlist.Create;
  try
    reg := TRegistry.Create;
    try
      reg.RootKey := HKEY_LOCAL_MACHINE;
      reg.OpenKeyReadOnly('hardware\devicemap\serialcomm');
      reg.GetValueNames(sl);
      SetLength(fComPort, Length(sl));
      for i := 0 to sl.Count - 1 do begin
        fComPort[i].Name := reg.ReadString(sl[i]);
        fComPort[i].Details := sl[i];
      end;
      reg.CloseKey;
    finally
      FreeAndNil(reg);
    end;
  finally
    FreeAndNil(sl);
  end;
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#20

Re: Dynamisch ComPort ermitteln...

  Alt 23. Feb 2007, 09:59
Danke!!

fComPort is was?? String?? Array??
  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 12:33 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