samedi 24 juin 2017

udp

Arduino leonardo  + ethernet shield = Client udp

adresse = 192.168.1.47:61556

code:

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

byte mac[] = { 0x90, 0xA2, 0xDA, 0x10, 0xA9, 0x71 };
//static IPAddress ip(192, 168, 1, 47);
static IPAddress serveur(192,168,1,79);
unsigned int localPort = 61556;       
char packetBuffer [UDP_TX_PACKET_MAX_SIZE];
byte pinDigitalIn [] = {2,3,4,5,6,7,8,9};
byte pinDigitalOut [] = {10,11,13};
byte pinAnalogIn [] = {A0,A1,A2,A4};
EthernetUDP Udp;

int fEnvoi = 20;
long TEch = 1000000/fEnvoi; 

long to;


void setup()
{
  Serial.begin(9600);
  while (!Serial) {}

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    for (;;)
      ;
  }
  Udp.begin(localPort);
  for (int i = 0 ; i < sizeof(pinDigitalIn) ; i++){
    pinMode(pinDigitalIn[i],INPUT);
  }
  for (int i = 0 ; i < sizeof(pinDigitalOut) ; i++){
    pinMode(pinDigitalOut[i],OUTPUT);
  }
}

void loop(){ 
  long maintenant = micros();
  if ((maintenant - to)>TEch){
    to = maintenant;
    sendPacket();
  }

  if ( Udp.parsePacket() ) {
    Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE); 
    int valeurRecue = (int) strtol(packetBuffer,NULL,16);
    Serial.print("Recu : ");
    Serial.println(valeurRecue);
    for (int i = 0 ; i < sizeof(pinDigitalOut) ; i++){
      digitalWrite(pinDigitalOut[i],bitRead(valeurRecue,i));
    }
  }
}

unsigned long sendPacket()
{
  String envoi = encodage();
  int taille = envoi.length();
  char buff [taille];
  envoi.toCharArray(buff,taille);
  
  Udp.beginPacket(serveur, 61557); 
  Udp.write(buff);
  Udp.endPacket();
}

String encodage(){
  String envoi = "";
  
  int digital = 0;
  for (int i = 0 ; i < sizeof(pinDigitalIn) ; i++){
    if(digitalRead(pinDigitalIn[i])){
      bitSet(digital,i);
    }
  }
  envoi += String(digital,HEX);
  envoi += ";";
  
  for (int i = 0 ; i < sizeof(pinAnalogIn) ; i++){
    int lu = analogRead(pinAnalogIn[i]);
    envoi += String(lu,HEX);
    envoi += ";";
  }
  return envoi;
} 
 
Labview = serveur:
Adresse = 192.168.1.79:61557 
RecepteurUdp.vi 
 

Aucun commentaire:

Enregistrer un commentaire