Unbekannter COM Port wird geöffnet...



  • Hallo,

    ich beschäftige mich grade hobbymässig mit einem Programm, das über eine serielle Schnittstelle kommunizieren soll. Ich habe ein Laptop und einen "RS232 zu USB Konverter" - weiss nicht, wie man die Dinge genau bezeichnet. Man steckt sie in einen USB Port und hat dann eine virtuelle COM Schnittstelle. Geräte-Manager und WinXP zeigt mir unter "Anschlüsse (COM und LPT)" dann genau einen COM Port "Prolific USB-to-Serial Comm Port (COM4)". Ich hatte in meinem Programm ungefähr folgenden Code:

    TCHAR szCommPortName[] = TEXT("\\\\.\\COM4");
    ...
    hFileCom = CreateFile(
        &szPortName[0],
        (GENERIC_WRITE | GENERIC_READ),
        FILE_SHARE_WRITE,
        NULL,
        OPEN_EXISTING,
        0,
        NULL);
    ...
    

    Und es hat alles wunderbar funktioniert. Nun dachte ich, ich mach es besser. Mit einer Schleife, die sich szCommPortName[] von TEXT("\\\.\\COM1") bis TEXT("\\\.\\COM16") zusammenbastelt und den ersten gefundenen Port öffnet.

    TCHAR szPortName[256u];
    
        for (i = 0u; i < maxPorts; ++i)
        {
            if (INVALID_HANDLE_VALUE == hFileCom)
            {
                /* generate COM device name */
                memset(&szPortName[0], 0, sizeof(szPortName));
                wsprintf(&szPortName[0], TEXT("\\\\.\\COM%u"), comCnt);
    
                /* count next COM port */
                ++comCnt;
    
                /* try open it */
                hFileCom = CreateFile(
                        &szPortName[0],
                        (GENERIC_WRITE | GENERIC_READ),
                        FILE_SHARE_WRITE,
                        NULL,
                        OPEN_EXISTING,
                        0,
                        NULL);
    
                if (INVALID_HANDLE_VALUE == hFileCom)
                {
                    ...
                }
                else if (0 == SetCommState(hFileCom, &dcb))
                {
                    ...
                }
                else
                {
                    ...
                }
            }
        }
    

    Merkwürdig ist nun, dass eine mir unbekannte Schnittstelle TEXT("\\\.\\COM3") geöffnet wird. Wie kann das sein, hat jemand eine Idee? Wie gesagt, Geräte-Manager zeigt mir unter "Anschlüsse (COM und LPT)" genau einen COM Port "Prolific USB-to-Serial Comm Port (COM4)"...



  • COM3 ist in Deinem Fall mit großer Wahrscheinlichkeit der COM-Port für das eingebaute Modem.
    Es kann aber auch eine Serial-over-Bluetooth Funktion sein.

    Martin



  • Danke schön für die Info, ich habe tatsächlich ein eingebautes Modem, dessen serielle Schnittstelle, wenn es denn eine haben sollte, interessanterweise nicht im Geräte-Manager erscheint...



  • abc.w schrieb:

    Danke schön für die Info, ich habe tatsächlich ein eingebautes Modem, dessen serielle Schnittstelle, wenn es denn eine haben sollte, interessanterweise nicht im Geräte-Manager erscheint...

    Mach sie mal im Hyper-Terminal auf, und tipp AT (plus Entertaste). Wenn dann ein OK zurückkommt, dann ist es mit hoher Wahrscheinlichkeit ein Modem.



  • Unglaublich, aber wahr, es kommt ein OK zurück!
    Danke schön für die Aufklärung!


Log in to reply