UART mit write und fgets

Gast #3290923
Lesenswert?
• ▲
▼
Hallo,

ich möchte über den UART sowohl strings, als auch int Werte senden.
Mit den strings läuft alles soweit.

Nun gibt es aber Probleme mit den Int Werten.

senden:
int tx_buffer = 3;
char p_tx_buffer;
p_tx_buffer = char(tx_buffer);
int count = write(uart0_filestream, &p_tx_buffer, 1);

empfangen:
if(fgets(ctrlc, sizeof(ctrlc), f_uart) != NULL){
ctrli = uint16_t(ctrlc);
}

So funktioniert es nicht :(
Wo liegt der Fehler?
Gast #3291044
Lesenswert?
• ▲
▼
qwertz schrieb:
> ctrli = uint16_t(ctrlc);
Du versuchst, die Adresse des Arrays ctrlc in einen uint16_t zu casten 
und ctrli zuzuweisen. Das ist nicht so gut. Falls du versuchst die 
Binärdaten aus ctrlc zu einem Integer zusammenzufügen:
1
ctrli = (((int) (ctrlc[0])) << 8) | ((int) (ctrlc [1]));
... wenn man annimmt dass die Daten Big Endian sind. Falls sie Little 
endian sind die 1 und 0 vertauschen.

Ist es beabsichtigt dass du 1 byte sendest und 2 byte empfängst?

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.