Bonjour,
Après plusieurs tests je n'arrive pas à envoyer ma donnée rfid vers ma base de données..
Le test de la connexion à la base de données fonctionne, le test de la connexion au serveur fonctionne aussi.
#include <Dhcp.h>
#include <Dns.h>
#include <Ethernet2.h>
#include <EthernetClient.h>
#include <EthernetServer.h>
#include <EthernetUdp2.h>
#include <Twitter.h>
#include <util.h>
#include <SPI.h>
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
#define enablePin 33
#define rxPin 17
LiquidCrystal monEcran (8, 9, 4, 5, 6, 7);
//On donne l'adresse MAC au shield Ethernet (ne doit pas être identique à une autre adresse MAC présente sur votre réseau)
byte MAC[] = { 0x10, 0x11, 0x12, 0x13, 0x14, 0x15 }; // Adresse MAC du shield Ethernet
//On affecte l'adresse IP du Shield Ethernet
IPAddress IP(192,168,1,101); // Adresse IP donné au Shield Ethernet
IPAddress server(192,168,1,100);
IPAddress gateway(192,168,1,254);
IPAddress serverDNS(8,8,8,8);
IPAddress masque(255, 255, 255, 0 );
//char server[]={192,168,1,100};
EthernetClient client;
void setup() {
Ethernet.begin(MAC, IP, serverDNS, gateway, masque);
/*
monEcran.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
monEcran.clear(); // on efface l'écran
monEcran.print("Bienvenue"); // on écrit Bonjour
*/
Serial2.begin(2400); // RFID reader SOUT pin connected to Serial RX pin at 2400bps
pinMode(enablePin,OUTPUT); // Set digital pin 3 as OUTPUT to connect it to the RFID /ENABLE pin
digitalWrite(enablePin, LOW); // Activate the RFID reader
// setup Arduino Serial Monitor
Serial.begin(9600);
Serial.println("\n\nParallax RFID Card Reader");
}
void loop() {
int val = 0;
char code[10];
int bytesread = 0;
int i = 0;
int myNum[10];
unsigned long int multArray[] = {1,1,268435456,16777216,1048576,
65536,4096,256,16,1};
unsigned long int numBadge = 0;
if(Serial2.available() > 0) { // if data available from reader
if((val = Serial2.read()) == 10) { // check for header
bytesread = 0;
while(bytesread<10) { // read 10 digit code
if( Serial2.available() > 0) {
val = Serial2.read();
if((val == 10)||(val == 13)) { // if header or stop bytes before the 10 digit reading
break; // stop reading
}
code[bytesread] = val; // add the digit
bytesread++; // ready to read next digit
}
}
if(bytesread == 10) { // if 10 digit read is complete
code[0] = 48; //Zero out the first two elements of the code array
code[1] = 48;
//Cycle through the code array and create int elements in myNum
for(i=0;i<10;i++)
{
if(code[i] == '0') //I am not a programmer, but this is the only way I could
myNum[i] = 0;
else if(code[i] == '1') //find to convert elements of a char array to ints...
myNum[i] = 1;
else if(code[i] == '2')
myNum[i] = 2;
else if(code[i] == '3')
myNum[i] = 3;
else if(code[i] == '4')
myNum[i] = 4;
else if(code[i] == '5')
myNum[i] = 5;
else if(code[i] == '6')
myNum[i] = 6;
else if(code[i] == '7')
myNum[i] = 7;
else if(code[i] == '8')
myNum[i] = 8;
else if(code[i] == '9')
myNum[i] = 9;
else if(code[i] == 'A')
myNum[i] = 10;
else if(code[i] == 'B')
myNum[i] = 11;
else if(code[i] == 'C')
myNum[i] = 12;
else if(code[i] == 'D')
myNum[i] = 13;
else if(code[i] == 'E')
myNum[i] = 14;
else if(code[i] == 'F')
myNum[i] = 15;
else
myNum[i] = 9999; //Oops! an error
}
//With trueTag initialized to 0, create the true tag number by summing trueTag with each element of the
//integer myNum array multiplied by the corresponding element of the multArray.
for(i=0;i<10;i++)
{
numBadge = numBadge + (myNum[i]*multArray[i]);
}
Serial.print("Numero Badge = "); //print real TAG number
Serial.println(numBadge);
/*
monEcran.clear();
monEcran.print("Numero badge :");
monEcran.setCursor(0,1); //on passe à la ligne suivante
monEcran.print(numBadge);
*/
}
}
if (client.connect(server, 80))
{
Serial.println("Connexion au serveur OK");
// HTTP request:
client.print("GET /test/test2?rfid=numBadge HTTP/1.1"); // page php qui va traiter la réception
/* client.print("numBadge=");
client.print(numBadge);
Serial.print("numBadge=");
Serial.println(numBadge);*/
client.println("Host: 192.168.1.100");
client.println( "Content-Type: application/x-www-form-urlencoded" );
client.println( "Connection: close" );
client.println(); // fin requête
client.println();
client.stop();
}
delay(5000);
bytesread = 0;
numBadge = 0; //Zero out trueTag for next iteration of the loop
digitalWrite(2, HIGH); // deactivate the RFID reader for a moment so it will not flood
delay(1500); // wait for a bit
digitalWrite(2, LOW); // Activate the RFID reader
}
}
// extra stuff
// digitalWrite(2, HIGH); // deactivate RFID reader
Et celui en php :
<html>
<body>
</body>
<?php
//Connexion à la base de données
$host="localhost";
$user="root";
$passwd="";
$BD="five1";
$connexion=mysqli_connect($host,$user,$passwd)or die ("Connexion au serveur impossible.");
$db_selected=mysqli_select_db($connexion, "five1") or die ("Sélection de la base impossible.");
$rfid = isset($_GET['rfid']);
$resultat = mysqli_query($connexion, "INSERT INTO historiqueclient (heureActuelle, rfid) VALUES (CURRENT_TIMESTAMP, $rfid)");
mysqli_close($connexion);
?>
</html>
Merci d'avance