Professional Documents
Culture Documents
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
<!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