You are on page 1of 9

COMPTE RENDU SUR RADIOCOMS

Etudiant : Encadreur :
Mbaye ndiaye SAMB Dr Samuel OUYA

I-Objectif :
Développer une interface Web qui permet de calculer les paramètres suivants

➢ fsl
➢ marge libre
➢ rayon de fresnel
➢ hauteurs des pylones

II-Le formulaire de saisie

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="style.css">

<title>Radiocoms EC2LT</title>
</head>
<body>
<p ><h2 style="text-align: center; color: rgb(67, 138, 219);">CALCULATRICE RF
</h2></p>
<div>
<img class="cat" src="radiocoms.JPG">
<form class="form-style-9" method="POST" action="/cgi-bin/radiocoms.py" >
<h3 style="text-align: center; color: dodgerblue;">Remplir le formulaire</h3> <ul>
<li>
<input type="float" name="frequence" class="field-style field-full align-none"
placeholder="Frequence en MHz" required />
</li>
<li>
<input type="float" name="distance" class="field-style field-full align-none"
placeholder="Distance en Km" required />
</li>
<li>
<input type="float" name="pire" class="field-style field-full align-none" placeholder="Pire
en dbm" required />
</li>
<li>
<input type="float" name="rxgain" class="field-style field-full align-none"
placeholder="Rxgain en dbi" required />
</li>
<li>
<input type="float" name="sensi" class="field-style field-full align-none"
placeholder="Sensibilité en dbm" required />
</li>
<li>
<input type="float" name="distance1" class="field-style field-split align-left"
placeholder="Distance1 en metres" required/>
<input type="float" name="distance2" class="field-style field-split align-right"
placeholder="Distance2 en metres" required/>
</li>
<li>
<input type="float" name="altso" class="field-style field-split align-left"
placeholder="Altitude obstacle en metres" required />
<input type="float" name="ho" class="field-style field-split align-right"
placeholder="Hauteur obstacle en metres" />
</li>
<li>
<input type="float" name="altA" class="field-style field-split align-left"
placeholder="Altitude batimentA en metres" required />
<input type="float" name="hbatA" class="field-style field-split align-right"
placeholder="Hauteur batimentA en metres" required/>
</li>
<li>
<input type="float" name="altB" class="field-style field-split align-left"
placeholder="Altitude batimentB en metres" required/>
<input type="float" name="hbatB" class="field-style field-split align-right"
placeholder="Hauteur batimentB en metres" required />
</li>

<li>
<input type="submit" value="Calculer"/>
</li>
</ul>
</form>
</div>
</body>
</html>

------------------------------------------------------------------------------------------------------------------------
style.css

