Buenas. Estoy haciendo un programa con el Ethernet Shiel de manera que todo lo que se vaya escribiendo en una caja de texto en una web se vea reflejado en una
- justo debajo de la caja de texto.
El problema es el siguiente. He utilizado un char mensajeEscrito[10][32] de manera que pueda almacenar 10 mensajes con una extensión de 32 caracteres. Cuando lo quiero poner dentro del código html quiero convertirlo a String con una función (convertChar), pero no sé si hay alguna forma de pasarle como parámetro una fila entera del array, del estilo mensajeEscrito[0][], pasando de una vez los 32 caracteres de la fila 0.
Este es el código.
#include <SPI.h>
#include <Ethernet.h>
#include <LiquidCrystal.h>
#define CHARACTERS 32
byte mac[] = {0x90, 0xA2, 0xDA, 0x0E, 0x09, 0x2D}; //MAC
byte ip[] = {192, 168, 1, 111}; //IP
EthernetServer servidor(80);
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
String readString, mensaje;
char mensajeEscrito[10][32];
int indStart=0, indStop=0;
void setup() {
Ethernet.begin(mac, ip);
servidor.begin();
lcd.begin(16,2);
lcd.clear();
Serial.begin(9600);
escribirLCD("ESPERANDO ...");
}
void loop() {
comprobarWeb();
}
void comprobarWeb()
{
EthernetClient cliente = servidor.available();
if (cliente)
{
while (cliente.connected())
{
if (cliente.available())
{
char c = cliente.read();
if (readString.length() < 100)
{
readString += c;
}
if (c == '\n')
{
Serial.println(readString);
cliente.println("HTTP/1.1 200 OK");
cliente.println("Content-Type: text/html");
cliente.println();
cliente.println("<HTML>");
cliente.println("<HEAD>");
cliente.println("<TITLE>ONLINE LCD</TITLE>");
cliente.println("</HEAD>");
cliente.println("<BODY>");
cliente.println("<H1>INTRODUZCA EL MENSAJE</H1>");
cliente.println("<FORM ACTION='/' method=get>");
cliente.println("<INPUT TYPE=TEXT NAME='MENSAJE' VALUE='' SIZE='25' MAXLENGTH='32'>
");
cliente.println("<INPUT TYPE=SUBMIT NAME='SUBMIT' VALUE='ENVIAR'>");
cliente.println("</FORM>
");
cliente.println("<UL>1. ");
//cliente.println(mensajeEscrito[0][0]);
cliente.println("</UL>");
cliente.println("</BODY>");
cliente.println("</HTML>");
delay(100);
cliente.stop();
Serial.println(readString);
indStart = readString.indexOf("MENSAJE=");
indStart += 8;
indStop = readString.indexOf("&");
Serial.println(readString.substring(indStart, indStop));
mensaje = readString.substring(indStart, indStop);
mensaje.replace("+", " ");
Serial.println(mensaje);
escribirLCD(mensaje);
readString = "";
mensaje = "";
}
}
}
}
}
void escribirLCD(String mensajeLCD)
{
if (mensajeLCD.indexOf("GET ") != 0 && mensajeLCD.indexOf("vicon.ico") != 0 && mensajeLCD.indexOf("TTP/") != 0)
{
lcd.clear();
if(mensajeLCD.length()>15)
{
lcd.setCursor(0,0);
lcd.print(mensajeLCD.substring(0,16));
lcd.setCursor(0,1);
lcd.print(mensajeLCD.substring(16,mensajeLCD.length()));
}
else
{
lcd.print(mensajeLCD);
}
}
}
String convertChar(char msgConvert[32])
{
String msgConvertStr;
for (int i=0; i < CHARACTERS; i++)
{
msgConvertStr += msgConvert[i];
}
}
Un saludo.