Autor Beitrag
daywalker0086
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 231


Delphi 2005 Architect
BeitragVerfasst: Mi 02.07.14 16:52 
Hallo Leute,
ist es möglich den Comport eines gerade angesteckten USB Seriell Wandlers heraustzufinden( natürlich automatisch)?
mit
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
procedure TPS_Settings.FormShow(Sender: TObject);
var
sl: TStringList;
reg: TRegistry;
i :integer;

 fComport : array of TComPort;
begin
ComPort_cb.Clear;
sl := TStringlist.Create;
   try
     reg := TRegistry.Create;
     try
       reg.RootKey := HKEY_LOCAL_MACHINE;
       reg.OpenKeyReadOnly('hardware\devicemap\serialcomm');
       reg.GetValueNames(sl);
       
       SetLength(fComPort, sl.Count);
       for i := 0 to sl.Count - 1 do begin
         fComPort[i].Name := reg.ReadString(sl[i]);
         fComPort[i].Details := sl[i];
         ComPort_cb.Items.Add(reg.ReadString(sl[i]));
       end;
       reg.CloseKey;

     finally
       FreeAndNil(reg);
     end;
   finally
     FreeAndNil(sl);
   end;
end;


kann ich mir ja schonmal die verfügbaren Comport anzeigen lassen aber mir fehlt dei Verknüpfung zum USB Gerät. Wo steht die Verknüpfung USB Gerät 1 hat Comport1?
Kann mir da jemand helfen?
Ich stelle mir das so vor das eine Aufforderung erscheint das Gerät einzustecken und danach wird eben der Comport des Gerätes ausgelesen und meinem Programm zugewiesen.
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 29

Windows 8.1
Delphi 7 Pers.
BeitragVerfasst: Do 03.07.14 00:26 
Hallo Daywalker0086,

eine gute Antwort würde mich auch interessieren. Ich hatte vor 5 Jahren das Problem, Daten über einen COM-Port von einem Messgerät einzulesen. Alles bestens an meinem damaligen Tower-Pc, aber mein damals neues Notebook hatte dann keine COM-Schnittstelle mehr. Ein USB-COM-Adapter (1xCOM) ging gut, aber mein Messgerät war aus PC-Sicht nicht immer an dem gleichen COM-Port angeschlossen.

Ich bin damals zu dem Schluss gekommen, dass es nicht gehen kann: Ich könnte ohne Probleme zwei USB-COM-Adapter an mein Notebook anschließen. Windows hätte keine Chance, heraus zu finden, an welchem COM-Port mein Messgerät hängt. Vielleicht geht ja plug-and-play auch für über COM angeschlossene Geräte, da kenne ich mich nicht aus, jedenfalls meine Messgeräte können das nicht.

Meine Lösung: Ich suche an allen bekannten COM-Ports nach meinem Messgerät. Dazu muss ich zwar alle bekannetn COMs verstellen, aber da da ohnehin nichts angeschlossen ist schadet das nicht.

Bin gespannt auf andere Antworten.

Gruß GuaAck
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 03.07.14 06:41 
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Moderator
Beiträge: 3655
Erhaltene Danke: 594

Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
BeitragVerfasst: Do 03.07.14 09:23 
Zusammen mit den ersten Links von user profile iconhathor: Frag halt den User :roll:

COM ist eben stateless, selbst wenn du enumerierst kommst du nicht viel weiter als "der USB-Adapter ist reingesteckt". Ob auf der andern Seite was ist, kannst du nicht wissen. Gut, theoretisch könnte man da mit den Steuerleitungen etwas kodieren, aber das ist dann halt auch nur für ein Gerät möglich, bei dem man die Hardware kontrolliert.
Einfach was senden und gucken was passiert kann übrigens auch schön schiefgehen, falls doch mal zufällig was anderes dran hängt ;)

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 458
Erhaltene Danke: 90

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Do 03.07.14 11:01 
Nur weil ein USB-Port zu einem seriellen Port umfunktioniert wird, heißt das noch lange nicht, das man all den nützlichen Komfort von USB-geräten auch bekommt. Ein serieller Port ist ein serieller Port mit all seinen Limitierungen. Man weiß nur, das da einer ist und bestenfalls noch seine Ü-Parameter. Aber das wars dann auch.

Es gibt also keine Lösung für den Wunsch des TE, außer dem genannten (und mit nicht unerheblichen Nachteilen verbundenen) Senden von Testnachrichten an den Port.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 10

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Do 03.07.14 13:38 
Der Threadersteller hat doch eine ganz andere Frage gestellt...
Klar kann man von dem USB-Adapter auf den COM-Port schließen und umgekehrt. Ausserdem kann man so auch das Gerät ermitteln, wenn dieses fest mit dem Adapter verbunden ist (also 1 Adapter für genau 1 Gerät).

Das geht z.B. über die Registry (bei FTDI z.B. "SYSTEM\CurrentControlSet\Enum\FTDIBUS" und "\USB" ggf. mehr) oder eine Library vom USB-Seriell-Adapter (bei FTDI z.b. "FTD2XX.dll")

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Moderator
Beiträge: 3655
Erhaltene Danke: 594

Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
BeitragVerfasst: Do 03.07.14 13:56 
user profile iconuall@ogc hat folgendes geschrieben Zum zitierten Posting springen:
Der Threadersteller hat doch eine ganz andere Frage gestellt...
Klar kann man von dem USB-Adapter auf den COM-Port schließen und umgekehrt.
Stimmt natürlich. Allgemein könnte man das mit dem oben verlinkten Enumerier-Code machen, nach Device-Namen filtern und hat was.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
daywalker0086 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 231


Delphi 2005 Architect
BeitragVerfasst: Do 03.07.14 17:17 
ICh habe es jetzt mit meinem oben geposteten Code so gelöst das der anwender aufgefordert wird den Adapter einzustecken. Dann wird verglichen was vorher nicht da war und fertig. Klappt! :-)