atxmega TWI string übergabe

OP #4045448
Lesenswert?
• ▲
▼
Hallo
Ich muss für TWI (ich benutzte den Atmel Treiber, der einzelne Bytes 
übergibt) meine Strings in Bytes teilen, damit ich sie mittels TWI 
übermitteln kann.
Hat hierbei einer Erfahrung wie man das macht?
Oder ist es einfach den TReiber umzuschreiben?
Vielen Dank!
OP
Lesenswert?
• ▲
▼
hier ein Beispiel:

#define VERSION "t"
wenn ich das ganze jetzt in int umwandle zum übergeben:
uint8_t = atoi(VERSION);
//hier die Übergabe von MCU an PC mit readbuffer
char output[10]
snprintf(output, "%d", readbuffer)


Hier bekomme ich immer einen Buffer overflow, keine Ahnung warum.
Was mach ich, wenn der #define String aus mehr als einem Byte besteht?
Gast
Lesenswert?
• ▲
▼
Peter II schrieb:
> for( uint8_t i = 0; i < strlen( text ); ++i ) {
>    uint8_t x = (uint8_t)text[0];
>    // sende x
> }

Was für ein Overhead. Wenn der Compiler es nicht wegoptimiert
dann wird strlen(...) bei jedem Schleifendurchlauf neu
aufgerufen ..... da biegen sich mir die Zehennägel hoch.
Gast
Lesenswert?
• ▲
▼
Arduinoquäler schrieb:
> Was für ein Overhead. Wenn der Compiler es nicht wegoptimiert
> dann wird strlen(...) bei jedem Schleifendurchlauf neu
> aufgerufen ..... da biegen sich mir die Zehennägel hoch.

zum glück optimieren ja die Compiler. Außerdem geht es hier um ein 
Beispiel nicht um optimalen code.
Das senden über TWI wird eh so langsam sein, es nicht mal einen 
unterschied machen würde.
OP
Lesenswert?
• ▲
▼
Mein Fehler, dass ich die Variable vergessen habe.
Meine Frage war auch eher, ob ich atoi verwenden kann, um den String 
"kurzzeitig" in einen int umzuwandeln, zu verschicken, und dann 
zurückzuwandeln. -->anscheinend nicht
Gibt es auch die Möglichkeit irgendwie anstatt uint8_t x = 
(uint8_t)text[0];
auch mehrere Charaktere in die Variable zu schreiben?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.