Ubuntu + Arduino Ethernet

Hallo,

ich wollte über mein Board etwas an einen Webserver schicken, wenn ich den Code so Aufbau bekommen ich den Fehler den ich unten angehängt habe. Ich verwende die Ethernet 2 Library da ich gelesen habe das es mit der Originalen Library unter Linux Probleme gibt. Muss ich an der Library noch was ändern?

Mein OS: Ubuntu 12.04 installiert hab ich die Arduino IDE über Synaptic

#include <SPI.h>
#include <Ethernet2.h>

#define FLEX_TOO_HI 400
#define FLEX_TOO_LOW 350
#define ONBOARD_LED 13
#define FLEX_SENSOR 0

int bend_value = 0;
byte bend_state = 0;

byte MAC[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEF };
byte IPADDR[] = { 192, 168, 178, 230 };
byte GATEWAY[] = {192, 168, 178, 1 };
byte SUBNET[] = {255, 255, 255, 0 };
byte PHPSVR[] = {85, 195, 104, 22 };

Client client(PHPSVR, 80);
//EthernetServer server(80);
//EthernetClient client = server.available();

void setup() {
  Serial.begin(9600);
  pinMode(ONBOARD_LED, OUTPUT);
  Ethernet.begin(MAC, IPADDR, GATEWAY, SUBNET);
  delay(1000);
}

void ContactWebServer( int bend_value, int bend_state) {
  
  Serial.println("Connecting to the web server to send alert...");
  if (client.connect()) {
    Serial.println("Connected to PHP Server");
    client.print("GET/wateralert.php?alert=");
    client.print(bend_state);
    client.print("&flex=");
    client.print(bend_value);
    client.println("HTTP/1.0");
    client.println();
    client.stop();
  } else {
    Serial.println("Failed to connect to the web server");
  }
}

void SendWaterAlert(int bend_value, int bend_state) {
  digitalWrite(ONBOARD_LED, bend_state ? HIGH : LOW);
  if (bend_state)
  Serial.print("Water Level Threshold Exceeded, bend_value=");
  else 
  Serial.print("Water Level Returned to Normal bend_value=");
  Serial.println(bend_value);
  ContactWebServer(bend_value, bend_state);
}

void loop() {
  delay(1000);
  bend_value = analogRead(FLEX_SENSOR);
  Serial.print("bend_value=");
  Serial.println(bend_value);
  
  switch(bend_state) {
    case 0:
      if (bend_value >= FLEX_TOO_HI || bend_value <= FLEX_TOO_LOW) {
        bend_state = 1;
        SendWaterAlert(bend_value, bend_state);
      }
      break;
    case 1:
      if(bend_value < FLEX_TOO_HI && bend_value > FLEX_TOO_LOW) {
        bend_state = 0;
        SendWaterAlert(bend_value, bend_state);
      }
      break;
  }
}
In file included from /usr/share/arduino/libraries/Ethernet2/Ethernet2.h:5:0,
                 from WaterLevel_notifer.cpp:2:
/usr/share/arduino/libraries/Ethernet2/Client.h:16:16: error: conflicting return type specified for ‘virtual void Client::write(uint8_t)’
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:48:20: error:   overriding ‘virtual size_t Print::write(uint8_t)’
In file included from /usr/share/arduino/libraries/Ethernet2/Ethernet2.h:6:0,
                 from WaterLevel_notifer.cpp:2:
/usr/share/arduino/libraries/Ethernet2/Server.h:20:16: error: conflicting return type specified for ‘virtual void Server::write(uint8_t)’
/usr/share/arduino/hardware/arduino/cores/arduino/Print.h:48:20: error:   overriding ‘virtual size_t Print::write(uint8_t)’

Danke

MFG

Warum sollte es denn mit Linux und der originale Ethernetlib Probleme geben? Hast Du dafür eine Referenz? TCP ist TCP, egal mit welcher Lib es verwendet wird. Am Ende ist eh der WIZnet 5100 Chip dafür verantwortlich. Ich verwende die "normale" Ethernetlib in verschiedenen Projekten ohne Probleme, unabhängig wer am anderen Ende lauscht.

Zu Deinem Fehler. Seit der Version 1.0 der IDE haben sich einige Details vorhandener Libs geändert. Unter anderem in der Klasse "Print". Die Memberfunktion / Methode "write" war früher vom Typ void, ist jetzt aber vom Typ "size_t". Das müßtest Du in Deiner Lib korrigieren.

Also in den beiden Files "Ethernet2/Client.h" und "Ethernet2/Server.h" jeweils die Zeile mit dem "virtual void write(uint8_t)" suchen und ein "virtual size_t write(uint8_t)" draus machen.