1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| #define CMDBUFFER_SIZE 15 // Je definie la taille du buffer
#include <Controllino.h> // librairie pour le controllino
#include <SPI.h> // librairie pour la liaison Ethernet avec Ethernet.h
#include <Ethernet.h>
byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0xFC, 0x17}; // Adresse MAC du controllino
IPAddress ip(192,168,23,154); // adresse IP du Controllino
IPAddress server(192,168,23,153); // Adresse IP du serveur Lecteur
EthernetClient client; // Je suis en mode Client
void setup() // fonction Setup
{
pinMode (CONTROLLINO_D0, OUTPUT); // Mon port D0 en sortie
pinMode (CONTROLLINO_D1, OUTPUT); // Mon port D1 en sortie
pinMode (CONTROLLINO_D2, OUTPUT); // D2 en sortie
Ethernet.begin(mac, ip); // Ethernet demarre avec les adresses mac et Ip donné
Serial.begin(57600); // vitesse de lecture sur le moniteur serie
while (!Serial){;}
delay(1000);
Serial.println("connexion..."); // Un afficheur connexion
if (client.connect(server,2111)) // si le client donc le controllino ce connecte sur le serveur sur le port 2111
{
Serial.println("connecte"); // alors j'affiche connecte
}
else // sinon
{
Serial.println("connexion echoue"); // j'affiche que la connexion est echoue
}
}
void loop() // boucle infini
{
static char cmdBuffer[CMDBUFFER_SIZE] = ""; // le caractère buffer est à 0
char c; // variable c en tant que caractère
while(client.available()) // pour un client est présent donc si on reçois un octet
{
c = processCharInput(cmdBuffer, client.read()); // c prend la valeur de ce que le seveur envoi
Serial.print(c); // on fait afficher c
if (c == '\n') // si c arrive au dernier octet
{
Serial.println(); // on fait un saut de ligne
if (strcmp("6047078288", cmdBuffer) == 0) // On compare deux chaines de caractères , si elles sont égaux
{
digitalWrite(CONTROLLINO_D0,HIGH); // on active la sortie D0
digitalWrite(CONTROLLINO_D1,LOW); // on desactive la sortie D1
digitalWrite(CONTROLLINO_D2,LOW); // on desactive la sortie D2
}
else if (strcmp("NOREAD", cmdBuffer) == 0) // Si "NOREAD" est egale à la valeur du buffer alors
{
digitalWrite(CONTROLLINO_D1,LOW); // on desactive la sortie D1
digitalWrite(CONTROLLINO_D0,LOW); // on desactive la sortie D0
digitalWrite(CONTROLLINO_D2,HIGH); // on active la sortie D2
}
else // sinon
{
digitalWrite(CONTROLLINO_D0,LOW); // on desactive la sortie D0
digitalWrite(CONTROLLINO_D1,HIGH); // on active la sortie D1
digitalWrite(CONTROLLINO_D2,LOW); // on desactive la sortie D2
}
cmdBuffer[0] = 0; // on remet le buffer à 0
}
}
//delay(1); // on attend 1 millisecondes
}
char processCharInput(char* cmdBuffer, const char c)
{
if (c >= 32 && c <= 126) // J'ignore les charactères spéciaux
{
if (strlen(cmdBuffer) < CMDBUFFER_SIZE) // si la taille de mon buffer est inferieur à la taille de CMDBUFFER
{
strncat(cmdBuffer, &c, 1); //Ajoute au buffer
}
else //sinon
{
return '\n'; // fin de ligne
}
}
else if ((c == 8 || c == 127) && cmdBuffer[0] != 0)
{
cmdBuffer[strlen(cmdBuffer)-1] = 0;
}
return c;
} |
Partager