mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik mit putc nur 8 bit möglich?


Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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....

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das war schon klar, dass das C für char steht.

gibt es denn ne möglichkeit auch 16 bit-variablen zu senden???

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, weil putc() fuer Zeichen gedacht ist.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie würdet ihr denn die integer->String wandlung mit C-Code 
bewältigen???

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/articles/FAQ#Wie_ka...

Das Ergebnis geht dann natürlich nicht auf ein LCD sondern
an die UART :-)

Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Kanone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo eine Kanone ist, sind die Spatzen nicht weit.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.