Pages: [1]   Go Down
Author Topic: String of data in een Array krijgen  (Read 275 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ik heb met een omweg het al geprobeerd in  de algemene secties maar zonder resultaat  mss kunnen jullie me helpen in mijn moedertaal.

effe uitleggen wat ik heb

ik heb een
char buffer[516];

welke gevuld is met data
als ik de buffer weergeef krijg ik dit

0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255

wat ik nu zou wensen is een array waarbij

int data[0] = 0
int data[1] = 0
int data[3] = 255
int data[4] = 255

enzo voort

wat ik al geprobeerd heb is dit

Code:
for( str = strtok_r(buffer, "," ,&p);
        str;
        str = strtok_r(NULL, "," , &p)
        )
        {
         Serial.println(str);
       // data[i] = str;
       i++;
        }

maar dan krijg ik fout van
Code:
standv3:66: error: invalid conversion from 'char*' to 'long int'

kan iemand me op de goede weg brengen

Logged

Heemskerk, Netherlands
Offline Offline
Sr. Member
****
Karma: 10
Posts: 368
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Je moet eerst die stukjes tussen de komma kopieren naar een veld[4]. Vervolgens zet op veld[3] een '\0';.
Dan heb je weer een terminated string en kun je de functie atoi() gebruiken. Die zet de string om in een. Daar het veld kennelijk nooit groter dan 255 kan worden kun je ook volstaan met een uint8_t veld (- 1 byte lang unsigned).
Je kan het ook nog slimmer aanpakken door een strtok te doen op de  komma en die dan te vervangen door een \0. Dan heb je in de buffer gelijk de terminated string staan. Je begin positie is dan het begin van de string.
Daarna zet je de volgende begin positie op de \0 plek +1 en begin je opnieuw. Nadeel is dat als je klaar bent, er geen comma's meer in de buffer staan maar \0 op de plek van de komma.
Logged

Pages: [1]   Go Up
Jump to: