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


 


Tema destacado: Píldoras formativas en seguridad de la información


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 351
71  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 19 Marzo 2017, 14:23
El caso es que, este mismo código en C#, también dará problema. No es cosa del lenguaje, sinó de la lógica. Si tu switch va por el default, le estás obligando igualmente a leer datos del Arduino (que no tiene por qué haber).

Si lo que quieres es enviarle datos y leerlos a la vez, necesitarás threads.
72  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 18 Marzo 2017, 21:09
¡Desde luego!
Si no envías nada al Arduino, intuyo que el Arduino, en principio, no le envía nada al PC. por tanto, se va a quedar esperando.
Everything as expected
Tendrás que cambiar el flujo del programa si quieres que eso no ocurra. Además, imagínate que agregas una opción que envía datos al Arduino pero no los recibe. ¿Para qué esperar la salida del Arduino?
En fin, eso ya no es un error, solo un flujo incorrecto. Depende de cómo quieras ampliar el programa, modifícalo como más te convenga.
73  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 18 Marzo 2017, 18:17
No. Hablo de un while a la hora de recibir datos. No sirve solo "enviar y luego recibir". En un protocolo, hay que asegurarse de que se completa la comunicación. Si tratas de leer datos del puerto y no recibes nada, hay un problema. El Arduino no es instantáneo, probablemente trabajará mucho más lento que tu PC. Hay que esperar los datos:

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. }
  9. cout << "Recibido: " << lectura << endl;
  10. cout << "-------------------" << endl;
  11.  

Por ejemplo.
74  Programación / Programación C/C++ / Re: cómo se hacen las rejas 3D en glut y opengl en: 18 Marzo 2017, 15:55
Prueba a utilizar GL_TRIANGLES (Como intuirás, cada 3 vértices, dibujará un triángulo).
Luego, para poner colores, glColor3ub(r, g, b), donde cada parámetro va de 0 a 255. También tienes glColor3f(r, g, b), donde recibe floats, y cada color va de 0.0 a 1.0 (Utiliza lo que más te interese).

Si quieres que la cuadricula tenga un fondo verde, entonces puedes dibujar por detrás 2 triangulos (para formar un cuadrado), y luego la cuadricula (no olvides cambiar el color).

Para todas las modalidades de dibujado que tiene glBegin: https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glBegin.xml.
Tienes tambien GL_QUADS, GL_POLYGON, etc. Lo que más te interese.
75  Programación / Programación C/C++ / Re: cómo se hacen las rejas 3D en glut y opengl en: 18 Marzo 2017, 15:41
Y cómo se pinta en OpenGL jajajaja no tengo ni idea de nada :rolleyes:

Pero si ya hiciste el programa de arriba ._.

En cualquier caso, por el foro obtendrás buenas respuestas a buenas preguntas (concretas). Para aprender OpenGL, e mejor que busques un tutorial por internet. Si tienes preguntas concretas, desde luego, sé libre de ponerlas.
76  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 18 Marzo 2017, 13:01
Bien. De todos modos, un Sleep es un parche para testear, pero no es correcto. Lo que quieres no es esperar 500 milisegundos; lo que quieres es esperar hasta que el Arduino te contexte (o si tarda mucho, poner un timeout, pero esto ya más adelante).
Podrías hacer un while hasta recibir la respuesta completa del Arduino. Un while con un Sleep(1) si tal, para no sobrecargar. Y en el while, pues eso, leer hasta recibirlo todo.
77  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 18 Marzo 2017, 02:16
Pero, lo dicho. Desde que pulsas enter y escribes al arduino hasta que lees del arduino... ¿Crees que le da tiempo al Arduino a procesar y responder?
Vamos a comprobar que no sea eso. Coloca un Sleep(100); antes del ReadData.
78  Programación / Programación C/C++ / Re: Problema C al leer flotante. en: 18 Marzo 2017, 01:26
Código
  1. scanf ("%d",&prepago);
prepago es float, pero le has indicado "%d", entero. Tendrás que poner %f.
79  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 18 Marzo 2017, 01:24
Para empezar, es interesante saber qué hace exactamente ReadData: Retorna el número de caracteres leídos (y -1 si hubo un error o si leyó 0 caracteres). Dicho esto, ten en cuenta que las cadenas en C++ no son como en C#. De esos 50 caracteres, si solo lees 10, quedarán 40 como basura. Para evitar leerlos, basta poner un '\0' en el undécimo caracter:

Código
  1. int n = Puerto->ReadData(lectura, 49);
  2. lectura[n + 1] = '\0';

Eso en primer lugar. Luego, si el retorno de ReadData es -1, no deberías mostrar el Recibido (deberías esperar primero a que haya bytes para leer, pues no tienen por qué trabajar a la vez el Arduino y el PC (viene siendo como sincronizar varios threads, vaya))

Y bueno, hecho eso, a ver qué problemas te da.
80  Programación / Programación C/C++ / Re: cómo se hacen las rejas 3D en glut y opengl en: 17 Marzo 2017, 23:22
En primer lugar, trata de no poner varios includes iguales.
Luego, trata de poner los glvertex con un for en vez de ponerlos todos seguidos.

Sobre texturas, es un pelín más coñazo. YO te recomendaría dejarlo para un poco más adelante, y acostumrbarte primero a OpenGL (puedes hasta simular hierba con triangulitos de diversas variedades de verde). Realmente no son <necesarias> las texturas al principio, y lían de más, sobre todo si el proyecto no está bien organizado.

Ahora bien, si quieres proseguir con texturas, pues bueno. Yo te diría que busques por Google, que algo encontrarás (Hace mucho que no utilizo OpenGL antiguo para cargar texturas).
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 351
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines