/***************************** FUNCION ENVIA MENSAJES */
int FEnviaMensaje()
{
Serial.println("Enviando Message");
int i=0;
for (i = 0; i < gsMenEnviar.length() ; i++)
server.write(gsMenEnviar[i]);
Serial.println(gsMenEnviar);
return 0;
}
/***************************FUNCION TRATA MENSAJES */
int TrataMensajeRecibidoTCP()
{
Serial.println("entro a funcion de trata de mensajes");
int liRet = 0;
int i=0;
int liValor = 0;
String lsAux = "";
int liAddress = 0;
gsMenEnviar = "#ERROR MENSAJE@";
Serial.println("FEnviaMensaje");
if (gsMenRecibido[0] == '1' && gsMenRecibido[1] == '9')
{
if (gsMenRecibido[2] == 'S')
{
if (gsMenRecibido[3] == 'F')
{
if (gsMenRecibido[4] == 'R')
gsMenEnviar = "#RESETDEMANDAFIJAOK@";
else // Establece demandas fijas
{
lsAux = String(gsMenRecibido[4]) + String(gsMenRecibido[5]) + String(gsMenRecibido[6]) + String(gsMenRecibido[7]);
giG1Dfijo = lsAux.toInt();
lsAux = String(gsMenRecibido[8]) + String(gsMenRecibido[9]) + String(gsMenRecibido[10]) + String(gsMenRecibido[11]);
giG2Dfijo = lsAux.toInt();
giIndDemandaFija = 1 ;
gsMenEnviar = "#DEMANDASFIJASOK@";
}
}
}
if (gsMenRecibido[2] == 'T')
{
if (gsMenRecibido[3] == 'S')
{
lsAux = String(gsMenRecibido[4]) + String(gsMenRecibido[5]);
day = lsAux.toInt();
lsAux = String(gsMenRecibido[7]) + String(gsMenRecibido[8]);
month = lsAux.toInt();
lsAux = String(gsMenRecibido[10]) + String(gsMenRecibido[11]) + String(gsMenRecibido[12]) + String(gsMenRecibido[13]);
year = lsAux.toInt();
lsAux = String(gsMenRecibido[15]) + String(gsMenRecibido[16]);
hour = lsAux.toInt();
lsAux = String(gsMenRecibido[18]) + String(gsMenRecibido[19]);
min = lsAux.toInt();
lsAux = String(gsMenRecibido[21]) + String(gsMenRecibido[22]);
second = lsAux.toInt();
RTC.adjust(DateTime(year, month, day, hour, min, second));
}
Serial.println("-" + gsMenEnviar + "-");
gsMenEnviar = String("#T" + String(now.month()) + "-" + String((int)now.day()) + " H:" + String((int)now.hour()) + ":" + String((int)now.minute()) + ":" + String((int)now.second())+ "@");
Serial.print("-" + gsMenEnviar + "-");
Serial.println();
}
if (gsMenRecibido[2] == 'D')
{
if (gsMenRecibido[3] == 'D')
gsMenEnviar = "#DD" + String(giG1D) + "," + String(giG2D)+ "@";
else
{
gsMenEnviar = "#DR";
for(i=0 ; i < 5; i++)
gsMenEnviar += String(giValActualG1[i]) + "," + String(giValActualG2[i]) + ",";
gsMenEnviar += "@";
}
}
if (gsMenRecibido[2] == 'C')
{
if (gsMenRecibido[3] == 'P')
{
giIndCalibrando = 1;
if (giIndCalibrando == 1)
{
for (p=0; p<5; p++)
{
digitalWrite(giPinSeguidorG1[p], LOW);
digitalWrite(giPinSeguidorG2[p], LOW);
}
digitalWrite(PinAccionG1, LOW);
digitalWrite(PinSentidoG1, LOW);
digitalWrite(PinSentidoG2, LOW);
}
gsMenEnviar = "#CALIBRANDO@";
}
else if (gsMenRecibido[3] == 'A')
{
gsMenEnviar = "#CA";
for (i=0; i < 5; i++)
{
giValActualG100[i] = TransAnGra(giEAnalogicasG1[i], 1, 0, i, 1);
giValActualG200[i] = TransAnGra(giEAnalogicasG2[i], 1, 0, i, 2);
gsMenEnviar += String(giValActualG100[i]) + "," + String(giValActualG200[i]) + ",";
}
gsMenEnviar += "@";
}
else if (gsMenRecibido[3] == 'B')
{
lsAux = String(gsMenRecibido[4]) + String(gsMenRecibido[5]);
liValor = lsAux.toInt();
Serial.println(String(liValor));
gsMenEnviar = "#CB";
for (i=0; i < 5; i++)
{
giValActualG1XX[i] = TransAnGra(giEAnalogicasG1[i], 1, 0, i, 1);
gdPendienteG1[i] = (double)liValor / (double)(giValActualG1XX[i] - giValActualG100[i]) ;
giOffSetG1[i] = - (gdPendienteG1[i] * giValActualG100[i]);
gsMenEnviar += String(giValActualG1XX[i]) + "," + String((int)gdPendienteG1[i]) + "," + String(giOffSetG1[i]) + ",";
}
gsMenEnviar += "@";
}
else if (gsMenRecibido[3] == 'C')
{
lsAux = String(gsMenRecibido[4]) + String(gsMenRecibido[5]);
liValor = lsAux.toInt();
gsMenEnviar = "#CC";
for (i=0; i < 5; i++)
{
giValActualG2XX[i] = TransAnGra(giEAnalogicasG2[i], 1, 0, i, 2);
gdPendienteG2[i] = (double)liValor / (double)(giValActualG2XX[i] - giValActualG200[i]) ;
giOffSetG2[i] = - (gdPendienteG2[i] * giValActualG200[i]);
gsMenEnviar += String(giValActualG2XX[i]) + "," + String((int)gdPendienteG2[i]) + "," + String(giOffSetG2[i]) + ",";
}
gsMenEnviar += "@";
}
else if (gsMenRecibido[3] == 'I')
{
gsMenEnviar = "#CI";
for (i=0; i < 5; i++)
{
giValActualG1[i] = TransAnGra(giEAnalogicasG1[i], gdPendienteG1[i], giOffSetG1[i], i, 1);
gsMenEnviar += String(giValActualG1[i]) + "=(";
liValor = TransAnGra(giEAnalogicasG1[i], 1, 0, i, 1);
gsMenEnviar += String(liValor) + "*" + String((int)gdPendienteG1[i]) + ")+" + String(giOffSetG1[i]) + ";";
giValActualG2[i] = TransAnGra(giEAnalogicasG2[i], gdPendienteG2[i], giOffSetG2[i], i, 2);
gsMenEnviar += String(giValActualG2[i]) + "=(";
liValor = TransAnGra(giEAnalogicasG2[i], 1, 0, i, 2);
gsMenEnviar += String(liValor) + "*" + String((int)gdPendienteG2[i]) + ")+" + String(giOffSetG2[i]) + ";";
}
gsMenEnviar += "@";
}
else if (gsMenRecibido[3] == 'S')
{
EEPROM.writeInt(giAddress, 1);
giIndCalibrado = 1;
for (i=0; i<5 ; i++)
{
EEPROM.writeFloat(giAddress+1+(i*12), gdPendienteG1[i]);
EEPROM.writeFloat(giAddress+5+(i*12), gdPendienteG2[i]);
EEPROM.writeInt(giAddress+9+(i*12), giOffSetG1[i]);
EEPROM.writeInt(giAddress+11+(i*12), giOffSetG2[i]);
}
gsMenEnviar = "#EEPROMOK@";
giIndCalibrando = 0;
}
}
}
else
{
liRet = -1;
}
FEnviaMensaje();
return liRet;
}
/************************ FUNCION ATIENDE PETICIONES*/
int FAtiendePeticionesTCP()
{
int liRet = 0;
char c ;
gsMenRecibido="";
EthernetClient client = server.available();
if (client)
{
if (client.connected())
{
Serial.println("cliente conectado");
while ((client.available()) )
{
c = client.read();
if (c == '#')
{
gsMenRecibido = "";
Serial.println("mensaje: #");
}
else if ( c == '@')
{
liRet = TrataMensajeRecibidoTCP();
Serial.println("mensaje: " + gsMenRecibido);
client.flush();
client.stop();
}
else
{
gsMenRecibido+=c;//store the recieved chracters in a string
}
}
}
}
return liRet;
}