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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con programa de control en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con programa de control en C  (Leído 2,978 veces)
javitrito

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Ayuda con programa de control en C
« en: 4 Febrero 2017, 11:13 am »

Buenos dias, estoy realizando un proyecto de ingenieria sobre un sistema hipercaotico. Tengo realizado todo mi código y deseo controlarlo mediante un sistema de control que me ha dado mi tutor. Lo que deseo hacer es que en mi función "control" al pulsar una tecla, por ejemplo la "c" se aplique mi control. Tengo hecha la condición pero mi problema está en como hacer para poder introducir la tecla, si necesito un scanf o como hacerlo. Un saludo y adjunto mi codigo, el trozo del código que realiza el control.

Código
  1. void control(double te[], double ts[])
  2. {
  3. double signo1,signo2,z1,zp1,z4,zp4,e1prima,e4prima,e1,e4;
  4. char letra;
  5. if (letra == 'c'){
  6.  
  7. if ((0.6*ts[0]-8*ts[1]+1.5*ts[2]+1.5*ts[3]-0.6*ts[4])>0){
  8.       signo1=1;
  9.  }
  10.  else{
  11.       signo1=-1;
  12. }
  13.  
  14.  
  15.  if (signo1 == 1 && signo2== -1) {
  16. z1=ts[0]+sin(zp1-ts[0]);
  17.    zp1=z1;
  18.    te[0]=z1-ts[0];
  19. z4=ts[3]+sin(zp4-ts[3]);
  20.    zp4=z4;
  21.    te[1]=z4-ts[3];
  22. }
  23.  
  24.  
  25.   if ((0.6*ts[0]-8*ts[1]+1.5*ts[2]+1.5*ts[3]-0.6*ts[4])>0){
  26. signo2=1;
  27. }
  28.   else
  29. {
  30.        signo2=-1;
  31.  }
  32.  
  33.  
  34.  
  35. e1prima=-1225*e1;  
  36. e1=e1+e1prima*0.02; //vTm(0,02)
  37.  
  38. e4prima=-1225*e4;  
  39. e4=e4+e4prima*0.02;
  40.  
  41.  te[0]= 1225*e1;
  42.  
  43.  te[1]= 1225*e4;
  44.  
  45. }
  46. }
  47.  


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex


« Última modificación: 4 Febrero 2017, 23:22 pm por engel lex » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda con programa de control en C
« Respuesta #1 en: 4 Febrero 2017, 12:15 pm »

Hay muchas formas diferentes. Depende de si es un entorno visual o si es por consola.
Cada entorno visual tiene su forma de manejar eventos.
Si es por consola puedes apoyarte en tu sistema operativo y usar su API, o buscar una biblioteca que se encargue de ello. Si este último es tu elección te recomiendo ncurses. Si vas a usar el S.O. y es Linux busca información sobre termios. Para todo lo demás ni idea.


En línea

javitrito

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Ayuda con programa de control en C
« Respuesta #2 en: 4 Febrero 2017, 23:09 pm »

Gracias por la respuesta. Uso un entorno visual, keil uvision en windows. Espero alguna sugerencia más jeje
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda con programa de control en C
« Respuesta #3 en: 5 Febrero 2017, 00:43 am »

No, decía si el programa va a ser para la consola o sería en ventanas.
En línea

javitrito

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Ayuda con programa de control en C
« Respuesta #4 en: 5 Febrero 2017, 10:35 am »

El programa seria en ventanas, yo tengo una placa montada con mi oscilador hipercaotico y lo unico que me falta es lo que he comentado, al pulsar una tecla "c" aplicar mi control, pero no se como hacer para que me aparezca una ventana para introducir mi letra "c"
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda con programa de control en C
« Respuesta #5 en: 5 Febrero 2017, 16:50 pm »

Como es en ventanas, y supongo que en Windows, ya no tengo conocimientos de ello. Seguro alguna otra persona pueda darte mejor ayuda.
De forma general, y por si pudieras mirarlo por ti mismo si no hay más ayuda, debes registrar el evento de tecla pulsada a la ventana principal del programa. Una vez se dispare miras si la tecla que se ha pulsado se corresponde a la tecla 'c'. Si es así cambia el valor de una variable que controle la llamada a tu función a True para que tu programa llame a dicha función. De igual forma se se vuelve a pulsar 'c' la variable pasará a False y el programa ya no llamará tu función.
En línea

javitrito

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Ayuda con programa de control en C
« Respuesta #6 en: 6 Febrero 2017, 15:56 pm »

Muchas gracias por la respuesta. He hablado hoy con mi tutor y me ha dicho que en vez de hacerlo pulsando una tecla, lo haga pulsando un boton que trae mi microcontrolador. No se si seré capaz de hacerlo jeje, si alguien ha hecho algo parecido y sabe como programarlo que me lo comente jeje
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda con programa de control en C
« Respuesta #7 en: 6 Febrero 2017, 17:53 pm »

Eso es otra cosa. Supongo que la comunicación será pot puerto serie, emulado  (USB) o real. Deberás esperar en un bucle comunicación desde el puerto y actuar cuando recibas un o varios bytes que hayas preprogramado en el microcontrolador.

Por otra parte de búsqueda s programar el micro de forma que cada vez que pulses el botón debe enviar un o una secuencia de bytes por el puerto serie.
En línea

javitrito

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Ayuda con programa de control en C
« Respuesta #8 en: 7 Febrero 2017, 10:37 am »

Exacto! La comunicación como bien has dicho se realiza por puerto serie via USB. Mi problema reside en configurar dicho botón y como asignar el pulsado del botón a mi función de control.
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda con programa de control en C
« Respuesta #9 en: 7 Febrero 2017, 11:13 am »

Supongo que la comunicación entre el uC y el PC es constante enviando constantemente datos que el chip recoge.
Si ese es el caso pon el botón a una entrada con interrupción del uC de forma que cuando se active varíes una variable interna de 1 a 0 o de 0 a 1 y, además, envía al PC un mensaje con la información de ese cámbio y el valor.
Ahora el PC y el uC saben que el control pertenece al PC.
De la parte del uC puedes revisar la variable en cada iteración del bucle principal y elegir una rutina de autocontrol o una en que trabaje como esclavo.
De la parte del PC, que también tendrá una variable interna que cambiará según el mensaje recibido, el bucle principal la observará y elegirá una rutina de solo muestreo de datos o una más activa dinde recubirá los datos del uC, hará sus cálculos y retornará los resultados para que ése los aplique.

Lo que debes preparar bien es el protocolo de comunicación con las funciones y datos que deben ser transferidos. Lo demás es comunicación con periféricos que de seguro sabrás hacer sin problemas.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programa control de Inventario
Software
© Shadoweps ツ 3 7,164 Último mensaje 6 Marzo 2011, 19:25 pm
por allanxs
programa gds control de ingreso
Ingeniería Inversa
futelder16 1 4,756 Último mensaje 5 Enero 2012, 18:20 pm
por .:UND3R:.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines