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


 


Tema destacado: Página de elhacker.net en Google+ Google+


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 348
21  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 25 Marzo 2017, 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).
22  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 24 Marzo 2017, 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.
23  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 24 Marzo 2017, 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.
24  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 24 Marzo 2017, 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.
25  Programación / Programación C/C++ / Re: Como mostrar la version de windows 32 o 64 bits usando c++ en: 24 Marzo 2017, 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)
26  Programación / Programación C/C++ / Re: Como mostrar la version de windows 32 o 64 bits usando c++ en: 24 Marzo 2017, 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
27  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 24 Marzo 2017, 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:
._.
28  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 24 Marzo 2017, 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
29  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 24 Marzo 2017, 13:37
Prueba con:
Código
  1. Encoding.ASCII.GetString(miBuffer1);
30  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 17 18 ... 348
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines