Also, so sieht er aus, ein bisschen umständlich, aber ich hab ja die Hoffnung, dass es funktioniert. Und wenn ich das Xterminal Programm von dir auf nem anderen Pc öffne und dort etwas schreibe und sende wird es auch mit meiner Software angezeigt. Das Problem ist, wenn ich die BaudRate oder Stopbit etc. ändere klappt es nicht mehr, auch wenn ich die einstellungen dementsprechend auch in meiner Software ändere.
Naja hier erstmal der Quellcode:

Code:
//-----------------------------------Hauptmenü-----------------------------------------------------------

menue: 
        
cout << "Hauptmen\201:" << endl
     << "----------" << endl
     << "[1] Konfiguration des Com-Ports" << endl
     << "[2] Port \224ffnen" << endl
     << "[3] Programm starten" << endl
     << "[4] Programm beenden" << endl
     << "-------------" << endl
     << "Ihre Eingabe: ";  
  
cin >> eingabe;
cout << endl;

//----------------------------Programm beenden----------------------------------------

if(eingabe == 4)
{
          return EXIT_SUCCESS;  //beendet Programm
}
  

//--------------------------------Port öffnen-----------------------------------------
if(eingabe==2)
{    
        
     hCom = CreateFile ("COM1", 
     GENERIC_READ | GENERIC_WRITE,
     0, // must be opened with exclusive-access
     NULL, // no security attributes
     OPEN_EXISTING, // must use OPEN_EXISTING
     0, // non overlapped I/O
     NULL // hTemplate must be NULL for comm devices
     );
     
                       
     if (hCom == INVALID_HANDLE_VALUE)    //bei fehler beim Portöffnen gibt Error aus
        { cout << " Error opening COM1" << endl << endl;}
                
     else                                      
         { cout << " COM 1 successfully opened" << endl << endl;}
     
     Sleep(1000);
     goto menue;
}


