elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Análisis del vídeo del hackeo al Sindicato de los Mossos de Esquadra


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 346
1  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: Hoy a las 00:02
El problema es que en C# te funciona porque lo estás utilizando "orientado a eventos", con los handlers. Son por lo menos 2 threads funcionando. Sin embargo, en C++ solo estás utilizando 1 thread.

Tendrás que elegir: o utilizar 2 threads en C++, o pasar el código de C# a 1 solo thread controlando tú el flujo del programa (completo).
2  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: Ayer a las 22:03
Pues por eso te digo. Hazlo primero completamente funcional en C#, y ya luego, en C++. Sinó, estás acarreando 2 problemas en vez de 1.
3  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: Ayer a las 21:02
Más que no responder, será que no lees del Arduino:
Código
  1. } while (tecla != 0);
Ya dije antes. Tienes que leer después de enviar. En un mensaje anterior hablé sobre hacer una función.
4  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: Ayer a las 19:42
Parecido sí, pero de forma incorrecta:
En C# tienes esto:
Código
  1.            do
  2.            {
  3.                tecla = Console.ReadKey(true).Key; // Espera pulsación de teclas.

En C++ tienes esto otro:
Código
  1. cin >> tecla; // Aquí introduces un número, el 1 o el 2.
  2.  
  3. do
  4. {
La diferencia entre uno y otro es que el C++ va a quedarse en un bucle infinito.

Y pusiste:
Código
  1. while (tecla)
  2. {
  3. case 1:
._.
Línea 29.
Código
  1. while (tecla)
No es while, es switch.
5  Programación / Programación C/C++ / Re: Como mostrar la version de windows 32 o 64 bits usando c++ en: Ayer a las 18:34
Oh sí, pensé que se hablaba en tiempo de compilación.

Acerca de eso...

Para saber si corre en WOW64, IsWow64Process

Código
  1. #if_WIN64
  2.    isWow64=true;
Si está compilado para Win64 bits, sí o sí va a ser de 64 bits y no va a estar corriendo en WOW64. Solo si es una app compilada para 32 bits puede que corra en WOW64 (y eso lo sacas con la función IsWow64Process)
6  Programación / Programación C/C++ / Re: Como mostrar la version de windows 32 o 64 bits usando c++ en: Ayer a las 18:17
Es correcto. Aquí tienes macros predefinidos por los compiladores para cada SO:
http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system
7  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: Ayer a las 18:11
Parecido sí, pero de forma incorrecta:
En C# tienes esto:
Código
  1.            do
  2.            {
  3.                tecla = Console.ReadKey(true).Key; // Espera pulsación de teclas.

En C++ tienes esto otro:
Código
  1. cin >> tecla; // Aquí introduces un número, el 1 o el 2.
  2.  
  3. do
  4. {
La diferencia entre uno y otro es que el C++ va a quedarse en un bucle infinito.

Y pusiste:
Código
  1. while (tecla)
  2. {
  3. case 1:
._.
8  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: Ayer a las 14:41
Pero si el único problema que tenías era la estructura (que es lo mismo en C++ como en C#) ._.

Y sobre el error, aseg´ñurate de que usas el método correcto: https://msdn.microsoft.com/es-es/library/744y86tc(v=vs.110).aspx
9  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: Ayer a las 13:37
Prueba con:
Código
  1. Encoding.ASCII.GetString(miBuffer1);
10  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 23 Marzo 2017, 23:54
En primer lugar, yo separaría estoa  una función:

Código
  1. while (true) {
  2. int n = Puerto->ReadData(lectura, 49);
  3. if (n > 0) {
  4. lectura[n + 1] = '\0';
  5. break;
  6. }
  7. Sleep(1);
  8. }
Una función que espere a que el Arduino envíe datos, y los retorne.

Lo de esperar datos solo lo vas a hacer si pulsan 1 o 2, así que llamas a esa función en cada case. Es cierto que los 2 case son idénticos salvo por la constante que envías. Podrías poner algo como:
Código
  1. const char *luz[2] = {"Luz_ON", "Luz_OFF"};
  2.  
  3. switch(opc){
  4.    case 1:
  5.    case 2:
  6.        cout << "Enviando: " << luz[opc-1] << endl;
  7.        Puerto->WriteData(luz[opc-1], strlen(luz[opc-1]));
  8.        cout << "Respuesta: " << obtenerRespuestaArduino() << endl;
  9.        break;
  10.  
  11.    default:
  12.        // ...
  13. }

De ese modo, solo esperará entrada del Arduino cuando sea necesario hacerlo. Al terminar el switch, puedes poner, si quieres, para leer datos del Arduino (sin esperar indefinidamente, eso sí, para que vuelva al inicio del bucle while y siga preguntando)

El problema es eso, el cómo está estructurado el código. Lo dicho: si tienes más experiencia en C#, puedes tratar de hacerlo ahí primero.
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 346
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines