www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik byte ausgeben


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie kann ich ein unsigned long int byteweise auf die serielle
Schnittstelle ausgeben?
Gruß Michael

Autor: ,,,, (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich lag damals falsch, ich muß nicht einen Hexwert ausgeben sondern das
byte.

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael,
warum postest du dieselbe Frage eigentlich mehrfach ? Wie man ein byte
aus einem 4 byte long extrahiert ist dir doch schon lang und breit
erklaert worden ?

kopfschuettel

Autor: ,,,, (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
byte oder hex, warum spielt das so ne Rolle? Kannst du nicht auf
Empfängerseite die Daten nach deinen Wünschen interpretieren?

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie man die bytes extrahiert ist mir nun auch klar.
ich habe dann die hexzahlen z.B F4 A1 ... auf den seriellen Port
geschickt.
Das ist aber falsch, ich muß das byte senden und nicht einen string mit
F4, ich weiß nicht wie ich es  besser erklären soll sorry.

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Folge mal Quadkommas link und schaue dir die erste Antwort von Jens an.
Da stehts !

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Long besteht aus Bytes,
Bytes betehen aus Bits,
Bits kann man schieben,
links ist das hochwertige Bit, rechts das niederwertige Bit,
von C habe ich keine Ahnung...

...

(Dies soll keine Verarschung sein, sondern ein Denkanstoß...)

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

Bewertung
0 lesenswert
nicht lesenswert
Ja dann sende sie halt ohne dass Du Dir mit sprintf
eine String Repraesentierung generieren laesst.
Ist alles im anderen Beitrag enthalten. zb. gleich
die erste Antwort von Jens macht genau das:
  Den unsigned long in lauter Bytes zerpfluecken
  und jedes Byte auf die Reise bringen.

Du musst dich nur noch mit dem Empfaenger absprechen
in welcher Reihenfolge er die Bytes haben will.

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht reden wir aneinander vorbei :

Ein byte hat einen Zahlenwert zwischen 0 und 255 oder 0x00 bis 0xFF.
Wenn du von einem String sprichst dann schreib das bitte als 'ABCD'
(also mit Hochkommas). Ein String enthaelt ein Zeichen pro byte. Jedes
byte davon enthaelt den ASCII code des repraesentierten Zeichens, also
65 bzw. 0x41 fuer ein 'A'.

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

Bewertung
0 lesenswert
nicht lesenswert
...
oder besteht Dein Problem vielleicht darin, dass Du
keine passende Send Funktion hast, die ein einzelnes
unsigned char annimmt?

Obwohl, kann ich mir eigentlich nicht vorstellen, dann
eine Send Funktion zum verschicken eines kompletten
Strings wuerde ja sinnvollerweise darauf aufbauen:

void Send( const char* TheString )
{
  for( ; *TheString; TheString++ )
    SendByte( *TheString );
}

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so ist die Vorgabe vom Protocoll:

[$8B] [$01] [$26].....

so hab ichs jetzt probiert:


unsigned long value=4283036831;

rprintfStr((unsigned char) (value >> 24));
rprintfStr((unsigned char) (value >> 16));
rprintfStr((unsigned char) (value >> 8));
rprintfStr((unsigned char) (value));

Autor: The Daz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael,
was macht rprintfStr ?

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

Bewertung
0 lesenswert
nicht lesenswert
Ich kann mich taeuschen.
Aber wenn derjenige der rprintfStr programmiert hat auch
nur halbwegs mitgedacht hat, und dem Ding einen vernuenftigen
Namen gegeben hat, dann ist rprintfStr die falsche Funktion.
Du hast keinen String mehr, du hast einzelne Bytes!
Das 'Str' im Namen von rprintfStr ist ein starkes Indiz, dass
hier irgendwas mit Strings passiert. Das ist aber nicht
das was Du willst. Du hast ein Byte und Du willst das dieses
Byte auf die Leitung geht. So wie es ist. Ohne dass noch irgendwer
daran rumfummelt.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es ist geschafft.

vielen Dank an Alle.

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.