ascii Werte an Seriellen Port schreiben.



  • Ich versuche reine Ascii Werte an eine Serielle Schnittstelle zu senden. Normale char strings sind kein Problem. Allerdings möchte ich eine Zahl aus mehreren Ziffern nicht aus einzelnen Zeichen zusammen setzen sondern als ein Byte. Beispiel: Die Zahl 22 soll nicht getrennt mit den Ascii Werten 50 50 übertragen werden sondern direkt als Ascii Wert 22.
    Natürlich geht es nur um die Zahlen 0 - 255.

    Ich verwende den sychronen non Canonical Modus zum übertragen http://www.lafn.org/~dave/linux/Serial-Programming-HOWTO-B.txt

    Ich öffne die serielle Schnittstelle mit:

    fd = open(SERIALDEVICE, O_RDWR | O_NOCTTY );
    

    Lesen mach ich mit:

    res = read(fd,buf1,255);
    printf(":%d\n", buf1[0]);
    

    und schreiben mit:

    sprintf (buffer,"%d",count);
    write(fd,buffer ,sizeof(buffer+1));
    

    Mit dieser Methode wird 22 als ASCII 50 50 übertragen. Gibt es eine Möglichkeit um direkt die 22 zu übertragen. Muss ich dafür eine andere Funktion als write verwenden?
    Gibt es andere Lösungsvorschläge die Zahlen von 0-255 byteweise zu übertragen?
    Ich bin für jeden Hinweis dankbar.



  • Mach es doch ganz einfach so:

    sprintf (buffer,"%c",(char)count);
    


  • oder einfacher

    buffer[0] = count;
    write(fd, buffer, 1);
    


  • Danke, das klappt. Auf so eine einfach Lösung hätte ich auch selber drauf kommen können.


Anmelden zum Antworten