/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Codigo para controlar Servo motores y Muestrear señal de Wif

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
kds



Registrado: 11 Nov 2007
Mensajes: 1

MensajePublicado: 11/11/2007 6:08 pm
Título: Codigo para controlar Servo motores y Muestrear señal de Wif

Hola que tal mi primer post en este foro, y bueno no pierdo tiempo con presentaciones.


Estoy haciendo un codigo para controlar un servo motor, que enrealidad ya controlo con un PIC y solo tiene 3 botones izq, der, centro, y esos los voy a manejar desde el puerto paralelo.


Bueno entonces son solo 3 bits. Pero no es todo para posicionarlo hay que leer la señal de una tarjeta USB wireless conectada.

Es muy sencillo, solo hay 3 posiciones extremos y centro, mi programa va ( a un no sive todo) mover el servo a esas posiciones y a leer la señal luego solo las compara y donde este mejor la señal ahi se pone


bueno se escucha facil aun no llevo mucho tiene mucho que no escribo en c y por eso les pido que revisen mi codigo y me digan conforme voy avansando que puedo mejorar. gracias

Programa principal
Código:

//programa que lee la señal de wireless y manda señal a servo motores
#include <stdio.h>
#include <stdlib.h>

int main()
{

FILE *punt;
char texto[80]; //cadena de cada linea de texto
char *c;
int pos[2], x, valAct;


pos[0]=pos[1]=pos[2]=x=0;

printf("/a ----Programa para controlar una antena wifi con servo motores--- /n/n");
printf("Realizando muestreo.../n/n");


do{

//rutina para leer la señal y almacenarla
usleep(1000000); //retardo necesario
system("iwconfig eth1 >/home/kds/antena/ejemplo.log");
punt = fopen("/home/kds/antena/ejemplo.log","r");
//fin

//rutina para leer el archivo y extraer el valo de la señal xxx/1000
//fin

//se guarda el valor en una variable
pos[x]=valAct;
//fin
 printf("la selal en la posicion %d es de %d",x,valAct);

x++;
}while (x!=3);


//se compara la mejor señal y se posiona

if ((pos[0] == pos[1]) &&  (pos[1]== pos[2]))
//a poscion 1
    printf("se tiene la misma señal en las 3 zonas");
if ( (pos[0] >= pos[1]) && (pos[0] >= pos[2]))
//a posicion 0
if ( (pos[1] >= pos[0]) && (pos[1] >= pos[2]))
//a posicion 1
if ( (pos[2] >= pos[0]) && (pos[2] >= pos[1]))
//a posicion 2






fclose(punt);
return (0);
}



progama que lee el comando ifconfig eth1

Código:

ejecutar: ./ejemplo
que hace el programa:  usa system para mandar la salida a un archivo temporal y luego la lee

*/
#include <stdio.h>
#include <stdlib.h>

int main()
{

FILE *punt;
char texto[80];
char *c;

system("iwconfig eth1 >/home/kds/antena/ejemplo.log");
punt = fopen("/home/kds/antena/ejemplo.log","r");

 do
 {
c = fgets(texto, 50, punt);
if (c != NULL)
printf("%s",texto);
/* En este lugar la variable texto ya contiene la  primer linea  */
/* en el proximo ciclo tendra lo que dice la linea siguiente */

 }while (c != NULL);





fclose(punt);
return (0);
}


Programa que intenta saber la señal ,muy malo
Código:

#include <stdio.h>
#include <stdlib.h>

int main()
{

FILE * archivo;
char str [4];
//int cal;



archivo = fopen ("ejemplo.log", "a+t");


 fseek (archivo, 246, SEEK_CUR);
 fscanf (archivo, "%s", str);
printf ("I have read:%s \n",str);


fclose (archivo);


return (0);
}





Como pueden ver estoy medio perdido, acepto cualquier mejora

tengo dudas en

como saber la señal.
comparar mas efectivamente la señal de cada posicion.
mandar los bits para el puerto paralelo.

gracias espero tambien que alguien aprenda de esto[/code]
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com