Hjälp med ett problem i programmering till Arduino

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
RadioDJ
Inlägg: 402
Blev medlem: 7 november 2005, 16:18:15
Ort: Helsingborg

Hjälp med ett problem i programmering till Arduino

Inlägg av RadioDJ »

Jag har nu kört fast igen, även om det var ett tag sedan.
Har ett litet problem som jag inte lyckats lösa och hoppas på en hjälpsam själ.

Jag har en char array som består av 3 tecken.
Den startar alltid med - (minus) och kan sedan innehålla talen 10 till 99.
Men den kan också innehålla talen 0 till 9. I detta fallet ligger den en . (punkt i slutet också).
Jag vill plocka ut enbart siffrorna.

Har provat med strtok() och så länge som det är 2 siffror så går det bra.
Vid ental har jag inte lyckats. Jag får inte bort punkten.

Någon som kan tänka sig att komma med ett exempel på hur jag kan lösa detta på ett smidigt sätt?
svanted
Inlägg: 5082
Blev medlem: 30 augusti 2010, 21:20:38
Ort: Umeå

Re: Hjälp med ett problem i programmering till Arduino

Inlägg av svanted »

är det en skoluppgift?
innan konverteringen, titta i sista tecknet, om det är en "." så shifta alla tecken till höger och fyll på med "0"or från vänster.
antar det är ASCII värden,
hur omvandlar man ett ASCII till heltal?
RadioDJ
Inlägg: 402
Blev medlem: 7 november 2005, 16:18:15
Ort: Helsingborg

Re: Hjälp med ett problem i programmering till Arduino

Inlägg av RadioDJ »

Ingen skoluppgift.
Det är över 30 år sedan jag gick ut skolan.
Nu är det en hobby med ett speciellt mål som jag har.
Inget ASCII här inte, här läser jag av det som "äkta" tecken.
Det med att flytta allt på ena eller andra hållet har jag ingen koll på.
Tack för tipset. Dax att läsa på lite om detta eller du kanske kan hjälpa mig på traven.
Som sagt är ingen världsmästare på C. Göra bara så gått jag kan.
Löste ett annat problem nyligen med en slinga som tog för lång tid. Ibland ska man inte krångla till det.
hummel
Inlägg: 2259
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: Hjälp med ett problem i programmering till Arduino

Inlägg av hummel »

Konvertera din array till en String, använd sedan .toInt() på din sträng.
Hade det varit C med stdio-biblioktet så är sscanf() en enkel lösning, vet inte om arduino har stöd för det.
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Hjälp med ett problem i programmering till Arduino

Inlägg av Mr Andersson »

String::toInt() fungerar bara för ASCII. TS använder tydligen någon "äkta" (hemlig) teckenkodning.
Enklast är förmodligen att läsa varje enskilt tecken, omvandla från tecken till värde, och summera alltihop om sista tecknet inte är en punkt.
Användarvisningsbild
Klas-Kenny
Inlägg: 11292
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Hjälp med ett problem i programmering till Arduino

Inlägg av Klas-Kenny »

Du säger att det inte är ASCII, menar du att du har så att tex. talet 5 ligger i arrayen som just en femma (0x05), snarare än tecknet '5'?

Jag hade i alla fall, rent spontant, löst det enkelt med typ;

Kod: Markera allt

int myDecodeFunction(char *myArray) {
   if(myArray[2] == '.')
      return myArray[1];
   else
      return 10*myArray[1] + myArray[2];
}
Eller någonting i den stilen. Och är det ascii-kodat är det ju bara till att subtrahera 0x30 när man läser tecknen.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43149
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Hjälp med ett problem i programmering till Arduino

Inlägg av sodjan »

> Jag vill plocka ut enbart siffrorna.

Du måste visa betydligt tydligare vad det är du vill göra!
Vad betyder "plocka ut" mer specifikt?

Har du t.ex "-27" och vill få "27"? Eller "-7." och vill få "7"?
Spontant är det bara lite vanlig stränghantering. Om sista
tecknet är "." så tar du bara mittentecknet. Om inte så tar
du båda sista tecknen.

Eller vill du ha *värdena* 27 resp 7 (i exemplen ovan)?

Skriv ner ett par exempel på vad du har och vad du vill ha.
RadioDJ
Inlägg: 402
Blev medlem: 7 november 2005, 16:18:15
Ort: Helsingborg

Re: Hjälp med ett problem i programmering till Arduino

Inlägg av RadioDJ »

Tack för alla ledtrådarna.
Ska prova dessa under helgen.
Skriv svar