Guten Tag, ich habe ein Problem mit einem Gerät. Das Gerät erzeugt einen virtuellen Com-Port über eine USB Schnittstelle am PC. Ich möchte nun mit VB auf dieses Gerät zugreifen, ohne den Com-Port einstellen zu müssen. Das Problem ist, dass das Gerät einen Timeout von 2s hat und deshalb dauert es immer ziemlich lange wenn man einfach alle aktiven Ports abfragt. Gibt es sonst noch irgendwelche Möglichkeiten zu erkennen dass es ein virtueller Port ist z.B. über die PID/VID...? Hoff mir kann jemand helfen.
Kannst du dir aus der Registry auslesen. Bei FTDI zum Beispiel:http://www.ftdichip.com/Support/Knowledgebase/index.html?wherecanifindport.htm und dann einfach gleich direkt den entsprechenden COM Port öffnen (vorher bei HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM gucken, ob der überhaupt gerade angesteckt ist).
Hi, bei meinem Programm, welches ebenfalls die Ser. Ports nutzt, habe ich einen einfachen Test aller 16 Com-Ports realisiert, um herauszufinden, ob am Port was angeschlossen ist. Das sollte bei dir auch funktionieren:
1 | Private Sub Form_Load() |
2 | '----------------------------- |
3 | 'Port-Test |
4 | On Error GoTo PortTestError |
5 | Dim oldPort As Integer |
6 | oldPort = MSComm1.CommPort |
7 | For i = 0 To 15 |
8 | optComPort(i).ForeColor = &H80000011 |
9 | MSComm1.CommPort = i + 1 |
10 | MSComm1.PortOpen = True |
11 | MSComm1.PortOpen = False |
12 | optComPort(i).ForeColor = &H80000012 |
13 | NextPortTest: |
14 | Next i |
15 | MSComm1.CommPort = oldPort |
16 | '----------------------------- |
17 | |
18 | On Error GoTo 0 |
19 | Exit Sub |
20 | |
21 | PortTestError: |
22 | Resume NextPortTest |
23 | |
24 | End Sub |
> aller 16 Com-Ports
Du weißt, daß Windows 256 serielle Schnittstellen unterstützt?
Es sind 255, denn COM 0 gibts nicht. Aber egal. Das stupide Öffnen aller Com-Ports dauert erstens lange und zweitens kann das sehr dreckige Nebeneffekte haben. Wenn ich z.B. den virtuellen COM Port meines Original TI USB Debuggers für den MSP430 öffne, obwohl er gerade durch die Debug-Software geöffnet ist, schmiert die Software ab und der COM Port ist auch nicht mehr anzusprechen bis man USB abzieht und wieder ansteckt. Das sollte man tunlichst unterlassen, das ist einfach nur schlampig und dreckig programmiert. Eine simple Abfrage der HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM zeigt alle verfügbaren COM Ports an, ohne dass man dran rum fummeln muss.
Also danke für die Beiträge, das funktioniert jetzt einwandfrei. Über das Registry ist es echt viel besser und schneller, nicht so wie die einzelnen Ports zu öffnen und abzufragen.
> Es sind 255, denn COM 0 gibts nicht.
Dafür gibts aber COM256.
Ich hatte gehofft, daß durch die Nennung der schieren Anzahl möglicher
Schnittstellen der von Dir zu Recht stupide genannte Ansatz auch so als
suboptimal erkannt werden könnte, aber Dein deutlicher Hinweis ist wohl
doch besser.
Rufus t. Firefly schrieb: >> Es sind 255, denn COM 0 gibts nicht. > > Dafür gibts aber COM256. Echt? Waren wohl Matlab "Programmierer" am Werk....
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.