Problem mit COM Schnittstelle



  • Ich programmiere ein Programm welches über die Com-Schnittstelle Daten von einer Wetterstation (von ELV - www.elv.de) empfängt.

    Gesendet wird mit: 19200 Baud, 8 Bit, ungerade Parität und 2 Stopp-Bit
    Hier ist das Datenprotokoll: http://www.elv-downloads.de/service/manuals/PC-WS-Testempfaenger/39061-PC-WS-Testempfaenger.pdf

    Also habe ich erstmal den Port geöffnet ....

    DCB dcb;
    hCom = CreateFile ("Com1",GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
    dcb.DCBlength = sizeof (DCB);
    GetCommState (hCom,&dcb);
    dcb.BaudRate=9600;
    dcb.ByteSize=8;
    dcb.Parity=NOPARITY;
    dcb.StopBits=ONESTOPBIT;
    SetCommState (hCom, &dcb);
    
    if (hCom == INVALID_HANDLE_VALUE) // hat es geklappt? Bei Fehler ist hier Schluss!
    {
    MessageBox (NULL, "Fehler beim Öffnen des COM-Ports", NULL, NULL);
    
    }
    }
    

    .... dann die Read funkion ausgeführt ....

    unsigned char InString[COM_BUFFER_SIZE + 1];
    
    DWORD dwRead = 0;
    if(!ReadFile (hCom,&InString,sizeof (InString),&dwRead,NULL))Application->MessageBox("Fehler!!!!","",0);
    
    if(dwRead != 0)
    {
    InString[dwRead]='\0';
    }
    
    Label1->Caption = reinterpret_cast<char *>(InString);
    

    Nun zum Problem:
    Die Wetterstation schickt alle 3min neue Daten.
    Aber schon nach 10 sek bekomme ich eine Antwort von der COM.
    Und zwar sehr merkwürdige zeichen, zB ˜ï

    Brauche dringend Hilfe! Danke!

    gruß FB4



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ... Gesendet wird mit: 19200 Baud, 8 Bit, ungerade Parität und 2 Stopp-Bit ...

    dcb.BaudRate=9600;
    

    ... ungerade Parität und 2 Stopp-Bit ...

    dcb.Parity=NOPARITY;
    dcb.StopBits=ONESTOPBIT;
    

    Label1->Caption = reinterpret_cast<char *>(InString);

    Wo ist denn da das '\0' drin, um es als Text zu beenden? Und die empfangenen Zeichen (wenn denn welche kommen) sind alles Andere als ASCII-Zeichen.

    Geht Dir da ein Licht auf?

    Blackbird


Anmelden zum Antworten