Code:
#include <SoftwareSerial.h>
#include <SPI.h>
#include <SD.h>
#include <Ethernet.h>
//Configuración Ethernet
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Ethernet Shield MAC
IPAddress ip ( 192,168,0,5 ); // Ethernet Shield IP
IPAddress server (192,168,0,10); // Server IP
EthernetClient client;
float value;
// String para almacenar UID
String dataString;
// Pin de Sálida
int led=13;
void setup()
{
Serial.begin(9600);
Serial1.begin(9600);
Serial1.write(0x02);
pinMode(53, OUTPUT);
SD.begin(4);
Ethernet.begin(mac,ip);
}
// Bucle Principal
void loop()
{
Get_RFID();
}
//Lectura de Datos RFID
void Get_RFID(){
if (Serial1.available()){
Serial.println();
Serial.print("\n\rCARD UID: ");
if (Serial1.available()){
dataString = "";
for(int i=0;i<4;i++)
{
dataString += String(Serial1.read(), HEX);
}
}
Serial.print(dataString);
if (client.connect(server, 80)) {
Serial.println("ON");
Serial.println("GET http://192.168.0.10/datalog.txt HTTP/1.0");
Serial.println();
if (client.available()) {
Serial.println("Esto hay en la DB");
char c = client.read();
Serial.print(c);
}
else{
//got what we need here! We can disconnect now
client.stop();
Serial.println("disconnecting.");
}
}
else{
for (int j=0;j<3;j++){
String Lin = ReadFile(j,"datalog.txt");
//Mostramos el resultado
Serial.println(Lin);
if (dataString.compareTo(Lin)==0){Serial.print("Iguales");break;}
}
}
}
}
// Función para Leer Datos de la SD
String ReadFile(int Linea,char Ruta[]){
int Lin=0;
String Resultado;
File myFile;
byte Bin;
myFile = SD.open(Ruta);;
if (myFile) {
while (myFile.available()) {
Bin=myFile.read();
if (Bin==13){Lin++;myFile.read();}
else
{
if (Lin==Linea){Resultado=Resultado+(char(Bin));}
if (Lin>Linea){myFile.close();return Resultado;}
}
}
myFile.close();return Resultado;
}
}
#include <SPI.h>
#include <SD.h>
#include <Ethernet.h>
//Configuración Ethernet
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Ethernet Shield MAC
IPAddress ip ( 192,168,0,5 ); // Ethernet Shield IP
IPAddress server (192,168,0,10); // Server IP
EthernetClient client;
float value;
// String para almacenar UID
String dataString;
// Pin de Sálida
int led=13;
void setup()
{
Serial.begin(9600);
Serial1.begin(9600);
Serial1.write(0x02);
pinMode(53, OUTPUT);
SD.begin(4);
Ethernet.begin(mac,ip);
}
// Bucle Principal
void loop()
{
Get_RFID();
}
//Lectura de Datos RFID
void Get_RFID(){
if (Serial1.available()){
Serial.println();
Serial.print("\n\rCARD UID: ");
if (Serial1.available()){
dataString = "";
for(int i=0;i<4;i++)
{
dataString += String(Serial1.read(), HEX);
}
}
Serial.print(dataString);
if (client.connect(server, 80)) {
Serial.println("ON");
Serial.println("GET http://192.168.0.10/datalog.txt HTTP/1.0");
Serial.println();
if (client.available()) {
Serial.println("Esto hay en la DB");
char c = client.read();
Serial.print(c);
}
else{
//got what we need here! We can disconnect now
client.stop();
Serial.println("disconnecting.");
}
}
else{
for (int j=0;j<3;j++){
String Lin = ReadFile(j,"datalog.txt");
//Mostramos el resultado
Serial.println(Lin);
if (dataString.compareTo(Lin)==0){Serial.print("Iguales");break;}
}
}
}
}
// Función para Leer Datos de la SD
String ReadFile(int Linea,char Ruta[]){
int Lin=0;
String Resultado;
File myFile;
byte Bin;
myFile = SD.open(Ruta);;
if (myFile) {
while (myFile.available()) {
Bin=myFile.read();
if (Bin==13){Lin++;myFile.read();}
else
{
if (Lin==Linea){Resultado=Resultado+(char(Bin));}
if (Lin>Linea){myFile.close();return Resultado;}
}
}
myFile.close();return Resultado;
}
}
La parte offline funciona correctamente, pero al hacer las pruebas con el servidor no puedo obtener los datos del archivo alojado en el servidor, al estar conectado al servidor el programa entra al if client.connect() pero nunca entra al if de client.avalaible(). Alguna sugerencia?