Nog maar een newbee vraagje
6 berichten
• Pagina 1 van 1
Nog maar een newbee vraagje
Ik heb de volgende code:
Wat is er mis met de laatste regel ?
Kan ik zo de payload 'pakketje' niet vullen met een waarde uit een #define ?
- Code: Alles selecteren
#define nodeID 1 // Physical Sensor ID
#define nodeTYPE 'P' // type of sensor
#define nodeVERSIE "1.0.a" // verion sensor
// Configure the payload
struct payload_t {
int node;
char sensortype;
int battery;
char versie[6];
};
// definieer 'pakketje' als payload
payload_t pakketje;
// vul payload
pakketje.node = nodeID;
pakketje.sensortype = nodeTYPE;
pakketje.battery = BatteryPercentage();
pakketje.versie = nodeVERSIE;
Wat is er mis met de laatste regel ?
Kan ik zo de payload 'pakketje' niet vullen met een waarde uit een #define ?
Advertisement
- GF-Projects
- Berichten: 11
- Geregistreerd: 02 Jul 2014, 21:34
Re: Nog maar een newbee vraagje
Probeer eens:
strcpy(pakketje.versie, "%s", nodeVERSIE);
strcpy(pakketje.versie, "%s", nodeVERSIE);
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Nog maar een newbee vraagje
GF-Projects schreef:Probeer eens:
strcpy(pakketje.versie, "%s", nodeVERSIE);
Dat gaat niet werken omdat je bij strcpy geen formatted string mee kan geven. Dat is hier ook niet nodig. Je kan gewoon dit gebruiken:
cpp code
strcpy(pakketje.versie, nodeVERSIE);
Er is hier sprake van een character array. Als je dan alleen de naam van die variabele geeft, dan geef je alleen het adres door van de eerste byte. Het is dus het zelfde als:
cpp code
&array[0] = adres van eerste plek van array
Wat je hier wilt doen is een string copy uitvoeren met als syntax:
cpp code
strcpy (*ontvangende adres, *versturende adres); = kopieer alle bytes van versturende adres naar ontvangende adres met gelijkmatige ophoging totdat
je een '\0' teken tegen komt. En kopieer die ook naar het ontvangende veld
En daar zit nog wel eens de crux. Mensen vergeten deze extra byte mee te nemen in het ontvangende veld voor de grootte.
De compiler zal in dat geval bij een volgende benadering (bijv. println() oid) niet weten wanneer het laatste teken er is om te printen. In het meest extreme geval zal println() de rest van het ram geheugen proberen uit te printen.
Re: Nog maar een newbee vraagje
Die snap ik, dank
Echter ik kan nergens vinden wat het middelste argument "%s" doet.
Alle uitleg heeft het over 2. nl strcpy(dest, src)
g
Echter ik kan nergens vinden wat het middelste argument "%s" doet.
Alle uitleg heeft het over 2. nl strcpy(dest, src)
g
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Nog maar een newbee vraagje
Palumbus schreef:Die snap ik, dank
Echter ik kan nergens vinden wat het middelste argument "%s" doet.
g
Dat is ook gewoon fout...
6 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten