kds
Registrado: 11 Nov 2007 Mensajes: 1
| Publicado: 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] |
|