Arduino Ver 1.0 libraries udp ...

Hallo, ich habe Probleme nach der Umstellung auf die Version 1.0 der IDE. Ich verstehe die Releasenote nicht richtig. Was muss ich ändern wenn ich Ehternet und UDP verwnden möchte. Anbei ein Programm das mit der alten Verion ging. Ich habe auch mal die udp.h in EthernetClient.h geändert, hatte aber weiterhin Fehler. :drooling_face:

//Senden und epfangen von Daten per UDP

//Bibliothek LCD4Bit_mod.h einbinden

include

//Neues Objekt vom Type LCD4Bit_mod erzeugen und Anzahl Zeilen übergeben LCD4Bit_mod lcd = LCD4Bit_mod(2);

// Wird für Arduino version groesser 0018 gebraucht fuer Ethernet

include //Bibliothek SPI.h einbinden (Wird für Arduino version groesser 0018 gebraucht fuer Ethernet)

include //Bibliothek Ethernet.h einbinden fuer Netzwerk

include //Bibliothek Udp.h einbinden fuer UDP

int taste_enter=742; //Taste Enter vom LCD4Bit int taste_links=504; //Taste Links vom LCD4Bit int taste_rechts=0; //Taste Rechts vom LCD4Bit int taste_oben=143; //Taste Oben vom LCD4Bit int taste_unten=327; //Taste Unten vom LCD4Bit int taste_nix=1023; //Keine Taste gedruckt vom LCD4Bit

int lcd_tastatureingabe; //Variable fuer die Tastatureingaben vom LCD4Bit char lcd_tastatureingabe_text; //Variable fuer die Tastatureingaben vom LCD4Bit

//Arduino Netzwerkdaten byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Macadresse Arduino byte ip[] = {192,168,112,177 };// IP-Adresse Arduino unsigned int localPort = 8869; // Localer Port auf dem der Arduino auf Daten wartet

//Remotepc Daten byte remoteIp[4]= {192,168,123,13 }; // IP-Adresse des Remotepc unsigned int remotePort=8868; // Port an den Arduino Daten sendet (Remotepc)

// buffers for receiving and sending data char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //Puffer fuer eingehende Pakete char ReplyBuffer[] = "acknowledged"; // Ein Text zun zuruecksenden

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

Serial.begin(9600); pinMode(13, OUTPUT); //Port 13 als Ausgang für Herzschlag lcd.init(); //lcd initialisieren lcd.clear(); //lcd loeschen lcd.printIn("Bereit"); //Bereit auf Display ausgeben }

void loop() { // Wenn Daten verfuegbar dann lesen int packetSize = Udp.available(); // Daten mit UDP header // Udp.sendPacket( "bereit", remoteIp, remotePort); //delay(10); //Udp.sendPacket( "bereit 1", remoteIp, remotePort); //delay(10); //Udp.sendPacket( "bereit 2", remoteIp, remotePort); //delay(10); //Udp.sendPacket( "bereit 3", remoteIp, remotePort); //delay(10); //Udp.sendPacket( "bereit 4", remoteIp, remotePort); //delay(10); //Udp.sendPacket( "bereit 5", remoteIp, remotePort); //delay(10); lcd_tastatureingabe = analogRead(0); // liest Eingaben von der LCD Tastatur

lcd.cursorTo(2, 0); //line=2, x=0

if (lcd_tastatureingabe==taste_enter){lcd_tastatureingabe_text="enter";Serial.println ("Enter");lcd.printIn("Enter ");}; if (lcd_tastatureingabe==504) {lcd_tastatureingabe_text="links";Serial.println ("links");lcd.printIn("links ");}; if (lcd_tastatureingabe==143) {lcd_tastatureingabe_text="oben";Serial.println ("oben");lcd.printIn("oben ");}; if (lcd_tastatureingabe==327) {lcd_tastatureingabe_text="unten";Serial.println ("unten");lcd.printIn("unten ");}; if (lcd_tastatureingabe==0) {lcd_tastatureingabe_text="rechts";Serial.println ("rechts");lcd.printIn("rechts ");}; if (lcd_tastatureingabe==1023) {lcd_tastatureingabe_text="nix";Serial.println ("nix");lcd.printIn("nix ");}; Udp.sendPacket( lcd_tastatureingabe_text, remoteIp, remotePort); if(packetSize) { packetSize = packetSize - 8; // 8 byte header abziehen Serial.print("Received packet of size "); Serial.println(packetSize);

// read the packet into packetBufffer and get the senders IP addr and port number Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort); //Liest Daten vom RemotePC in packetBuffer Serial.println(packetBuffer); //Daten vom Remotepc ausgeben lcd.cursorTo(2, 0); //line=2, x=0 lcd.printIn(packetBuffer); //Daten vom Remotepc auf LCD ausgeben // Udp.sendPacket( "bereit", remoteIp, remotePort); Udp.sendPacket( ReplyBuffer, remoteIp, remotePort); } delay(10); }

Folgende Fehlermeldungen erscheinen:

H_UDPSendReceiveString:33: error: 'UDP_TX_PACKET_MAX_SIZE' was not declared in this scope H_UDPSendReceiveString.cpp: In function 'void setup()': H_UDPSendReceiveString:40: error: 'Udp' was not declared in this scope

As of Arduino 1.0, the Udp class in the Ethernet library has been renamed to EthernetClient.

H_UDPSendReceiveString.cpp: In function 'void loop()': H_UDPSendReceiveString:51: error: 'Udp' was not declared in this scope

As of Arduino 1.0, the Udp class in the Ethernet library has been renamed to EthernetClient.

H_UDPSendReceiveString:69: error: invalid conversion from 'const char*' to 'char' H_UDPSendReceiveString:70: error: invalid conversion from 'const char*' to 'char' H_UDPSendReceiveString:71: error: invalid conversion from 'const char*' to 'char' H_UDPSendReceiveString:72: error: invalid conversion from 'const char*' to 'char' H_UDPSendReceiveString:73: error: invalid conversion from 'const char*' to 'char' H_UDPSendReceiveString:74: error: invalid conversion from 'const char*' to 'char' H_UDPSendReceiveString:84: error: 'packetBuffer' was not declared in this scope H_UDPSendReceiveString:84: error: 'UDP_TX_PACKET_MAX_SIZE' was not declared in this scope

Gruss userport

Hallo,
ich habe deinen Code mal “zerpflückt”.
Hier die Fehler:

a)#include <Udp.h>
ersetzen durch

#include <EthernetUdp.h>

b)Udp.sendpacket(...)
ersetzen durch

//Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
    //Udp.write(<was immer auch für einen text>);
    //Udp.endPacket();

c)int packetSize = Udp.available();
ersetzen durch

int packetSize = Udp.parsePacket();

d)Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);  //Liest Daten vom RemotePC in packetBuffer
ersetzen durch

Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);

Damit konnte ich es auf der 1.0 kompilieren. Da ich aber weder deine LCD library noch ein LCD besitze kann ich den code leider nicht testen.

Grüße
Anaximander