AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Virtueller COM Port CP210x: Problem unter Win8.1
Thema durchsuchen
Ansicht
Themen-Optionen

Virtueller COM Port CP210x: Problem unter Win8.1

Ein Thema von Rollo62 · begonnen am 22. Jul 2015 · letzter Beitrag vom 23. Jul 2015
 
Rollo62

Registriert seit: 15. Mär 2007
4.166 Beiträge
 
Delphi 12 Athens
 
#1

Virtueller COM Port CP210x: Problem unter Win8.1

  Alt 22. Jul 2015, 22:11
Hallo zusammen,

ich portiere gerade eines meiner Projekte von XE7 zu XE8 Upd1, und arbeite
unter VmWare Fusion 7.1.2 (aktuell) und Win8.1 64Bit (aktuell), ich habe
Silabs CP210x V6.7 64-Bit Treiber installiert (aktuell 8.1).

Plötzlich scheint der COM-Port Zugriff nicht mehr zu laufen, das ging immer bis zur jetzigen Version, und
ich habe eigentlich keine Änderung am Sourcecode gemacht.

Es passiert Folgendes:
- Wenn das Gerät eingesteckt wird, wird auch der COM-Port im Gerätemanager angezeigt: OK
- Wenn ich mich damit verbinden will dann hakt es bei dem CreateFile() Aufruf mit ErrorCode 2: "File not available".
- Ich kann den COM-Port z.B. verschieben von COM3 zu COM11, keine Änderung
- Weil ich der Sache nicht ganz traue habe ich es versucht mit AsyncPro zu Öffnen, geht auch nicht.
(Ich benutze normalerweise eine andere COM-Port Library, aber beide fliegen bei CreateFile mit INVALID_HANDLE raus)
- Habe versucht Port-nummer zu ändern, neu zu booten, mit anderer USB-Hardware, etc. etc.
Der Port scheint also auch nicht belegt zu sein, denn dann käme eine andere Error-Meldung.
- Unter <= Win7 funktiniert es aber ohne Probleme
- Der Serial-Code ist in zig Projekten ohne Probleme gelaufen.

So sieht es bei mir aus: Es wird < 10 und >= 10 COM-Port Nr. berücksichtigt.
Die Methode >= 10 für einstellige COM-Ports habe ich aber auch schon unter Win8.1 getestet, weil dies
in manchen Libraries nicht mehr so benutzt wird.


Code:
    // Schnittstelle öffnen
    if (FCOMPort<10) and True then
    begin
      c:='COMx'+#0;
      c[3]:=chr($30+FCOMPort);
    end
    else
    begin
      c:='\\.\COMx'+#0+#0;
      c[7]:=chr($30+(FCOMPort div 10));
      c[8]:=chr($30+(FCOMPort mod 10));
    end;
    FSerHandle:=CreateFile( c,
      GENERIC_READ or GENERIC_WRITE,
      0,
      nil,
      OPEN_EXISTING,
      FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED,
      0);
    //S4: Check LastError --> hier fliegt er raus
    if (FSerHandle = INVALID_HANDLE_VALUE) then
    begin
      sErr := S4Err_LastError_AsString(0);
    end;
So macht es AsyncPro, das war ein kleiner Test um nur einen Port zu öffnen, hilft aber auch nicht:

Code:
   

  function MakeComName(const Dest : PChar; const ComNum : Cardinal) : PChar;
    {-Return a string like 'COMXX'}
  begin
    StrFmt(Dest,'\\.\COM%d',[ComNum]);
    MakeComName := Dest;
  end;

            Res := CreateFile(MakeComName(ComName, ComNum),
                   GENERIC_READ or GENERIC_WRITE,
                   0,
                   nil,
                   OPEN_EXISTING,
                   FILE_ATTRIBUTE_NORMAL or
                   FILE_FLAG_OVERLAPPED,
                   0);

          if Res > 0 then begin
            CloseHandle(Res);
            Result := True;
          end else begin
            if ShowPortsInUse then
              Result := GetLastError = DWORD(Abs(ecAccessDenied))
            else
              Result := False;
          end;
Das ist sehr seltsam, weil der Code so schon seit Jahren ohne Probleme läuft.

Hatte vielleicht schonmal jemand ähnliche, seltsame Effekte gehabt ?
- liegt es an XE7 --> XE8 Update ?
- liegt es an Win8.1 ?
- liegt es an VmWare ?
- kann es vieleicht an einem fehlenden Manifest oder ähnlichem liegen ?

Ich hoffe hier gibt es noch andere die sich noch mit den guten alten COM-Ports auseinandersetzen müssen.

Rollo

Geändert von Rollo62 (22. Jul 2015 um 22:15 Uhr)
  Mit Zitat antworten Zitat
 


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 00:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz