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??? falls das nicht geht: das man strings in int wandeln kann, habe ich schon rausgefunden. funktioniert das auch anders rum? 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....
Anfänger wrote:
> kann ich mit putc überhaupt mehr als 8 bit auf einmal senden???
Nein. Das "c" in putc steht für character, also Zeichen.
das war schon klar, dass das C für char steht. gibt es denn ne möglichkeit auch 16 bit-variablen zu senden???
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.
wie würdet ihr denn die integer->String wandlung mit C-Code bewältigen???
http://www.mikrocontroller.net/articles/FAQ#Wie_kann_ich_Zahlen_auf_LCD.2FUART_ausgeben.3F Das Ergebnis geht dann natürlich nicht auf ein LCD sondern an die UART :-)
für all die, die es interessieren sollte: das ganze habe ich einfach durch den printf befehl erledigt. einfacher geht es kaum. so muß keine variable geändert werden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.