Sida 1 av 1
Arduino byte to string
Postat: 24 augusti 2012, 11:35:25
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"
Re: Arduino byte to string
Postat: 24 augusti 2012, 11:36:58
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...
Re: Arduino byte to string
Postat: 24 augusti 2012, 13:09:42
av ToPNoTCH
Ändra raden:
Kod: Markera allt
returnString = returnString + String(value);
till
Kod: Markera allt
returnString = returnString + String(value,HEX);
Re: Arduino byte to string
Postat: 24 augusti 2012, 13:28:56
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
(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...
Re: Arduino byte to string
Postat: 24 augusti 2012, 14:14:40
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,
Re: Arduino byte to string
Postat: 24 augusti 2012, 14:22:47
av stekern
Det var ju precis vad sodjan sa, och det är nog inte vad TS vill ha.
Re: Arduino byte to string
Postat: 24 augusti 2012, 14:29:46
av zealotry
my bad, kan nog glömma det jag skrev. Ibland går det för fort =)
Re: Arduino byte to string
Postat: 24 augusti 2012, 17:08:40
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?
Re: Arduino byte to string
Postat: 24 augusti 2012, 18:03:23
av sodjan
Man kanske tappar lite "Arduino-kompatibilitet"...

Re: Arduino byte to string
Postat: 24 augusti 2012, 18:22:38
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
Det funkar.