Arduino Forum

International => Français => Topic started by: vincent84 on Oct 24, 2015, 11:12 pm

Title: Aide sur com ethernet
Post by: vincent84 on Oct 24, 2015, 11:12 pm
Bonjour,

J'aurai besoin de votre aide sur la communication ethernet.
J'ai une carte Arduino Due avec un shield ENC28J60. CS sur D10.

J'utilise la librairie IUPEthernet.
Je ne connait pas grand chose en com ethernet. Mon but est de communiquer entre 2 cartes arduino et pouvoir lire et envoyer des données par PC ou tablette.

J'ai essayé le programme UDPClient. Je regarde les trames réseaux avec WIreshark et voir le résultat dans l'image. Je vois la carte arduino, mais le message envoyé semble vide.

Mon code :
Code: [Select]

/*
 * UIPEthernet UdpClient example.
 *
 * UIPEthernet is a TCP/IP stack that can be used with a enc28j60 based
 * Ethernet-shield.
 *
 * UIPEthernet uses the fine uIP stack by Adam Dunkels <adam@sics.se>
 *
 *      -----------------
 *
 * This UdpClient example tries to send a packet via udp to 192.168.0.1
 * on port 5000 every 5 seconds. After successfully sending the packet it
 * waits for up to 5 seconds for a response on the local port that has been
 * implicitly opened when sending the packet.
 *
 * Copyright (C) 2013 by Norbert Truchsess (norbert.truchsess@t-online.de)
 */

#include <SPI.h>
#include <UIPEthernet.h>

EthernetUDP udp;
unsigned long next;

void setup() {

  Serial.begin(9600);

  uint8_t mac[6] = {0x14,0x05,0x14,0x05,0x14,0x05};

  Ethernet.begin(mac,IPAddress(192,168,1,26));

  next = millis()+5000;
}

void loop() {

  int success;
  int len = 0;

  if (((signed long)(millis()-next))>0)
    {
      do
        {
          success = udp.beginPacket(IPAddress(192,168,1,26),5000);
          Serial.print("beginPacket: ");
          Serial.println(success ? "success" : "failed");
          //beginPacket fails if remote ethaddr is unknown. In this case an
          //arp-request is send out first and beginPacket succeeds as soon
          //the arp-response is received.
        }
      while (!success && ((signed long)(millis()-next))<0);
      if (!success )
        goto stop;

      success = udp.write("HELLO world by my arduino card");

      Serial.print("bytes written: ");
      Serial.println(success);

      success = udp.endPacket();

      Serial.print("endPacket: ");
      Serial.println(success ? "success" : "failed");

      do
        {
          //check for new udp-packet:
          success = udp.parsePacket();
        }
      while (!success && ((signed long)(millis()-next))<0);
      if (!success )
        goto stop;

      Serial.print("received: '");
      do
        {
          int c = udp.read();
          Serial.write(c);
          len++;
        }
      while ((success = udp.available())>0);
      Serial.print("', ");
      Serial.print(len);
      Serial.println(" bytes");

      //finish reading this packet:
      udp.flush();

      stop:
      udp.stop();
      next = millis()+5000;
    }
}



Merci pour votre aide !
Title: Re: Aide sur com ethernet
Post by: supercc on Oct 25, 2015, 05:58 pm
Salut,

pas d'expérience avec cette bibliothèque mais j'epense que ton adresse IP destination doit être celle de ton PC dans l'appel à udp.beginPacket (tu as mis celle de ta carte Arduino : 192.168.1.26).