com0com virtuelle port nicht gefunden

Habe ich installiert, anscheinend erfolgreich, com0com v2.2.2.0 auf einem 64-bit Windows 7 Maschine.

Ich den Befehl ausführen Dienstprogramm, wie diese:

command> install PortName=COM9 PortName=COM8
       CNCA0 PortName=COM9
       CNCB0 PortName=COM8
ComDB: COM8 - logged as "in use"
ComDB: COM9 - logged as "in use"

command> busynames COM?*
COM3
COM4
COM5
COM6
COM8
COM9
COMPOSITEBATTERY

Hinweis: angemeldet als "in Verwendung" ist NICHT eine Fehlermeldung?

Dann versuche ich zu öffnen, COM8, wie dies

m_hIDComDev = CreateFileA( szCodedPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL );
if( m_hIDComDev == NULL  || m_hIDComDev == INVALID_HANDLE_VALUE ) {

    wchar_t * lpMsgBuf;
    DWORD dw = ::GetLastError(); 
    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        dw,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR) &lpMsgBuf,
        0, NULL );

    myErrorMsg = (char*)malloc( 200 );
    sprintf(myErrorMsg,"Error creating connection %s ( %s ) %S",
        szPort,szCodedPort,lpMsgBuf);

Dieser schlägt mit

Error creating connection COM8 ( COM8 ) The system cannot find the file specified.

Habe ich versucht, sowohl die "COM8" und "\\.\COM8".

Beachten Sie, dass die exakt gleichen Aufruf CreateFileA funktioniert perfekt auf eine 'echte' COM-port.

Q: Kann mir jemand sagen, was das problem ist?

A: Auf windows 7 64 bit müssen Sie aktivieren die Prüfung für nicht signierte Treiber.

  • Führen Sie eine Eingabeaufforderung als administrator. ( Es ist nicht genug, einfach nur zu laufen von einem Konto mit admin-rechten. Sehen hier für details, wie dies zu tun. )
  • Geben Sie den Befehl bcdedit -set TESTSIGNING ON
  • Neustart. ( Windows wird ein "test-Modus" Hinweis unten rechts auf dem desktop )

Für Windows 8 mit dieser Methode nicht zufrieden stellend funktioniert oder einfach. Hier ist einige Diskussion der Probleme und Problemumgehungen.

Alternativ möchten Sie vielleicht versuchen, ein signierte version - ich habe NICHT versucht, diese selbst.

Es zeigt COM8 - logged as "in use" - das ist wahrscheinlich Ihr problem.
Reinhart Sind Sie vertraut mit com0com? Die "in use" - Meldung, laut der Hinweise in der Dokumentation, bedeutet nur, dass dieser COM-ports zugewiesen wurden, durch die der com0com-Treiber und wird daher nicht neu vergeben werden. Wenn das OS dachte, Sie waren zu beschäftigt damit, würde es mir einen anderen Fehler. AFAIK!
"In Verwendung" ist in der Regel eine Fehlermeldung. Schön, open-source, können Sie Lesen Sie den code, um zu sehen, was es eigentlich bedeuten soll.
Ja, ich habe com0com, aber war der Zugriff mit C#. Leider kann ich nicht mehr helfen.
Passant OK, was den Fehler verursacht?

InformationsquelleAutor ravenspoint | 2012-01-07

Schreibe einen Kommentar