Arduino byte to string

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
SweLogan
Inlägg: 550
Blev medlem: 29 januari 2006, 23:36:15
Ort: Jönköping

Arduino byte to string

Inlägg av SweLogan »

Hej har lite problem med att få byte till string.

Kod: Markera allt

String getNummer(int plats){
  plats = plats * 100;
  String returnString;
  
  int counter = EEPROM.read(plats);
 
  for (int i=0; i <= counter-1; i++){
    byte value = EEPROM.read(plats+1+i);
    returnString = returnString + String(value);
  }
  
  return returnString;
}
getNummer(1) ska vara lika med +46704562745

Skriver jag i funktionen Serial.write(value) så fungerar det bra.
men när jag försöker skriva över det till en sträng så får jag "435254554852535450555253"
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Arduino byte to string

Inlägg av sodjan »

Du ser väl kopplingen mellan det förväntade och det du får, eller hur ?

Sen så ser det ju ut som ett telefonnummer, varför hantera det
numeriskt över huvudtaget ? Ha det som en sträng hela tiden...

Hur ligger det lagrat i eeprom, som ASCII ?
Varför gå via String() i så fall ? Det är ju redan ASCII...
ToPNoTCH
Inlägg: 5152
Blev medlem: 21 december 2009, 17:59:48

Re: Arduino byte to string

Inlägg av ToPNoTCH »

Ändra raden:

Kod: Markera allt

returnString = returnString + String(value);
till

Kod: Markera allt

returnString = returnString + String(value,HEX);
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Arduino byte to string

Inlägg av sodjan »

Det kommer sannolikt bara att ge värdet uttryckt i hex.
D.v.s att första tecknet blir "2B" istället för "43" (och
istället för "+" som han vill ha och som det redan är).

På samma sätt ger "BIN" resultatet "101011".

Prova

Kod: Markera allt

returnString = returnString + value;
(om det fungerar).

"value" innehåller ju redan rätt format, ett tecken kodat i ASCII.
Fast det har inte rätt datatyp (string), vilket kan röra till det.

Se även : http://arduino.cc/en/Tutorial/StringAppendOperator
vilket kan vara det du behöver...
zealotry
Inlägg: 919
Blev medlem: 9 oktober 2004, 22:28:40
Ort: Västerås

Re: Arduino byte to string

Inlägg av zealotry »

Nej jag tror topnotch har rätt. Kolla code reference för arduino och string() här: http://arduino.cc/en/Reference/StringConstructor

Kod: Markera allt

String thisString = String(13, HEX)

gives you the String "D", which is the hexadecimal representation of the decimal value 13. Or if you prefer binary,
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Re: Arduino byte to string

Inlägg av stekern »

Det var ju precis vad sodjan sa, och det är nog inte vad TS vill ha.
zealotry
Inlägg: 919
Blev medlem: 9 oktober 2004, 22:28:40
Ort: Västerås

Re: Arduino byte to string

Inlägg av zealotry »

my bad, kan nog glömma det jag skrev. Ibland går det för fort =)
Användarvisningsbild
Krille Krokodil
Inlägg: 4062
Blev medlem: 9 december 2005, 22:33:11
Ort: Helsingborg

Re: Arduino byte to string

Inlägg av Krille Krokodil »

I funktionen hade det varit enklare om du skippat String och kört med vanliga C-strängar (char MyString[] = "abc";), vinner du något i resten av programmet på att använda String?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Arduino byte to string

Inlägg av sodjan »

Man kanske tappar lite "Arduino-kompatibilitet"... :-)
ToPNoTCH
Inlägg: 5152
Blev medlem: 21 december 2009, 17:59:48

Re: Arduino byte to string

Inlägg av ToPNoTCH »

Hmm...Vart nog lite lurad av referens dokumentationen där.

Nytt försök:

Ändra

Kod: Markera allt

returnString = returnString + String(value);
till

Kod: Markera allt

returnString = returnString + char(value);
Det funkar.
Skriv svar