#include <conio.c>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
main()
{
system("title Enlaces Wifi V1.1, XDati .-.");
/*Tiene más color la plantilla en Excel... será...*/
float frecuencia, frec, distancia, ptx, perdida1, gtx, per, grx, perdida2, sensibilidad;
float atenuacion, senal, metros, cont=0;
char ayuda[5], op[1], conver[4];
textbackground(BLUE);
textcolor (YELLOW);
clrscr();
gotoxy(10,1);
printf("\tCALCULADORA DE ENLACES PUNTO A PUNTO WI-FI\n");
printf("\t ---------------------------------------------------");
gotoxy(25,2);
printf("(ver.1.1).\n");
printf("\nNota: Para obtener ayuda, escriba 'ayuda'.");
printf("\nSi no desea ayuda, presione 'Enter': ");
fflush(stdin);
textcolor (WHITE);
gets(ayuda);
if(strcmp(strupr(ayuda), "AYUDA")==0)
{
system ("cls");
textcolor(YELLOW);
printf("\nMenu ayuda");
printf("\nSi tiene dudas, le informamos que los resultados en esta aplicacion");
printf("\nson totalmente teoricos, no se garantiza el 100 porciento de efectividad.");
printf("\nLos datos entregados, por lo general, si sirven, ya que lo he hecho");
printf("\ny me ha funcionado.");
printf("\n\nEsta aplicacion ha sido programada en lenguaje C, utilizando los");
printf("\nheaders <conio.h>, <stdio.h>, <math.h>, <string.h>, <stdlib.h> y <conio.c>.");
printf("\n\nSi desea calcular los resultados a mano, aca estan las formulas:");
printf("\n\nPara obtener la atenuacion del espacio libre:");
printf("\n20*log(distancia)+20*log(frecuencia)+32.45;");
printf("\n\nPara obtener la potencia del trasmisor en dBm:");
printf("\n10*log(potencia en miliwatts);");
printf("\n\nPotencia efectivamente radiada (P.E.R):");
printf("\nPotencia del emisor en dBm - Perdida en emisor + Ganancia antena Tx");
printf("\n\nPara calcular el nivel de senal a la altura de la antena:");
printf("\n-(atenuacion por espacio libre)+ P.E.R");
printf("\n\nPresione tecla para seguir...");
getch();
printf("\n\nNivel de senal esperado a la entrada de la antena Rx:");
printf("\nNivel de senal a la altura de la antena + Ganancia Rx - Perdidas en receptor");
printf("\n\nMargen de desvanecimiento:");
printf("\n(Nivel de senal a la altura de la antena + Ganancia Rx - perdidas)+ sensibilidad");
printf("\n\nPara que el enlace sea factible, el margen de desvanecimiento debe ser > a 0.");
printf("\nEl conversor de unidades, funciona SOLO para frecuencias y distancias.");
printf("\nPara inicializarlo, ponga '0' cuando se le pida la frecuencia a trabajar.");
printf("\n\nPresione tecla para continuar...\n");
getch();
}
do
{
system ("cls");
printf("\nIniciando calculo de enlace:");
cont=0;
textcolor(YELLOW);
printf("\nPara iniciar el conversor de unidades, presione '0'");
frecuenci:/*Se llega acá cuando se entra al conversor de metros*/
printf("\nIngrese frecuencia (En MHz): ");
scanf("%f", &frecuencia);
if ((frecuencia > 0) && (cont <= 0))
{
goto dist;
}
if(frecuencia==0)
{
system ("cls");
textcolor(YELLOW);
printf("\n\nConversor de unidades:");
printf("\nEscriba 'KM' si son kilometros o 'FREC' si es frecuencia: ");
fflush(stdin);
textcolor(WHITE);
gets(conver);
if(strcmp(strupr(conver),"KM")==0)
{
textcolor(YELLOW);
printf("\nIngrese metros: ");
textcolor(WHITE);
scanf("%f", &metros);
distancia=metros/1000;
cont=1;
textcolor(YELLOW);
printf("%6.0f metros son %6.3f kilometros.\n", metros, distancia);
printf("(Finalizado conversor, asignado en memoria)\n");
goto frecuenci;
}
else if(strcmp(strupr(conver), "FREC")==0)
{
textcolor(YELLOW);
printf("\nIngrese frecuencia del equipo (GHz): ");
textcolor(WHITE);
scanf("%f", &frec);
frecuencia=frec*1000;
textcolor(YELLOW);
printf("%6.2f GHz, son %6.0f MHz\n", frec, frecuencia);
printf("(Finalizado conversor, asignado en memoria)\n\n");
cont=0;
goto dist/*Permite ingresar la distancia*/;
}
}
if(cont=1)
{
goto siguiente;
}
dist:
textcolor(YELLOW);
printf("Ingrese distancia (En Km): ");
scanf("%f", &distancia);
siguiente:
atenuacion=20*log10(distancia)+20*log10(frecuencia)+32.45;
printf("\n\nGanancia en la transmision.");
printf("\nIngrese potencia del transmisor (En mw): ");
scanf("%f",&ptx);
printf("Ingrese el total de perdidas (en dB): ");
scanf("%f", &perdida1);
printf("Ingrese la ganacia de la antena emisora (en dBi): ");
scanf("%f", >x);
printf("\n\nCalculo del margen de desvanecimiento.");
printf("\nGanancia de la antena receptora (en dBi): ");
scanf("%f", &grx);
printf("Ingrese el total de perdidas a nivel del receptor (en dB): ");
scanf("%f", &perdida2);
printf("Ingrese la sensibilidad del equipo receptor (en dBm): -");
scanf("%f", &sensibilidad);
printf("\n\nResultados de los datos ingresados:");
printf("\nFrecuencia: %4.0f MHz", frecuencia);
printf("\nDistancia: %4.3f Km", distancia);
printf("\nAtenuacion por espacio libre: %f dB", atenuacion);
printf("\n\nGanancia en la transmision:");
printf("\nPotencia el transmisor (en miliwatts): %4.0f mw", ptx);
printf("\nPotencia del transmisor (en dBm): %4.0f dbm", 10*log10(ptx));
printf("\nPerdidas en conectores, cables, etc: %4.0f dB", perdida1);
printf("\nGanancia de la antena emisora: %4.0f dBi", gtx);
per=10*log10(ptx)-perdida1+gtx;
printf("\nPotencia efectivamente radiada (P.E.R): %f", per);
printf("\n\nCalculo de margen de desvanecimiento:");
printf("\nPerdidas por espacio libre: %f dB", -1*(atenuacion));
printf("\nNivel de senal (colocados a la altura de la antena): %f dBm", (-1*(atenuacion)+(per)));
senal=-1*atenuacion+per;
printf("\nGanancia de la antena receptora: %4.0f dBi", grx);
printf("\nPerdidas a nivel del receptor: %4.0f dB", perdida2);
printf("\nNivel de senal esperado a la entrada de la antena receptora: %f dBm", senal+grx-perdida2);
printf("\nSensibilidad del receptor: %4.0f", -1*sensibilidad);
printf("\nMargen de desvanecimiento: %f dB", (senal+grx-perdida2)+sensibilidad);
if(((senal+grx-perdida2)+sensibilidad)>=0)
{
printf("\nENLACE REALIZABLE

.");
}
else{
printf("\nENLACE NO REALIZABLE

.");
}
printf("\n\nDesea calcular un nuevo enlace (s/n): ");
fflush (stdin);
gets(op);
}
while(strcmp(strupr(op), "S")==0);
textcolor(WHITE);
printf("\nRecuerde, un arbol o una pared pueden afectar el enlace.");
printf("\nAsegurese que la linea vista sea directa, clara y visible entre las antenas.");
printf("\n\nCualquier error en el programa, plis, haganmela saber a: ");
printf("\
[email protected]; \
[email protected]");
textcolor(RED);
printf("\nXDati n_n 2007.\n");
textcolor(WHITE);
system ("pause");
}