Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/02/2016, 10:09
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 2 meses
Puntos: 204
Respuesta: switch C++ 2015 CLI

Cita:
Iniciado por REHome Ver Mensaje
No me puedo creer que a estas alturas de la vida no se pueda hacer un buen switch como en C# y VB. Deberían mejorar este tipo de cosas pero ya, con razón que este lenguaje C++ me parece muy incómodo y requiere más tiempo programando.
C++ es un lenguaje de programación de bajo nivel, a diferencia de Java y C#. Por otro lado C++ nació allá por 1980 mientras que Java lo hizo en 1995 (15 años más tarde) y .Net hizo lo propio allá por el 2000 (20 años después).

El contexto existente cuando nació C++ era totalmente diferente al actual... tanto la programación como las capacidades HW distaban mucho de parecerse a lo que conocemos hoy en día.

C++ es mejor en:
  • Más rapidez (no podrás optimizar un código en C# o en Java que pueda hacer sombra a C++)
  • Más versatilidad (intenta hacer correr .NET en un sistema embebido... C++ puede funcionar practicamente en cualquier sistema. Entre otras cosas consume muuuuuchos menos recursos)

Java y .NET son mejores en:
  • Productividad: Son lenguajes más modernos, de más alto nivel, con una librería básica infinitamente más completa... picar código es mucho más rápido. Esto es innegable.

Cada lenguaje tiene su utilidad. Si bien es cierto que opino que C++ se ha quedado algo obsoleto en algunos puntos también es verdad que lleva tres estándares nuevos en menos de 10 años.

Ah, y no hay que perder de vista que detrás de Java y de .NET hay dos importantes tecnológicas que aportan recursos económicos que no va a ver la gente de C++ en milenios... esto también puede tener sus cosas malas, como que las versiones de Java y .NET se mueven más por motivos económicos que prácticos.

Cita:
Iniciado por REHome Ver Mensaje
No funciona al recibir datos desde el puerto serie porque los valores no le llega. La variable principal es esta al recibir datos.
En ese código usas var sin haberlo inicializado.


Cita:
Iniciado por REHome Ver Mensaje
¿Hay alguna manera de usar la variable Recibidos que dentro se almacena el ON y OFF que debe detectar el switch?
Tu por el puerto serie vas a recibir datos... esos datos pueden ser binarios, números, cadenas de caracteres... cada cosa significará algo distinto y eso es algo que forma parte del protocolo de comunicación entre tu app y lo que haya al otro extremo del puerto serie.

Si tu recibes un dato que quieres convertir a ON y OFF entiendo que pueden darse dos circunstancias:
  • El dato en cuestión únicamente admite dos valores posibles (supongamos A y B)
  • Si el dato es inferior (o superior) a X se presupone OFF, ON en caso contrario

Este formateo lo debes hacer a mano... y eso no te lo quitas ni tan siquiera en C# o JAVA (mucho ojo con usar datos externos sin validar dentro de tu aplicación), pero no es que vaya a ser nada del otro mundo:

Código C++:
Ver original
  1. Valores valor;
  2. if( *Recibidos == X ) // Sustituye X por el char que identifique al on
  3.  valor = Valores::On;
  4. else
  5.  valor = Valores::Off;

Cita:
Iniciado por REHome Ver Mensaje
Debo mirar el map, nunca lo he usado, a lo mejor se puede hasta mejor.
La gracia del mapa está en generar el mapeo una sola vez (por ejemplo al arrancar la conexión con el puerto serie) en vez de tener que generarlo cada vez que quieres comprobar el estado On/Off.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.