.form-style-9{
max-width: 400px;
max-height: 475px;
background: #FAFAFA;
padding: 30px;
margin: 10px auto;
box-shadow: 1px 1px 25px rgba(0, 0, 0, 0.35);
border-radius: 10px;
border: 6px solid #305A72;

float: right;
margin-right: 100px;
}
.form-style-9 ul{
padding:0;
margin:0;
list-style:none;
}
.form-style-9 ul li{
display: block;
margin-bottom: 10px;
min-height: 35px;
}
.form-style-9 ul li .field-style{
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
padding: 8px;
outline: none;
border: 1px solid #B0CFE0;
-webkit-transition: all 0.30s ease-in-out;
-moz-transition: all 0.30s ease-in-out;
-ms-transition: all 0.30s ease-in-out;
-o-transition: all 0.30s ease-in-out;

}.form-style-9 ul li .field-style:focus{
box-shadow: 0 0 5px #B0CFE0;
border:1px solid #B0CFE0;
}
.form-style-9 ul li .field-split{
width: 49%;
}
.form-style-9 ul li .field-full{
width: 100%;
}
.form-style-9 ul li input.align-left{
float:left;
}
.form-style-9 ul li input.align-right{
float:right;
}
.form-style-9 ul li textarea{
width: 100%;
height: 100px;
}
.form-style-9 ul li input[type="button"],
.form-style-9 ul li input[type="submit"] {
-moz-box-shadow: inset 0px 1px 0px 0px #3985B1;
-webkit-box-shadow: inset 0px 1px 0px 0px #3985B1;
box-shadow: inset 0px 1px 0px 0px #3985B1;
background-color: #216288;
border: 1px solid #17445E;
display: inline-block;
cursor: pointer;
color: #FFFFFF;
padding: 8px 18px;
text-decoration: none;
font: 12px Arial, Helvetica, sans-serif;
text-align: center;
}
.form-style-9 ul li input[type="button"]:hover,
.form-style-9 ul li input[type="submit"]:hover {
background: linear-gradient(to bottom, #2D77A2 5%, #337DA8 100%);
background-color: #28739E;
}

.center{
display: block;
position: relative;
margin-left: auto;
margin-right: auto;
}
input[type=submit] + br
{
display: none;
}

img {
max-width: 100%;
max-height: 100%;
}
.cat {
height: 300px;
width: 600px;
}

radiocoms.py
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import cgi, cgitb
import math

def fsl(f,d):
return 32.44+(20*(math.log(f*d))/math.log(10))

def margelibre(pire,fsl1,rxgain,sensi):
return (pire-fsl1+rxgain-sensi)

def rayonfresnel(d1,d2,f):
return 17.31*math.sqrt((0.6*d1*d2)/((d1+d2)*f))

def longueurpylone(altso,ho,r,alt,hbat):
return altso+ho+r-(alt+hbat)

form=cgi.FieldStorage()
frequence=float(form.getvalue("frequence"))
distance=float(form.getvalue("distance"))
pire=float(form.getvalue("pire"))
rxgain=float(form.getvalue("rxgain"))
sensi=float(form.getvalue("sensi"))

distance1=float(form.getvalue("distance1"))
distance2=float(form.getvalue("distance2"))

altso=float(form.getvalue("altso"))
ho=float(form.getvalue("ho"))

altA=float(form.getvalue("altA"))
hbatA=float(form.getvalue("hbatA"))

altB=float(form.getvalue("altB"))
hbatB=float(form.getvalue("hbatB"))

print("Content-Type: text/html")
print("")

print()
print("<html><head><title>Radiocoms</title></head>")
print("<body>")
print("<h3>Donnees saisies</h3>")
print('<table border="1px" >')
print("<tr><td>Frequence</td><td>Distance</td><td>Pire</td><td>rxgain</
td><td>sensibilite</td><td>Distance1</td><td>Distance2</td></tr>")
print("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>
%s</td><td>%s</td></tr>" %
(frequence,distance,pire,rxgain,sensi,distance1,distance2))
print ("</table>")

print("")
print("<h3>Donnees de l'obstacle</h3>")
print('<table border="1px">')
print("<tr><td>altitude Obstacle</td><td>hauteur Obstacle</td></tr>")
print("<tr><td>%s</td><td>%s</td></tr>" %(altso,ho))

print ("</table>")

print("")
print("<h3>Donnees siteA </h3>")
print('<table border="1px">')
print("<tr><td>altitudeA</td><td>hauteur batimentA</td><td>Hauteur
PylonA</td></tr>")
print("<tr><td>%s</td><td>%s</td><td>%s</td></tr>" %
(altA,hbatA,longueurpylone(altso,ho,rayonfresnel(distance1,distance2,frequence),altA,hbat
A)))
print ("</table>")

print("")
print("<h3>Donnees siteB </h3>")
print('<table border="1px">')
print("<tr><td>altitudeB</td><td>hauteur batimentB</td><td>Hauteur
PylonB</td></tr>")
print("<tr><td>%s</td><td>%s</td><td>%s</td></tr>" %
(altB,hbatB,longueurpylone(altso,ho,rayonfresnel(distance1,distance2,frequence),altB,hbat
B)))
print ("</table>")

print("")
print("<h3>Resultats </h3>")
print('<table border="1px">')
print("<tr><td>Fsl</td><td>Marge libre</td><td>Rayon de fresnel</td></tr>")
print("<tr><td>%s</td><td>%s</td><td>%s</td></tr>" %
(fsl(frequence,distance),margelibre(pire,fsl(frequence,distance),rxgain,sensi),rayonfresnel(
distance1,distance2,frequence)))
print ("</table>")
if margelibre(pire,fsl(frequence,distance),rxgain,sensi) < 15:
print("marge libre inferieure a 15 db la liaison n est pas bonne")
if margelibre(pire,fsl(frequence,distance),rxgain,sensi) >15 and
margelibre(pire,fsl(frequence,distance),rxgain,sensi)<30 :
print("marge libre comprise entre 15 et 30 la liaison est bonne ")
if margelibre(pire,fsl(frequence,distance),rxgain,sensi) > 30:
print("marge libre superieur a 30 la liaison est excellente ")
print ("</body></html>")
Résultat

Remplir le formulaire pour tester notre plateforme


exemple du cours
frequence :5000MHz
Distance :6,5Km
Pire : Txgain+Txpower=54dbm
Rxgain :23dbi
Sensibilité :-74dbm
Distance1 :1500metres
Distance2 :1500metres
altitude obstacle :0metre
hauteur obstacle :20metres
altitude batimentA :0metre
hauteur batimentA :18metres
altitude batimentB :0metre
hauteur batimentB :19metres
Après avoir validé le formulaire on a les résultats suivants
ces résultats sont conformes avec ceux de l’exemple du cours donc notre plateforme est
fonctionnelle
Cette plateforme nous facilite les calculs Radiocoms qui sont très complexes

You might also like