Rs232 Daten / Zahlen / Integer senden



  • Hallo,

    ich versuche für mein Projekt eine Verbindung mit dem Applicationboard und meinem Pc herzustellen.

    Ich habe das Beispiel Programm Rs232 Input auf dem Mega 128 installiert. Dazu habe ich ein kleines Konsolenprogramm in C++ geschrieben.
    Wenn ich dies starte dann empfange ich den Text von dem Mega 128. Leider kann ich aber nichts
    senden.Mit dem Terminal Programm der C-Control Umgebung funktioniert dies einwandfrei.
    Was mache ich falsch?

    Ich versuche Daten mit dem Write File Befehl zu senden :
    void Write_rs232 ()
    {
    DWORD num_bytes_written = 0;

    write_status=WriteFile(hComm, message, sizeof(message), &num_bytes_written, NULL);

    Wie bringe ich den Microcontroller dazu zB eine einfache Zahl 1, 2 oder 3 zu empfangen und zu verarbeiten wie es im Terminal der IDE möglich ist!?



  • sambadancer schrieb:

    Was mache ich falsch?

    Ganz einfach: du fragst im falschen Forum. Hier gehts um Standard-C++, nicht um irgendwelche Spezialitäten mit WinAPI und Microcontrollern.



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ (auch C++0x, bzw. C++11) in das Forum Rund um die Programmierung verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • Was ist denn die Rückgabe von WriteFile? Irgendein Fehler-Code? Was steht in num_bytes_written drin? Und wo wird message deklariert und was genau beinhaltet es?

    EDIT: Btw, ich hatte damals immer Probleme mit dem Senden mehrerer Zeichen gleichzeitig per WriteFile. Ich bin dann dazu übergegangen, immer alles byteweise zu schicken, z.B. so:

    for(UINT i=0;i<strlen(sendBuffer);i++) {
            rtn=WriteFile(hPort,&sendBuffer[i],1,&dwBytesWritten,NULL);
          }
    


  • Ich kann Dir folgende Library empfehlen, auch der Artikel ist gut:
    http://www.codeproject.com/KB/system/serial.aspx



  • Hallo,

    habe jetzt diese eine Schwierigkeit hinbekommen.Die Zeichen die ich sende habe ich als int deklariert dann hat es funktioniert.
    Aber ich würde gerne noch wissen wie ich eine Schleife programmiere damit ich auslesen kann und danach die Eingabe mache.
    Wenn die Eingabe stattgefunden hat soll wieder ausgelesen werde, solange bis ich das Programm beende.

    Auslesen :

    void Read_RS232 ()
    {

    DWORD commerr;
    COMSTAT comstat;
    DWORD bytes_read;
    UINT8 b;

    while(1)
    {
    b = 0;
    ClearCommError(hComm, &commerr, &comstat);
    if(comstat.cbInQue != 0)
    {
    // Wenn Bytes im Buffer vorhanden, dann lesen
    if(ReadFile(hComm, &b, 1, &bytes_read, NULL) != 0)
    {
    printf("%c",b);
    }

    }

    // Wenn ESC gedrückt wird, die Schleife unterbrechen.
    if(kbhit())
    {
    if(_getch() == 27) /* ASCII Esc*/
    break;
    }

    }

    };

    Und schreiben :

    void ComWrite()
    {

    int Zeichen [2] = {2,3};
    int Auswahl;
    DWORD dwCount;

    cin>>Auswahl; // Eingabe RS232 Schnittstelle
    switch(Auswahl)
    {
    case 1: WriteFile(hComm,&Zeichen[0],1,&dwCount,0);
    break;
    case 2: WriteFile(hComm,&Zeichen[1],1,&dwCount,0);
    break;
    default : cout<<"Ungueltige Eingabe" <<endl;
    }

    };

    Wie kann ich diese beiden so verschachteln!?



  • Sambadancer könntest du vll deinen ganzen code raufstellen?
    Wär ne super Hilfe!

    DANKE


Anmelden zum Antworten