
Uno de los mejores archivos que tiene esta central, es el encargado de distribuir por todo el programa los comandos que se reciben desde los diferentes dispositivos de comunicación (Serial, BT, Wifi)
Para adaptar la central a las nuevas extensiones de la central se han mantenido los comandos originales con algunas variaciones y se han añadido algunos comandos nuevos. Para el uso de la pantalla y mensajes de información se han añadido también algunas variables.
Comandos "Q" y "q"
Recientemente hemos realizado varias pruebas con diferentes sistemas de detección o sensores, sobre todo los relacionados con S88 y sensores con radio frecuencia. Para tener un mejor control sobre los sensores se han añadido algunas lineas al archivo.
La clase Sensores no es compatible con la clase S88. Pero si quitamos estás clases no tendríamos acceso a estos comandos. El problema se ha solucionado con las siguientes lineas:
#ifndef USE_SENSOR && #ifndef USE_S88
case 'q':
Serial.println("sensor bajo");
datasen = "<q" + String(com[1]) + ">";
datasen.toCharArray(char_s, datasen.length()+1);
CommManager::printf(char_s);
return true;
case 'Q':
Serial.println("sensor Alto");
datasen = "<Q" + String(com[1]) + ">";
datasen.toCharArray(char_s, datasen.length()+1);
CommManager::printf(char_s);
return true;
#endif
Con esto nos aseguramos que aunque no se estén activados USE_SENSOR y USE_S88 seguiremos teniendo la recepción de estos comandos. Lo que es muy útil para software como Rocrail .
El comando 'I':
Con el uso de la conexión Wifi una de las cosas que siempre me molestaba era tener que buscar la IP del ESP-01.
Al estar usando el programa de WebSockets, este manda el comando 'I' que es recibido por la central y muestra la IP en pantalla
Envío de comando 'I'
delay(3000); // Pausa para dar tiempo a la central DCCpp_LMD para iniciar
Serial.print(F("<I")); // Comando "I" en https://github.com/Peyutron/DCCpp_LMD
Serial.print(WiFi.localIP()); // para mostrar IP en pantalla OLED
Serial.println(F(">"));
En esta parte, al establecer la conexión, hace una pausa de 3 segundos y manda el comando acompañado de la de la dirección IP.
Archivo TextCommand.cpp
#ifdef USE_SERIALWIFI
case 'I':
#ifdef USE_OLED
Oled::printWifiIp(com + 1);
#endif
return true;
#endif
Posteriormente, la central lo procesa en TextCommand::process()> y en el case 'I': redirige la información al archivo Oled.cpp para mostrar la IP en la pantalla.
Página siguiente
Página anterior
Volver al índice
Descargar Librería DCCpp_LMD 2.0.4 (Modificación Oled, S88, Sonido, wifi, Bluetooth, Serial3, teclado y encoder)
Seguiré actualizando!!!