Anfänger wrote:
> hallo zusammen,
>
> ich versuche mit putc() eine int16 variable zu versenden, empfange aber
> auf der anderen seite (serialwatcher) nur werte zwischen 0 und 255.
>
> kann ich mit putc überhaupt mehr als 8 bit auf einmal senden???
Nein.
Aber niemand hindert dich daran, die 16 Bit auf 2 Stück 8 Bit
aufzuteilen und dann die beiden Bytes nacheinander zu versenden.
> falls das nicht geht:
> das man strings in int wandeln kann, habe ich schon rausgefunden.
> funktioniert das auch anders rum?
Klar. Warum sollte es nicht.
> wenn ich "580" versenden will, könnte ich die zahl in nen string
> verwandeln, als string schicken, und auf der anderen seite wieder in ne
> zahl wandeln....
Das ist gar keine so schlechte Idee.
Denn: In welcher Reihenfolge verschickst du denn in obigen Vorschlag
die Bytes? Zuerst das Low-byte und dann das High-Byte, oder anders
rum. Solange du mit dir selbst einig bist, welche Reihenfolge
du verschickst und die Empfangsseite kontrollieren kannst, so dass
du die Teile wieder richtig zusammensetzt, ist das kein großes
Problem. Aber wehe, wenn nicht. Dazu kommt, dass man dann auch noch
sowas wie eine Synchronisierung benötigt. Denn wenn du dich
in den Bytestrom einklinkst und zu Lesen anfängst, woher weist
du denn welches Byte das High-byte und welches das Low-Byte ist?
Mit Strings umgeht man allerdings diese Problematik mit einem
lachenden und einem weinenden Auge.
Lachend deshalb, weil man dadurch unabhängig von der Bytereihenfolge
wird. Der Empfang unterscheidet sich in nichts von dem Fall,
dass am anderen Ende ein menschlicher Benutzer sitzt und die
Werte in ein Terminal eingibt. Dadurch wird zb. auch die
Programmentwicklung vereinfacht, weil Sender und Empfänger
sehr viel einfacher unabhängig voneinander entwickelt werden können.
Ausserdem lässt sich das Synchronisierproblem sehr viel naheliegender
lösen, weil du neben den 10 Ziffern-zeichen noch jede Menge anderer
Zeichen zur verfügung hast, die du als "Start" und "Ende" Zeichen
misbrauchen kannst.
Weinendes Auge deshalb, weil die reine Übertragungszeit dadurch
etwas höher wird.