Pages: [1] 2   Go Down
Author Topic: Probleme mit UDP  (Read 8430 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Guten Abend,

ich wollte gerade mal das Bsp-Sketch "udpntpclient" laden...
Normalerweise sollte doch im serialmonitor die zeit angezeigt werden oder?

Bei mir kommt nix...
Habe andere Sketche probiert, die auch im Serialmonitor schreiben, da gehts.

Meine baudrate is 9600
Habe Arduino 0022 aufm PC.
Mein Borad ist ein Mega 2560.
Muss man noch was beachten oder wo liegt hier der Hund begraben?

Danke für eure Hilfe.


Hier der Code aus dem BspSketch
Code:
/*

 Udp NTP Client
 
 Get the time from a Network Time Protocol (NTP) time server
 Demonstrates use of UDP sendPacket and ReceivePacket
 For more on NTP time servers and the messages needed to communicate with them,
 see http://en.wikipedia.org/wiki/Network_Time_Protocol
 
 created 4 Sep 2010
 by Michael Margolis
 modified 17 Sep 2010
 by Tom Igoe
 
 This code is in the public domain.

 */

#include <SPI.h>        
#include <Ethernet.h>
#include <Udp.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {  
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {
  192,168,1,177 };


unsigned int localPort = 8888;      // local port to listen for UDP packets

byte timeServer[] = {
  192, 43, 244, 18}; // time.nist.gov NTP server

const int NTP_PACKET_SIZE= 48; // NTP time stamp is in the first 48 bytes of the message

byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets

void setup()
{
  // start Ethernet and UDP
  Ethernet.begin(mac,ip);
  Udp.begin(localPort);

  Serial.begin(9600);
}

void loop()
{
  sendNTPpacket(timeServer); // send an NTP packet to a time server

    // wait to see if a reply is available
  delay(1000);  
  if ( Udp.available() ) {  
    Udp.readPacket(packetBuffer,NTP_PACKET_SIZE);  // read the packet into the buffer

    //the timestamp starts at byte 40 of the received packet and is four bytes,
    // or two words, long. First, esxtract the two words:

    unsigned long highWord = word(packetBuffer[40], packetBuffer[41]);
    unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);  
    // combine the four bytes (two words) into a long integer
    // this is NTP time (seconds since Jan 1 1900):
    unsigned long secsSince1900 = highWord << 16 | lowWord;  
    Serial.print("Seconds since Jan 1 1900 = " );
    Serial.println(secsSince1900);              

    // now convert NTP time into everyday time:
    Serial.print("Unix time = ");
    // Unix time starts on Jan 1 1970. In seconds, that's 2208988800:
    const unsigned long seventyYears = 2208988800UL;    
    // subtract seventy years:
    unsigned long epoch = secsSince1900 - seventyYears;  
    // print Unix time:
    Serial.println(epoch);                              


    // print the hour, minute and second:
    Serial.print("The UTC time is ");       // UTC is the time at Greenwich Meridian (GMT)
    Serial.print((epoch  % 86400L) / 3600); // print the hour (86400 equals secs per day)
    Serial.print(':');  
    Serial.print((epoch  % 3600) / 60); // print the minute (3600 equals secs per minute)
    Serial.print(':');
    Serial.println(epoch %60); // print the second
  }
  // wait ten seconds before asking for the time again
  delay(10000);
}

// send an NTP request to the time server at the given address
unsigned long sendNTPpacket(byte *address)
{
  // set all bytes in the buffer to 0
  memset(packetBuffer, 0, NTP_PACKET_SIZE);
  // Initialize values needed to form NTP request
  // (see URL above for details on the packets)
  packetBuffer[0] = 0b11100011;   // LI, Version, Mode
  packetBuffer[1] = 0;     // Stratum, or type of clock
  packetBuffer[2] = 6;     // Polling Interval
  packetBuffer[3] = 0xEC;  // Peer Clock Precision
  // 8 bytes of zero for Root Delay & Root Dispersion
  packetBuffer[12]  = 49;
  packetBuffer[13]  = 0x4E;
  packetBuffer[14]  = 49;
  packetBuffer[15]  = 52;

  // all NTP fields have been given values, now
  // you can send a packet requesting a timestamp:               
  Udp.sendPacket( packetBuffer,NTP_PACKET_SIZE,  address, 123); //NTP requests are to port 123
}

Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 704
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich gehe davon aus, dass:
Das Ethernet Shield auf das Board gesteckt und Netzwerk-Zugang hat.

