Ik ben recent begonnen het het arduino programmeren en ik loop tegen een probleem aan waar ik niet uitkom.
Ik heb een functie die seriele gegeven omzet naar een character array. Deze gegevens worden naar een andere functie gezet welke ze omzet naar een decimaal getal.
Vb: Als ik 255123 stuur dan moet ik de losse nummers eruit halen (255 and 123). De functie die dit doet is hieronder beschreven:
Om deze functie te gebruiken doe ik het volgende: (buffer is de array met de seriële gegevens)
Wanneer ik via de seriele poort 123456 verstuur dan wordt firstcolor netjes 123 (wat goed is) echter wanneer ik de tweede functie aanroep (welke 234 zou moeten geven) dan wordt er echter alleen '23' getoond. Verander ik het voorbeeld naar onderstaande:
Dan wordt er netjes tweemaal 123 geprint. Ik zou denken dat het zit in de manier van meegeven echter zou de array binnen de functie alleen lokaal gebruikt moeten worden. En dan kan ik nog niet verklaren waarom er 23 wordt geprint.
Ik heb wel lopen googlen maar met mijn verstand kom ik er nog niet uit. Nu hoop ik dat iemand mij wil uitleggen waarom ik deze gegevens krijg.
Ik heb een functie die seriele gegeven omzet naar een character array. Deze gegevens worden naar een andere functie gezet welke ze omzet naar een decimaal getal.
Vb: Als ik 255123 stuur dan moet ik de losse nummers eruit halen (255 and 123). De functie die dit doet is hieronder beschreven:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| int GetColorInfo(char data[128],int start,int end) { int output =0; for(int i=start; i <= end; i++) { int color = data[i]; int number = color -48; //ga van ascii naar numeriek if(number >= 0 && number <=9) { switch (i) { case 0: output += (number * 100); break; case 1: output += (number * 10); break; case 2: output += number; break; } } return output; } |
Om deze functie te gebruiken doe ik het volgende: (buffer is de array met de seriële gegevens)
C:
1
2
3
4
5
6
7
| void loop() { int firstColor = GetColorInfo(buffer,0,2); Serial.println(firstColor); int secondColor = GetColorInfo(buffer,1,3); Serial.println(secondColor); } |
Wanneer ik via de seriele poort 123456 verstuur dan wordt firstcolor netjes 123 (wat goed is) echter wanneer ik de tweede functie aanroep (welke 234 zou moeten geven) dan wordt er echter alleen '23' getoond. Verander ik het voorbeeld naar onderstaande:
C:
1
2
3
4
| int firstColor = GetColorInfo(buffer,0,2); Serial.println(firstColor); int secondColor = GetColorInfo(buffer,0,2); Serial.println(secondColor); |
Dan wordt er netjes tweemaal 123 geprint. Ik zou denken dat het zit in de manier van meegeven echter zou de array binnen de functie alleen lokaal gebruikt moeten worden. En dan kan ik nog niet verklaren waarom er 23 wordt geprint.
Ik heb wel lopen googlen maar met mijn verstand kom ik er nog niet uit. Nu hoop ik dat iemand mij wil uitleggen waarom ik deze gegevens krijg.
You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?