if(eingabe==1)
{     
     //-------------------Baudrate einstellen-----------------------------------------
     
     GetCommState(hCom,&dcb);  //Porteinstellungen werden abgerufen 
     
     neuBaudrate:
     cout << "Welche Baudrate soll eingestellt werden: " << endl <<
             "----------------------------------------" << endl <<
             "[1] 115200" << endl <<
             "[2] 57600" << endl <<
             "[3] 38400" << endl <<
             "[4] 19200" << endl <<
             "[5] 9600" << endl <<
             "[6] 4800" << endl <<
             "[7] 2400" << endl <<
             "[8] 1200" << endl <<
             "[9] 600" << endl <<
             "[10] 300" << endl << 
             "-------------" << endl <<
             "Ihre Eingabe: ";
             
     cin >> Baudrate;
     cout << endl;
     
     switch (Baudrate)
     {
            case 1:  dcb.BaudRate = CBR_115200;            //Baudrate
                     SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            case 2:  dcb.BaudRate = CBR_57600;             //Baudrate
                     SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            case 3:  dcb.BaudRate = CBR_38400;             //Baudrate
                     SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            case 4:  dcb.BaudRate = CBR_19200;             //Baudrate
                     SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            case 5:  dcb.BaudRate = CBR_9600;              //Baudrate
                     SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            case 6:  dcb.BaudRate = CBR_4800;              //Baudrate
                     SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            case 7:  dcb.BaudRate = CBR_2400;              //Baudrate
                     SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            case 8:  dcb.BaudRate = CBR_1200;              //Baudrate
                     SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            case 9:  dcb.BaudRate = CBR_600;               //Baudrate
                     SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            case 10: dcb.BaudRate = CBR_300;               //Baudrate
                     SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            default: goto neuBaudrate;                 //springe zurück 
            
     }

     
     //---------------------Anzahl Datenbits festlegen-------------------------------
          
     neuDatenbits:
     cout << "Wieviele Datenbits werden gesendet: " << endl <<
             "-----------------------------------" << endl <<
             "[1] 5" << endl <<
             "[2] 6" << endl <<
             "[3] 7" << endl <<
             "[4] 8" << endl <<
             "-------------" << endl <<
             "Ihre Eingabe: ";
             
     cin >> Datenbits;
     cout << endl;
     
     switch(Datenbits)
     {
            case 1:   dcb.ByteSize= 5;                  //Datenbits
                      SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            case 2:   dcb.ByteSize= 6;                  //Datenbits
                      SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            case 3:   dcb.ByteSize= 7;                  //Datenbits
                      SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            case 4:   dcb.ByteSize= 8;                  //Datenbits
                      SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
            break;
            default: goto neuDatenbits;
     }
     
     
     //------------------Parität festlegen---------------------------------------------
     
     neuParitaet:
     cout << "Welche Parit\204t soll gesetzt werden: " << endl <<
             "-----------------------------------" << endl <<
             "[1] NOPARITY" << endl <<
             "[2] ODDPARITY" << endl <<
             "[3] EVENPARITY" << endl <<
             "[4] MARKPARITY" << endl <<
             "[5] SPACEPARITY" << endl <<
             "-------------" << endl <<
             "Ihre Eingabe: ";
             
    cin >> Paritaet;
    cout << endl;
    
    switch(Paritaet)
    {
            case 1:    dcb.Parity= NOPARITY;             //Parität    
                       SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
                       break; 
            case 2:    dcb.Parity= ODDPARITY;            //Parität
                       SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
                       break;
            case 3:    dcb.Parity= EVENPARITY;           //Parität
                       SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
                       break;  
            case 4:    dcb.Parity= MARKPARITY;           //Parität
                       SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
                       break;  
            case 5:    dcb.Parity= SPACEPARITY;          //Parität
                       SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
                       break;
            default: goto neuParitaet;
    }

    
    //---------------------Stopbits festlegen------------------------------------------
    
    neuStopbits:
    cout << "Wieviel Stopbits sollen gesetzt werden: " << endl <<
            "---------------------------------------" << endl <<
            "[1] 1 Stopbit" << endl <<
            "[2] 2 Stopbits" << endl <<
            "[3] 1,5 Stopbits" << endl <<
            "-------------" << endl <<
            "Ihre Eingabe: ";
            
    cin >> Stopbit;
    cout << endl;
    
    switch(Stopbit)
    {
            case 1:    dcb.StopBits= ONESTOPBIT;         //Stopbits
                       SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
                       break; 
            case 2:    dcb.StopBits= TWOSTOPBITS;        //Stopbits
                       SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
                       break; 
            case 3:    dcb.StopBits= ONE5STOPBITS;       //Stopbits
                       SetCommState (hCom, &dcb);        //COM-Einstellungen speichern
                       break; 
            default: goto neuStopbits;
    }

  
    //----------------------------Eingaben prüfen--------------------------------------
    

    cout << "Sind diese Eingaben OK?" << endl <<
        "-----------------------" << endl <<
        "[1] Ja" << endl <<
        "[2] Nein" << endl <<
        "-------------" << endl <<
        "Ihre Eingabe: ";

    cin >> ok;
    cout << endl;
    
    switch(ok)
    {       
            case 1:    goto menue;
                       break;
            case 2:    goto neuBaudrate;
                       break;
            default: goto neuBaudrate;          
    }

  {
       system("cls");      //löscht Bildschirm        
}
          
}            
    
     
    dcb.DCBlength = sizeof(DCB);      //Länge des Blockes muss gesetzt werden
    SetCommMask (hCom, EV_RXCHAR);    //Kontrolliert ob an RXD-Leitung Daten ankommen



COMMTIMEOUTS ct;
ct.ReadIntervalTimeout = MAXDWORD;
ct.WriteTotalTimeoutConstant = 0;
ct.ReadTotalTimeoutMultiplier = 0;
ct.WriteTotalTimeoutConstant = 0;
ct.WriteTotalTimeoutMultiplier = 0;
SetCommTimeouts (hCom, &ct);

if(!SetCommTimeouts(hCom, &ct))
{
                           CloseHandle(hCom);
                           cout << "Fehler SetCommTimeouts";
}

//-------------------------------Bytes auslesen------------------------------------------

if(eingabe==3)
{
              DWORD dwRead;
              char chRead;
              cout << dcb.BaudRate << endl
              << dcb.ByteSize << endl
              << dcb.Parity << endl
              << dcb.StopBits;

              do
              {
                    
                     
                     if(ReadFile(hCom, &chRead, 1, &dwRead, NULL));
                      {          
                                if(dwRead)
                                {
                                         
                                           printf("%c<%03u>", chRead, chRead, chRead);
                                          
                                }
                      }
                      
                        } while(1);



}

    system("PAUSE");
    return EXIT_SUCCESS;
}