COM1 geht aber COM2 kann ich nicht ansprechen?!



  • Hallo,

    ich versuch mit

    hSerial=CreateFile("COM2",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
    
    if(hSerial==INVALID_HANDLE_VALUE){
    	MessageBox("An instance of the program is already running!");
    	CDialog::OnCancel();
    }
    
    GetCommTimeouts(hSerial,&TOutAlt);
    TOutNeu.ReadTotalTimeoutConstant=100;
    TOutNeu.ReadTotalTimeoutMultiplier=0;
    TOutNeu.WriteTotalTimeoutMultiplier=0;
    TOutNeu.WriteTotalTimeoutConstant=0;
    SetCommTimeouts(hSerial,&TOutNeu);
    myCom.DCBlength=sizeof(DCB);
    GetCommState(hSerial,&myCom);
    BuildCommDCB("1200,N,7,2",&myCom);
    myCom.fDtrControl=DTR_CONTROL_DISABLE;
    myCom.fRtsControl=RTS_CONTROL_DISABLE;
    SetCommState(hSerial,&myCom);
    EscapeCommFunction(hSerial,SETDTR|CLRRTS);
    

    meinen COM2 Port anzusprechen.
    Aber es geht nicht!
    Ich bekommen aber auch keine "Belegt-Meldung" (Öffnen kann ich ihn also?!)
    Wenn ich anstatt COM2 COM1 öffne geht es.

    Mein System erkennt COM2, ich kann auch den "Namen" von COM2 auf COM3 ändern, aber es bringt alles nichts. (Ich habe Win2K)

    Kann mir einer sagen warum?

    Bye and THX,
    Stefan

    PS: Mit anderen Programmen (nicht von mir) kann ich COM2 ansprechen!!?!??!?? 😕



    1. Du solltest die Ports mit den Namen "\\\.\\COM1" oder "\\\.\\COM2" öffnen. Siehe KB 115831.

    2. Du solltest nicht einfach einen konstanten String an BuildCommDCB übergeben. Siehe KB 201372.

    3. Du initialisierst nur Teile des DCB. Du mußt aber die Struktur vollständig initialisieren.

    4. Was heißt denn "geht nicht" überhaupt? Hast Du bedacht, daß Du auch Deine Hardware umstecken mußt?



  • -King- schrieb:

    1. Was heißt denn "geht nicht" überhaupt? Hast Du bedacht, daß Du auch Deine Hardware umstecken mußt?

    ... danke für dein Vertrauen... 😉
    Aber ja, habe ich umgesteckt... 😉

    Geht nicht heißt, dass einfach nichts passiert.
    Also ich öffne ........
    ....
    ....

    Man könnte sagen, dass ich JETZT gerade einen Geistesblitz hatte!
    Ich öffne zwar Com2 aber ich lese in einer anderen Funktion nach wie vor von Com1...
    ok, Fehler gefunden...

    Danke trotzdem,

    Bye,
    Stefan


Anmelden zum Antworten