INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Automatische IP zuteilung
29.08.2014, 21:12
Beitrag #1
Automatische IP zuteilung
Hallo zusammen.

Ich habe ein kleines Ethernetshild gekauft. Funktionieren tuts mit den Codebeispielen ohne Probleme.

Ich möchte damit dann Sensordaten über das Intranet abfragen können. Nun habe ich aber das Problem, dass ich einen Teil des Codes nicht verstehe.

PHP-Code:
void setup(){
  
Serial.begin(57600);
  
Serial.println("\n[backSoon]");
  
  if (
ether.begin(sizeof Ethernet::buffermymac) == 0
    
Serial.println"Failed to access Ethernet controller");

    
    
#if STATIC
  
ether.staticSetup(myipgwip);
#else
  
if (!ether.dhcpSetup())
    
Serial.println("DHCP failed");

#endif

  
ether.printIp("IP:  "ether.myip);
  
ether.printIp("GW:  "ether.gwip);  
  
ether.printIp("DNS: "ether.dnsip);
    


Wenn ich den Code so laufen lasse, bekommt der UNO erst eine IP wenn ich ihn über den Serialmonitor anspreche. Ich möchte aber, dass der UNO die IP ohne meine Hilfe vom Netzwerkserver bekommt, und diese dann auf einem LCD anzeigt. Ich habe breits probiert, alle "Serial.println" in "lcd.print" zu ändern, aber dann werden blos die beiden Fehlermeldungen angezeit und eine IP wird auch nicht zugeteilt. Hier noch der ganze Code:

PHP-Code:
// Present a "Will be back soon web page", as stand-in webserver.
// 2011-01-30 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php
 
#include <EtherCard.h>




#define STATIC 0  // set to 1 to disable DHCP (adjust myip/gwip values below)

#if STATIC
// ethernet interface ip address
static byte myip[] = { 192,168,1,200 };
// gateway ip address
static byte gwip[] = { 192,168,1,};
#endif

// ethernet mac address - must be unique on your network
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

byte Ethernet::buffer[500]; // tcp/ip send and receive buffer

const char page[] PROGMEM =
"HTTP/1.0 503 Service Unavailable\r\n"
"Content-Type: text/html\r\n"
"Retry-After: 600\r\n"
"\r\n"
"<html>"
  "<head><title>"
    "Service Temporarily Unavailable"
  "</title></head>"
  "<body>"
    "<h3>This service is currently unavailable</h3>"
    "<p><em>"
      "The main server is currently off-line.<br />"
      "Please try again later."
    "</em></p>"
  "</body>"
"</html>"
;



void setup(){

  
Serial.begin(57600);
  
Serial.println("\n[backSoon]");
  
  if (
ether.begin(sizeof Ethernet::buffermymac) == 0
    
Serial.println"Failed to access Ethernet controller");

    
    
#if STATIC
  
ether.staticSetup(myipgwip);
#else
  
if (!ether.dhcpSetup())
    
Serial.println("DHCP failed");
 
#endif

  
ether.printIp("IP:  "ether.myip);
  
ether.printIp("GW:  "ether.gwip);  
  
ether.printIp("DNS: "ether.dnsip);
    
}

void loop(){
  
// wait for an incoming TCP packet, but ignore its contents
  
if (ether.packetLoop(ether.packetReceive())) {
    
memcpy_P(ether.tcpOffset(), pagesizeof page);
    
ether.httpServerReply(sizeof page 1);
  }



Danke schonmal fürs helfen.

Das Wissen über Programmieren, eröffnet neue Welten in der Elektronik. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.08.2014, 21:44
Beitrag #2
RE: Automatische IP zuteilung
(29.08.2014 21:12)Sbbfreack schrieb:  Hallo zusammen.

Ich habe ein kleines Ethernetshild gekauft. Funktionieren tuts mit den Codebeispielen ohne Probleme.

Ich möchte damit dann Sensordaten über das Intranet abfragen können. Nun habe ich aber das Problem, dass ich einen Teil des Codes nicht verstehe.

PHP-Code:
void setup(){
  
Serial.begin(57600);
  
Serial.println("\n[backSoon]");
  
  if (
ether.begin(sizeof Ethernet::buffermymac) == 0
    
Serial.println"Failed to access Ethernet controller");

    
    
#if STATIC
  
ether.staticSetup(myipgwip);
#else
  
if (!ether.dhcpSetup())
    
Serial.println("DHCP failed");

#endif

  
ether.printIp("IP:  "ether.myip);
  
ether.printIp("GW:  "ether.gwip);  
  
ether.printIp("DNS: "ether.dnsip);
    


Wenn ich den Code so laufen lasse, bekommt der UNO erst eine IP wenn ich ihn über den Serialmonitor anspreche. Ich möchte aber, dass der UNO die IP ohne meine Hilfe vom Netzwerkserver bekommt, und diese dann auf einem LCD anzeigt. Ich habe breits probiert, alle "Serial.println" in "lcd.print" zu ändern, aber dann werden blos die beiden Fehlermeldungen angezeit und eine IP wird auch nicht zugeteilt. Hier noch der ganze Code:

PHP-Code:
// Present a "Will be back soon web page", as stand-in webserver.
// 2011-01-30 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php
 
#include <EtherCard.h>




#define STATIC 0  // set to 1 to disable DHCP (adjust myip/gwip values below)

#if STATIC
// ethernet interface ip address
static byte myip[] = { 192,168,1,200 };
// gateway ip address
static byte gwip[] = { 192,168,1,};
#endif

// ethernet mac address - must be unique on your network
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

byte Ethernet::buffer[500]; // tcp/ip send and receive buffer

const char page[] PROGMEM =
"HTTP/1.0 503 Service Unavailable\r\n"
"Content-Type: text/html\r\n"
"Retry-After: 600\r\n"
"\r\n"
"<html>"
  "<head><title>"
    "Service Temporarily Unavailable"
  "</title></head>"
  "<body>"
    "<h3>This service is currently unavailable</h3>"
    "<p><em>"
      "The main server is currently off-line.<br />"
      "Please try again later."
    "</em></p>"
  "</body>"
"</html>"
;



void setup(){

  
Serial.begin(57600);
  
Serial.println("\n[backSoon]");
  
  if (
ether.begin(sizeof Ethernet::buffermymac) == 0
    
Serial.println"Failed to access Ethernet controller");

    
    
#if STATIC
  
ether.staticSetup(myipgwip);
#else
  
if (!ether.dhcpSetup())
    
Serial.println("DHCP failed");
 
#endif

  
ether.printIp("IP:  "ether.myip);
  
ether.printIp("GW:  "ether.gwip);  
  
ether.printIp("DNS: "ether.dnsip);
    
}

void loop(){
  
// wait for an incoming TCP packet, but ignore its contents
  
if (ether.packetLoop(ether.packetReceive())) {
    
memcpy_P(ether.tcpOffset(), pagesizeof page);
    
ether.httpServerReply(sizeof page 1);
  }



Danke schonmal fürs helfen.

Hallo,
..öhm warum nimmst du keine statische IP Adresse weil wenn du aus dem Intranet auf den Arduino zugreifen willst mußt ja die IP Adresse kennen sonst wird das nichts. Also ich mache das mit der statischen IP und habe dafür im Router einen Adressraum reserviert wo ich meine statischen IP's hinlege.
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Der automatische morgendliche Kaffee NicoW 2 1.677 27.09.2013 17:31
Letzter Beitrag: NicoW

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste