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

Bonjour,

Je viens de recevoir une arduino mega 2560 ethernet de freetronics. Je fais mes premiers tests avec. Pour le moment je teste la communication en udp. J'ai suivi le tuto qu'il y a sur le net, et ça fonctionne.

Je voudrai changer un peu l'exemple par défaut pour renvoyer une réponse dynamique au lieu d'une chaine par défaut. Voici on code qui fonctionne:
Code:
#include <SPI.h>         // needed for Arduino versions later than 0018
#include <Ethernet.h>
#include <EthernetUdp.h>         // UDP library from: bjoern@cs.stanford.edu 12/30/2008


// 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 };
IPAddress ip(192, 168, 1, 177);

unsigned int localPort = 8888;      // local port to listen on

// buffers for receiving and sending data
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char ReplyBuffer[] = "acknowledged";       // a string to send back

// An EthernetUDP instance to let us send and receive packets over UDP
EthernetUDP Udp;

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

  Serial.begin(9600);
  Serial.print("Server listening on : 192.168.1.177");
}

void loop() {
  char remIP[] = "test";
  // if there's data available, read a packet
  int packetSize = Udp.parsePacket();
  if(packetSize)
  {
    Serial.print("Received packet of size ");
    Serial.println(packetSize);
    Serial.print("From ");
    Serial.print(Udp.remoteIP());
    Serial.print(", port ");
    Serial.println(Udp.remotePort());

    // read the packet into packetBufffer
    Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
    Serial.println("Contents:");
    Serial.println(packetBuffer);

    // send a reply, to the IP address and port that sent us the packet we received
    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
   
    Udp.write(ReplyBuffer);

    Udp.endPacket();
  }
  delay(10);
}

Je voudrai renvoyer une chaine du type:
"<Adresse IP>: ok"

J'ai essayé de faire:
Code:
Udp.write(Udp.remoteIP() + " :OK");

Mais ça ne fonctionne pas. J'ai également essayé:
Code:
char remoteIP = "";
IPAddress remote = Udp.remoteIP();
    for (int i =0; i < 4; i++)
    {
      Serial.print(remote[i], DEC);
      remoteIP[] = remote[i], DEC;
      if (i < 3)
      {
        Serial.print(".");
        remoteIP[] = ".";
      }
    }

Mais idem, ça ne fonctionne pas. J'apprends le C au fur et à mesure de mes projets, alors je galère un peu. Qu'elle est la bonne façon d'arriver à mes fins ?

J'espère que vous pourrez m'aider.
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Essaye :
Code:
Udp.write(Udp.remoteIP());
Udp.write(" :OK");

(pas sur que ça marche, ya eu tellement de changement dans l'API udp que je sait plus ce qu'accepte write() en argument ...)
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

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

hello. Ca ne fonctionne pas non plus. Ce n'est pas grave, je vais repenser mon code pour limiter
les échanges, alors je ne devrai plus avoir besoin de transférer l'ip qui se connecte.
Logged

France
Offline Offline
Full Member
***
Karma: 0
Posts: 154
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Et ça?
Code:
for (i=0;i<4;i++)
    {
      Udp.write(Udp.remoteIP[i]);
    }
Logged

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

euh ... j'essaie ca demain. je suis dans mon lit avec ma tablette lol
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sinon essaye :
Code:
Udp.write(Udp.remoteIP(), 4);
Udp.write(" :OK");
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: [1]   Go Up
Jump to: