Hallo Arduino Freunde,
wieder stehe ich vor einem kleinen Problem.
Ich möchte mit einem kleinen Tool (namens Packet Sender) einen ASCII Text an meinen ENC28J60 senden und diesen empfangen Text mit dem println Befehl im Monitor anzeigen lassen.
Ich habe mich natürlich schon per Google umgeschaut, aber leider bin ich mit der ganzen Arduino IDE so frisch bewandert das mir die meisten Quellcode's einfach noch nicht genug sagen. Habe mir auch die Ethercard Lib Dokumentation (auf englisch) angeschaut, aber leider wurde ich nicht fündig.
Hier mal mein Beispielcode:
// 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 1 // set to 1 to disable DHCP (adjust myip/gwip values below)
#if STATIC
// ethernet interface ip address
static byte myip[] = { 192,168,178,200 };
// gateway ip address
static byte gwip[] = { 192,168,178,1 };
// DNS Adress
static byte dnss[] = {192,168,178,1};
// Subnet Mask
static byte subm[] = {255, 255, 255, 0};
#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
static BufferFiller bfill; // used as cursor while filling the 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.
"
"Please try again later."
"</em></p>"
"</body>"
"</html>"
;
void setup(){
Serial.begin(57600);
while (!Serial) { } ; // wait for serial port to connect. Needed for native USB
Serial.println("\n[backSoon]");
if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
Serial.println( "Failed to access Ethernet controller");
#if STATIC
ether.staticSetup(myip, gwip, dnss, subm);
ether.hisport = 8080;
#else
if (!ether.dhcpSetup())
Serial.println("DHCP failed");
#endif
ether.printIp("IP: ", ether.myip);
ether.printIp("GW: ", ether.gwip);
ether.printIp("DNS: ", ether.dnsip);
ether.printIp("Mask: ", ether.netmask);
}
void loop(){
// wait for an incoming TCP packet, but ignore its contents
if (ether.packetLoop(ether.packetReceive())) {
Serial.println("Incoming TCP Packet...");
Serial.println(???);
memcpy_P(ether.tcpOffset(), page, sizeof page);
ether.httpServerReply(sizeof page - 1);
}
}
In der Loop Anweisung habe ich eine Zeile mit 'Serial.println(???);' hinzugefügt, weil ich an der Stelle gerne den Text ausgeben möchte der per TCP in dem Buffer empfangen wurde.
Wäre toll wenn mir jemand die herangehensweise erläutern kann wie ich das hin bekommen kann.
Mein Hauptziel liegt darin, später Befehle per TCP zu senden und der Arduino führt dann eine entsprechende Funktion aus. (Aber wäre erst der übernächste Step)
Vielen Dank schon mal im voraus
Beste Grüße,
kinglazee