Pages: [1]   Go Down
Author Topic: Byte to String  (Read 377 times)
0 Members and 1 Guest are viewing this topic.
(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 74
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti!
Di sicuro sarà una cavolata -.-'' ma vabbè.
Io leggo dei byte dalla porta seriale del mio Arduino, e avrei la necessita di convertire questi byte in stringhe. Ma non voglio il carattere corrispondente, se mi arriva per esempio 0x0B dalla seriale voglio convertirlo in "0B".
E' possibile?

grazie.
Logged

MC
Offline Offline
God Member
*****
Karma: 13
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma ti serve di avere proprio il char[] del valore o ti basta solo di visualizzarlo?
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 74
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dovrei concatenarlo ad un' altra stringa da mandare via Ethernet smiley Quindi dovrei avere il char[]
Logged

MC
Offline Offline
God Member
*****
Karma: 13
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Per mandarlo via ethernet puoi usare sprintf anche senza creare prima una variabile.  (molto più efficiente in termini di memoria)

Sennò usa l'oggetto String( arduino 0019 o superiore)

String stringOne =  String(45, HEX);                // using an int and a base (hexadecimal)

fonte http://arduino.cc/en/Tutorial/StringConstructors
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 74
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Proverò! Ti ringrazio smiley
Logged

(TN) italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 74
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Usando la classe string funziona tutto, ma vorrei risparmiare un po di memoria ed usare sprintf.

Mi restituisce questo errore:
Code:
Codice:
Serial.print(sprintf(buffer[j], "%x"));

Errore:
invalid conversion from 'byte' to 'char*'

Io devo convertire dei byte non dei caratteri... smiley-sweat
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10112
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

gista l'idea, sbagliata la realizzazione...

spintf come primo argomento vuole IL PUNTATORE alla stringa (quindi non "il carattere"), come secondo argomento il % deve essere seguito dal TIPO di dato, ed infine la/le variabili le passi come argomento successivo. Quindi sarebbe:

sprintf(buffer, "%d", x);

ma così perdi il contenuto di buffer; per risolvere, prima di tutto buffer[0] nel setup lo poni = '\0' se no si incasina tutto (e anche quando vuoi azzerare la stringa, basta questa operazione) e poi:

sprintf(buffer, "%s%d", buffer, x);

ma puoi fare di meglio: evitare completamente l'uso di sprintf:

buffer[j]=x;

se vuoi invece convertire (non è il tuo caso, ma per completezza) dovresti fare:

buffer[j]=x+'0';//in caso di numeri, con le lettere il procedimento è simile ma non ha molto significato all'atto pratico
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Pages: [1]   Go Up
Jump to: