Hola:
El código de arribano está bien, solo ontentaba hacer que lea la variable Lectura y lo muestre en el Rich en pantalla.
Intenté buscar la solución y llegué hasta aquí.
http://www.w3ii.com/es/mfc/mfc_rich_edit.htmlSi fuera C# sería algo así:
Rich.txt = Lectura.toString();
Como no se como se hace en MFC, pido ayuda.
El código muestra en pantalla lo que le llega del puerto serie. Es lo que tiene que hacer.
Saludos.
Edito:
Sin tener éxito y sabiendo que cada derrota es una experiencia, sigo por aquí.
Intenté hacer esto para buscar el .text y añadir la variable Lectura.
IDC_EDIT_MENSAJE_DESDE_ARDUINO.text = Lectura;
Y este otro:
IDC_EDIT_MENSAJE_DESDE_ARDUINO->text = Lectura;
No sirve. No funciona así. Me dio por hacer otra cosa como indico abajo. Lo que hago abajo, ni idea de lo que estoy haciendo, son locuras mias que si por pura suerte, espero con experanza de tener una luz que me diga una idea sobre los errores que cometo. Porque ne programación, jugar con la suerte, su éxito es extremadamente bajo.
Añado el nombre de la variable llamado prueba.
Al darle Finalizar, me crea esto en el código.
DDX_Control(pDX, IDC_EDIT_MENSAJE_DESDE_ARDUINO, prueba);
Concretamente aquí:
void CMFC_ArduinoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT_MENSAJE_DESDE_ARDUINO, prueba);
}
Luego me dió por hacer lo mismo que antes pero sin éxito alguno.
prueba.text = Lectura;
No encuentro el santo text. A lo mejor se llama otra cosa, porque aquí en propiedades no ecuentro nada de nada para escribir.
Edito 3:Hola de nuevo:
Si me deja escribir por aquí. Leyendo y leyendo por internet, hasta en ruso, encontré este enlace.
SetDlgItemTextEn C# sería algo así cmo indiqué arriba, pero no lo es:
Rich.txt = Lectura.toString();
Se usa así:
SetDlgItemText(IDC_EDIT_MENSAJE_DESDE_ARDUINO, lectura); // Mostrar texto.
En parte me ha funcionado, solo en parte, es decir. Si pulso el botón ON o OFF, no pasa nada. Si escribo una letra en el Rich, aparece ya los textos desde el puerto serie. Vuelvo a pulsar el botón ON o el OFF, no pasa nada, si escribo otra letra en el Rich que se llama IDC_EDIT_MENSAJE_DESDE_ARDUINO, vuelve aparecer nuevos datos desde el puerto serie. Esto ocurre así porque he usado este evento que puedes ver
aquí. No encuentro otro evento que valga la pena.
Código de este evento:
void CMFC_ArduinoDlg::OnEnUpdateEditMensajeDesdeArduino()
{
int n = Puerto->ReadData(lectura, 49);
if (n > 0)
{
lectura[n + 1] = '\0';
SetDlgItemText(IDC_EDIT_MENSAJE_DESDE_ARDUINO, lectura);
}
}
Si escribo una letra, en el Rich, me aparece por fin el mensaje, solo si escribe una letra, lo que sea con tal de detectar algo. Por lo que se ve, este método no es el adecuado.
Hice otro truco a ver si cuela, pero tampoco funciona como quiero. Puede el código en cada botón, el ON y OFF, usando el mismo código, y sin usar el void para reutilización de código, no quería perder el tiempo.
void CMFC_ArduinoDlg::OnBnClickedButton1()
{
Puerto->WriteData(Luz_OFF, sizeof(Luz_OFF) - 1);
int n = Puerto->ReadData(lectura, 49);
if (n > 0)
{
lectura[n + 1] = '\0';
SetDlgItemText(IDC_EDIT_MENSAJE_DESDE_ARDUINO, lectura);
}
}
Tiene comportamiento no deseado. Si uso ON, luego pulso OFF, me aparece el mensaje del ON, si vuelvo a pulsar OFF, me aparece el mensaje del OFF por fin, pero, debo pulsar dos veces el mismo botón para que me aparezca el mensaje adecuado. A parte de esto, si desde el puerto serie me aparece una entrada de texto sin yo solicitarlo desde el ordenador o PC, nunca me aparece el texto en pantalla.
La forma ideal es, desde que me llegue datos al puerto serie, desde que detecte algo, algún carácter, lo muestra en pantalla. Hay que buscar un evento o una función que cumpla esos requisitos.
Ahí no tengo idea, al menos he logrado que se muestre algo, porque desde hace meses no me comía una rosca, y desde los foros oficiales de Microsoft tanto en español como en Inglés, no tienen idea del tema de los puertos series y Arduino.
Sólo falta saber una buena función que detecte las entradas de datos en el Rich y asunto resuelto.
Saludos.