AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Probleme, serielle Ports zu ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme, serielle Ports zu ermitteln

Ein Thema von OlafSt · begonnen am 3. Aug 2015 · letzter Beitrag vom 18. Aug 2015
Antwort Antwort
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Probleme, serielle Ports zu ermitteln

  Alt 3. Aug 2015, 11:11
Hallo Freunde,

heute nal wieder eine Merkwürdigkeit. Habe eine Software geschrieben, die sich mit Endgeräten über die serielle Schnittstelle unterhalten muß. Natürlich muß ich in der Konfiguration die Liste der verfügbaren COM-Ports anbieten und wie üblich gibt es da Probleme mit den USB-Seriell-Wandlern und deren virtuellen COM-Ports.

Denn diese werden über die Registry-Methode nicht gefunden Also habe ich hier etwas geforscht und eine Methode gefunden, die übers WMI geht:

Delphi-Quellcode:
procedure GetWin32_SerialPortInfo(TargetCombo: TComboBox);
const
     WbemUser ='';
     WbemPassword ='';
     WbemComputer ='localhost';
     wbemFlagForwardOnly = $00000020;
var
   FSWbemLocator : OLEVariant;
   FWMIService : OLEVariant;
   FWbemObjectSet: OLEVariant;
   FWbemObject : OLEVariant;
   oEnum : IEnumvariant;
   iValue : LongWord;
begin
     TargetCombo.Clear;
     FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
     FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\WMI', WbemUser, WbemPassword);
     FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM MSSerial_PortName','WQL',wbemFlagForwardOnly);
     oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
     while oEnum.Next(1, FWbemObject, iValue) = 0 do
     begin
          TargetCombo.Items.Add(String(FWbemObject.PortName));
          FWbemObject:=Unassigned;
     end;
end;
Funktioniert tadellos mit Win7, Win8, Win10 - solange man Administratorrechte hat. Nun habe ich hier einen Rechner, bei dem funktioniert dies auf Teufel komm raus nicht. MadExcept wirft einen Fehlerreport heraus mit der Meldung: Nicht unterstützt. Fehlerzeile ist das ExecQuery.

Das Betriebssystem ist Windows 10, Build 10074 und ja, er hat Admin-Rechte

Mir schwant, das ich irgendwas nachinstallieren muß auf dem Rechner - nur was ? Irgendwer ne heiße Idee, was da schief ist ?

Danke für jeden Tip !
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.158 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Probleme, serielle Ports zu ermitteln

  Alt 3. Aug 2015, 12:47
( Eine neue Windows-Build? 10074 war ein Vierteljahr vor der eigentlichen Veröffentlichung. )
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#3

AW: Probleme, serielle Ports zu ermitteln

  Alt 3. Aug 2015, 13:39
Schau dir mal mit irgendeinem anderen WMI-fähigen Tool an, ob die gewünschten Informationen auf dem System verfügbar sind. Ich benutze dafür immer BgInfo, aber wahrscheinlich gibt's da komfortablere .

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#4

AW: Probleme, serielle Ports zu ermitteln

  Alt 3. Aug 2015, 14:07
So viel wie da noch bis zuletzt gestrickt wurde, würde ich erstmal das echte Windows 10 Release voraussetzen. Das genannte Build ist veraltet.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Probleme, serielle Ports zu ermitteln

  Alt 3. Aug 2015, 15:08
Als mir auffiel, das das noch ein Preview ist (habe ich erst nach Erstellen des Threads realisiert), habe ich auch empfohlen, da erstmal das Final draufzuschieben. Mal sehen, ob das Problem dann verschwindet.

Stay tuned.
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Probleme, serielle Ports zu ermitteln

  Alt 18. Aug 2015, 16:05
So, es gibt Neuigkeiten.

Inzwischen wurden Tests auf drei Rechnern gemacht:

- Thinkpad, 4 Jahre alt, Windows 7 neu drauf und Updates gemacht
- Travelmate B115, brandneu, Win10 Upgrade komplett durchgeführt
- Aspire One, 3 Jahre alt, Windows 7 mit Updates auf neuestem Stand

Alle drei zeigen denselben Fehler: EOLEException "Nicht unterstützt" beim ExecQuery. Keiner der hier bei mir laufenden Rechnern zeigt dieses Problem (und es sind 5 verschiedene, verschiedenen Alters, Win 7,8,10). Inzwischen habe ich bemerkt, das auf meinem Notebook (steinalter AMD-Triplecore mit Windows 10) auch diese Macke hat.

Ich habe den Code mit dem WMI Delphi Code Creator erzeugt - flugs das Ding auf dem Notebook installiert und siehe da: Selbst das Original kriegt das nicht hin. Auch nicht als C# - Code gegen .NET 4.0 compiliert.


Jemand eine heiße Idee, was das sein kann ? Und vor allem: Wie ich nun an die COM-Port-Namen komme ?

Geändert von OlafSt (18. Aug 2015 um 16:24 Uhr)
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#7

AW: Probleme, serielle Ports zu ermitteln

  Alt 18. Aug 2015, 17:46
Ich habe das in einer virtuellen Maschine (VirtualBox) mit einem Windows 10-Pro-64Bit getestet. Bei mir funktioniert die Abfrage via Registrierung immer noch. Als USB-Seriell-Wandler benutze ich ein Teil mit einem FTDI-Chip. Als Treiber wurde via automatischer Installation bei Windows 10 ein Original-FTDI-Treiber mit der Version 2.12 vom 26.08.2014 installiert.
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Probleme, serielle Ports zu ermitteln

  Alt 18. Aug 2015, 23:28
Nun, das mag ja alles ganz toll sein und bei dir (und anderen) funktionieren. Ich habe hier Kundschaft, die was weiß ich für einen Seriell-Wandler benutzen und dieser wird über die Registry-Methode nun einmal nicht angezeigt. Irgendwo (IIRC bei CodeProject) habe ich auch gelesen, das es davon abhängt, wie der Treiber diesen virtuellen COM-Port ins System integriert. Frag mich nicht nach Details, da wurden auch keine genannt

Der Witz an der ganzen Sache ist: Benutze ich den Code Creator manuell, dann kann ich problemlos durchs WMI wandern und mir all die netten Gizmos da ansehen. Nur, sobald man per Programmcode abfragen will, gibts Probleme.
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:32 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