Bekommst du eine Fehlermeldung oder sonst einen Anhaltspunkt der weiterhelfen kann?
Logged

Oldenburg
Offline Offline
Sr. Member
****
Karma: 16
Posts: 270
Arduino, imagine the possibilities!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,

ist das Ethernetshield für den Gebrauch am Mega geeignet?


Gruß

Sebastian
Logged

Libraries:
  - multiCameraIrControl [V1.6]
  -

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,


Also ja das Netzwerkkabel steckt drinne.
Hatte auch schon den Sketchwebserver drauf und konnte so den sattus der pins im browser sehen. Dies und die Aufschrift auf dem Ethernet Shield "MEGA compatible" sagt mir das es für den MEGA geeignet ist.

Ne fehlermeldung kommt beim Hochladen nicht.

Ich nehm den code so wie er oben ist und lade ihn hoch und es kommt keine fehlermeldung aber auch keien reaktion im serialmonitor...
hab auch schon geguckt ob der COM-Port stimmt...und der stimmt auch.
Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 704
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
ist das Ethernetshield für den Gebrauch am Mega geeignet?
Ja, die aktuelle Version ist Mega kompatibel. Steht sogar auf dem Board  smiley-wink
Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 704
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hat das Board auch Zugang zum Internet?
Sonst ist der Timeserver nicht erreichbar.
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hab grad ma ein paar ausgaben gemacht:

Code:
void loop()
{
  Serial.print("1 ");   //Ausgabe um zu schauen ob überhaupt was geht
  sendNTPpacket(timeServer); // send an NTP packet to a time server

Bis dahin gehts. Bei der Funktion
Code:
sendNTPpacket(timeServer);
gehts net weiter.
Allerdings läuft die loop weiter so dass mir der Serialmonitor etwas später wieder ne 1 auspuckt.
Allerdings wenn ich weiter unten im code weitere"Prüfzahlen" ausgeben lassen will kommt da nix
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hm also ich bin jedenfalls im Internet und das board ist im selben netz wie ich. allerdings weis ich nicht ob das jetzt im netz ist. kann auch keine ports an der firewall freischalten, da ich grad auf arbeit bin... das teste ich dann ma daheim. ich melde michd ann wieder(morgen)
Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 704
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Die "1" wird bei jedem Loop ausgegeben.

Aber die nachfolgende serielle Ausgabe erfolgen nur falls Udp.available = True

Code:
 if ( Udp.available() ) {

Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 704
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
da ich grad auf arbeit bin
Was ist das für ein Job wo man am Samstag um 21 Uhr arbeitet und dabei mit dem Arduino basteln kann?  smiley-wink
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also so weit ich jetzt weis, muss man dem timeserver was senden.
Ich denke ma die Funktion
Code:
sendNTPpacket();
macht dies.
Allerdings kann ich nirgend erkennen was die senden soll nicht in der.h und niocht in der .cpp
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Was ist das für ein Job wo man am Samstag um 21 Uhr arbeitet und dabei mit dem Arduino basteln kann?  Wink

ich arbeite in nen Internetcafe ;D
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Guten Tag,
also ich habs jetzt ma zuhause probiert...auch da kommt nix.
hab den arduino angepingt...das geht.
muss man denn irgendwas beachten, wenn man sich die zeit aus dem internet holen will?
bin grad echt am verzweifeln...
Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 704
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe dein Sketch auf meinen Arduino geladen, Ethernet Shield aufgesetzt und ans interne Netzwerk angeschlossen.

Nach Start Serial Monitor öffen und schon wird die Zeit angezeigt.


Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Kanns du mir sagen ob du irgend was an den ports gemacht hast? Hast du einen router? Ich hab zb ne fritzbox 7230.
Welche arduinoversion nutzt du, und welches board/shield nutzt du?
Kan das evtl daran liegen das die fritzbox NAT hat(ka was das ist
Danke fuer deine muehe
Logged

Pages: [1] 2   Go Up
Jump to: