Null über seriellen Port

  • Hallo Forum, ich bemühe mich schon seit längerem über die serielle Schnittstelle eine Kommunikation zu einem Mikrocontroller herzustellen. Ich glaube fast, daß ich in jede Falle tappe die es hier zum erwischen gibt.
    Zu meinem Problem: Ich möchte einen DEZ-Wert von 0 bis 65535 (also 2 Byte) über den Seriellen Port Byte für Byte senden und der MC soll diese empfangen. Soweit so gut. Also von 1 bis 65535 kein Problem mit folgender Zeile:

    Code
    echo -en "\$6"$(printf \\$(printf "%o" "129"))$(printf \\$(printf "%o" "$temp1"))$(printf \\$(printf "%o" "temp2"))

    Zuerst wird der Befehl gesendet, ein Befehl wird mit dem Zeichen "$" eingeleitet, dann die Befehlsnummer "6" und die Unterbefehlsnummer "129d" und danach der Wert zwischen 0 und 65535d.
    Ich wandle also erst jede Zahl in Dezimal kleiner 256 um und sende diese dann als CHR$ über die serielle Schnittstelle. Etwas kompliiziert vielleicht, aber der einzige Weg der bei mir funktioniert.
    Um jetzt eine Zahl zwischen 0 und 65535 zu versenden, teile ich die Zahl zuerst MODULO duchr 255, damit bekomme ich den Low-Anteil (temp1) und dann teile ich die Zahl einfach durch 255 und bekomme den High-Anteil (temp2).
    Funktioniert soweit prima, bis auf, wenn ein Anteil 0 ist wird er nicht übertragen.
    Dagegen, wenn ich an der Shell folgendes eingebe, funktioniert die Übertragung der Zahl Null

    Code
    printf \\$(printf "%o" "0")

    Kann mir jemand weiterhelfen?

  • schicks doch einfach als String

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!