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


 


Tema destacado: Cifrar documentos-carpetas con GnuPG en Linux y Windows


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 348
11  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: Ayer a las 19:26
Una cosa es el DIE y otra el compilador. VC++ utiliza su compilador, Code::Blocks utilizará el que le hayas puesto, o con el que viene por defecto en algunas instalaciones (MinGW-GCC).

En cualquier caso, esa e suna forma muy inexacta de hacerlo. Después de enviar datos al arduino (caso 1 y 2), se supone que tienes que esperar la respuesta. Poner un sleep y luego leer 1 vez no es la forma ideal.

Trata de poner nuevamente el bucle while al leer del arduino (y nuevamente, solo lee del Arduino cuando le hayas enviado datos, no siempre).
12  Programación / Programación C/C++ / Re: Ayuda para resolver el programa en: Ayer a las 18:35
~No se hacen tareas~

Empieza por obtener la ecuación para sacar los puntos.
Luego, solo es copiarla a C y agregar un par de formalidades de cualquier lenguaje de programación.
13  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: Ayer a las 18:32
El error es totalmente explicativo.
Citar
error: '::main' must return 'int'|

El main es int main() o int main(int, char**).
14  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: Ayer a las 17:53
La abreviación que hiciste para ahorrar código está muy curioso, antes debo resolver problemas indicado arriba, a parte de eso, lo de pulsar una tecla y automáticamente ejecuta el envio. ;)

No era una abreviación, era la forma de corregir el flujo del programa :/


Si escribo letras, se vuelve loco. Si escribo cualquier número, funciona de maravilla.

Al usar el operator>> de istream (cin), le estás pasando una variable numérica. Si no recibe una entrada válida, pone activa alguna de sus flags internas: http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/
Para ver si está la flag de error (la que te interesa en este caso), tienes el método fail(). Si quieres ver si hay errores de cualquier tipo, tienes el operator bool de la clase ios.

Usando el operator bool:
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main(){
  6. while(true){
  7. int n;
  8. cin >> n;
  9. if(!cin){
  10. cout << "Error" << endl;
  11. cin.clear();
  12. cin.sync();
  13. }else{
  14. cout << "Ok: " << n << endl;
  15. }
  16. }
  17. }
15  Programación / Programación C/C++ / Re: Problemas con variables Numericas en: Ayer a las 04:34
En los printf, en vez de %i o %d, que son para números enteros, pon %f, para flotante.
16  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: Ayer a las 00:20
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.

Ya ahí te respondiera el cómo solucionarlo -.-'
17  Programación / Programación C/C++ / Re: Puerto serie C++. Mejorar el programa. en: 25 Marzo 2017, 23:19
Es el mismo problema de antes. Si pulsas un número que no sea ni 1 ni 2, se va al default. Al salir del switch, espera infinitamente hasta que el Arduino responda algo (y, como no le enviaste nada, no va a responder).
Solo debes esperar respuesta del Arduino en caso de que haya puesto 1 o 2.
18  Programación / Programación C/C++ / Re: Crash al usar operadores new y delete. en: 25 Marzo 2017, 21:28
En un lugar pusiste atvl y en el otro pusiste codigo.
Y luego pusiste new codigo[1001] en vez de new char[1001].

Será
Código
  1. codigo[i] = new char[1001];
19  Programación / Programación C/C++ / Re: Es posible renombrar una clave de registro? en: 25 Marzo 2017, 20:02
Cómo lo haga C# internamente, eso no lo sé. En cualquier caso, te respondo para C++.

No te vale la pena ponerte a importar funciones externas solo por renombrar. Además, pienso que si la MSDN no pone la función como pública, será por algo...

https://msdn.microsoft.com/en-us/library/cc512138(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/bb432200(v=vs.85).aspx
20  Programación / Programación C/C++ / Re: Es posible renombrar una clave de registro? en: 25 Marzo 2017, 19:11
Copiar y eliminar.

RegCopyTree
RegDeleteKey

No, que yo sepa, no se puede renombrar.
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 348
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines