Ondersteuning > Programmeren

Python --> C/C++

<< < (2/3) > >>

TopGear:
Wat was de uiteindelijke oplossing, Henk?

henkoegema:

--- Citaat van: TopGear op 2021/04/20, 15:23:20 ---Wat was de uiteindelijke oplossing, Henk?

--- Einde van citaat ---


--- Code: ---
void setup(){
  Serial.begin(115200);
}

void loop(){

  char dataPacket[] = "-0.01,0.55,-0.7,-1";
  char delim[] = ",";
  char *ptr = strtok(dataPacket, delim);   <====== moest deze lijn weglaten. (zoals erik1984 al aangaf)

  float q0 = atof(strtok(dataPacket, delim));
  float q1 = atof(strtok(NULL, delim));
  float q2 = atof(strtok(NULL, delim));
  float q3 = atof(strtok(NULL, delim));
 
  Serial.println(q0);
  Serial.println(q1);
  Serial.println(q2);
  Serial.println(q3);
 
  delay(1000);
}

--- Einde van code ---

bart85:
waarom niet onderstaande?


--- Code: ---float q[4];
q[0] = atof(strtok(dataPacket, delim));

for(int i=1;i<4;i++{
    q[i]=atof(strtok(NULL, delim));
}
--- Einde van code ---

henkoegema:

--- Citaat van: bart85 op 2021/05/09, 11:05:59 ---waarom niet onderstaande?


--- Code: ---float q[4];
q[0] = atof(strtok(dataPacket, delim));

for(int i=1;i<4;i++{
    q[i]=atof(strtok(NULL, delim));
}
--- Einde van code ---

--- Einde van citaat ---

Ja, had ook gekund.   :)

bart85:
ik denk dat de python code wat mooier kan. Met onderstaande oneliner:


--- Code: ---q = [float(i) for i in str(ad.readline(), 'utf-8').split(",")]

--- Einde van code ---

Dit creeert een array met 4 elementen van het type float. Dat zijn 7 regels naar 1 regel gebracht.
Met een simpele for loop kun je q uitlezen.

Navigatie

[0] Berichtenindex

[#] Volgende pagina

[*] Vorige pagina

Naar de volledige versie