Go Down

Topic: DHCP netwerk tester code probleem (Read 805 times) previous topic - next topic

wishmaster

Hallo,

Ik ben nieuw op het forum en begin direct met een vraag.

Ik ben bezig met een privé project. ik ben een DHCP tester aan het maken door gebruik te maken van een arduino nano met een netwerk shield en een OLED I2C schermpje. en dit allemaal verpakt in een hergebruikt Dell USB Modem behuizing.

Mijn probleem zit hem in de code.

Ik probeer dus het IP adres te printen op het LCD. hierbij gaat het bij mij fout.
ik krijg daarbij de volgende foutmelding. en ik kom er helaas niet uit.
Ik heb geprobeerd dit probleem op te zoeken via Google maar helaas.

Code: [Select]
C:\Users\User\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino/Print.h:81:12: note: size_t Print::println(long unsigned int, int) <near match>

     size_t println(unsigned long, int = DEC);

            ^

C:\Users\User\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.18\cores\arduino/Print.h:81:12: note:   no known conversion for argument 2 from 'uint8_t [4] {aka unsigned char [4]}' to 'int'

exit status 1
call of overloaded 'println(const char [8], uint8_t [4])' is ambiguous


Kan iemand mij uitleggen wat ik in mijn code moet hebben om het goed te krijgen?
Als bijlage heb ik de code voor het project toegevoegd.

Alvast bedankt.
Wishmaster

MAS3

Hoi wishmaster, welkom.


De foutmelding is op zich wel duidelijk hoor.
Ambigious betekent dubbelzinnig oftewel op meerdere wijzen uit te leggen.

Volgens mij stuur je een getalreeks waar een enkel getal verwacht word, en gaat het daarom niet goed.
Je zou in dat geval de data eerst moeten omzetten, bijvoorbeeld naar ASCII waarden, en dat dan als een tekst naar de display moeten sturen.
Ik zeg dat zo omdat een IP adres niet alleen uit getallen bestaat.

Wat zie je met deze sketch in de serial monitor voorbij komen als je de regels voor het printen naar je OLED uit commentarieert (er // voor zetten) ?
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

sterretje

#2
May 07, 2017, 08:39 am Last Edit: May 07, 2017, 08:40 am by sterretje
Als https://github.com/jcw/ethercard de bibliotheek is die je gebruikt, moet je even de EtherCard.h bestuderen.

Code: [Select]

static uint8_t myip[IP_LEN]; ///< IP address

4 bytes en dat kun je gewoonlijk niet zo printen zoals jij dat doet; je moet iedere byte individueel printen.

Een alternatieve mogelijkheid is
Code: [Select]

char txt[16];

// print in hex
sprintf(txt, "0x%02X%02X%02X%02X", ether.myip[0], ether.myip[1], ether.myip[2], ether.myip[3]);
OF
// print dot notatie
sprintf(txt, "%03d.%03d.%03d.%03d", ether.myip[0], ether.myip[1], ether.myip[2], ether.myip[3]);

En vervolgens de 'txt' variabele printen.

De variabele 'txt' moet groot genoeg zijn om de volledige text (inclusief het afsluitende nul karacter) te bevatten (bv v4x3 is 12 plus 3 decimale punten plus afsluitende nul en het totaal is 16).

Niet getest !

@MAS3:
Een ip adres bevat alleen getallen, the reprentatie kan anders zijn ;)
If you understand an example, use it.
If you don't understand an example, don't use it.

Electronics engineer by trade, software engineer by profession. Trying to get back into electronics after 15 years absence.

Go Up