DCCpp LMD TextCommand


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.


Volver

Descargar Librería DCCpp_LMD 2.0.4 (Modificación Oled, S88, Sonido, wifi, Bluetooth, Serial3, teclado y encoder)

Seguiré actualizando!!!