TP Interfaçage Homme-Machine
Commande d’une interface d’E/S par web
STI2D - SIN CI4 : Gestion de l'information / Structures matérielles et logicielles associées au traitement de l'information
Problématique : Comment mettre en œuvre une interface de communication orientée
WEB ?
Durée du TP : 3 heures.
4/ On souhaite à présent commander les 8 sorties par l’action sur des cases à cocher. La
figure ci-dessous montre l’aspect de l’interface HM :
L’action sur le bouton Valider les états doit
provoquer l’exécution de la fonction en javascript
Commandeoutbitrun().
NB04/12/2011 1/5
Noms des élèves : Classe : STI2D-SIN
(Commandeoutbitrun(),) comme le fonctionnement n’est pas le même..
8/ Que se passe-t-il si un utilisateur saisi la valeur 300. Expliquer
Une alerte est affichée. La fonction génère cette alerte pour des valeurs non
comprises entre 0 et 255.
9/ La carte P8055 dispose de deux sorties analogiques dont la tension varie en fonction
d’une valeur transmise entre 0 et 255. Rajouter à l’IHM les codes permettant d’affecter
selon le choix une valeur à la voie 1 ou la voie 2. On utilisera la fonction javascript
commanderoutvalana()
Pour commander la carte d’interface, un fichier HTML simple ne suffit pas. Il faut en priorité un
programme résident dans l’ordinateur qui permette d’activer les sorties de la carte d’Interface via le
port USB. Pour lancer ce programme, le fichier HTML a, quant à lui, besoin de code dynamique.
C’est le langage interprété javascript qui permet cela grâce aux commandes onClick qui lance les
fonction permettant d’exécuter le programme résident dans le PC.
NB04/12/2011 2/5
Noms des élèves : Classe : STI2D-SIN
Code du programme
<HTML>
<HEAD>
<TITLE>Commande de la carte P8055 par WEB</TITLE>
</HEAD>
<BODY ">
<p align="center"><font size="+2" face="Verdana, Arial, Helvetica, sans-serif"><strong>PILOTAGE
DE LA CARTE P8055</strong></font></p>
<p><img src="P8055.jpg" width="511" height="309"></p>
<p><font face="Verdana"><strong>Commande des sorties numériques : </strong></font> </p>
<table border="1">
<tr>
<td>d7</td><td>d6</td><td>d5</td><td>d4</td><td>d3</td><td>d2</td><td>d1</td><td>d0</td>
</tr>
<td><input Type="checkbox" name="d7" value="d7"></td>
<td><input Type="checkbox" name="d6" value="d6"></td>
<td><input Type="checkbox" name="d5" value="d5"></td>
<td><input Type="checkbox" name="d4" value="d4"></td>
<td><input Type="checkbox" name="d3" value="d3"></td>
<td><input Type="checkbox" name="d2" value="d2"></td>
<td><input Type="checkbox" name="d1" value="d1"></td>
<td><input Type="checkbox" name="d0" value="d0"></td>
</tr>
</table>
<input value="Valider les états" Type="button" onclick="commanderoutbitrun();"/>
<hr>
<p><font face="Verdana"><strong>Commande des sorties numériques </strong></font></p>
<p><font size="-1" face="Verdana, Arial, Helvetica, sans-serif"><strong>(donner une valeur entre 0 et 255)</strong></font></p>
<p>
<input type="text" name="valnum" value="0">
<input type="button" value="Valider la valeur" onclick="commanderoutvalrun();"/>
</p>
<hr>
<p><font face="Verdana"><strong>Commande de la tension analogique :</strong></font></p>
<p><font size="-1" face="Verdana, Arial, Helvetica, sans-serif">
<strong>(donner une valeur entre 0 et 255)</strong></font></p>
<table width="100%" border="0">
<tr>
<td width="17%" rowspan="2"><p>
<label>
<input type="radio" name="choix" value="voie" checked >
Voie 1</label>
<br>
<label>
<input type="radio" name="choix" value="voie">
Voie 2</label>
<br>
</p></td>
<td width="83%"><input type="text" name="vala1" value="0"></td>
</tr>
<tr>
<td> <input name="button" type="button" onClick='commanderoutvalana();' value="Tension analogique"/></td>
</tr>
</table>
<p>
<script Type="Text/JavaScript">
//==========================================================================================================
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function commanderoutvalana()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{//commande la tension analogique de sortie en fonction d'une valeur saisie : voie 1
var octet;
if (vala1.value >= 0 && vala1.value <= 255)
{
octet = vala1.value;
}
else {alert("La valeur doit etre comprise entre 0 et 255!");}
//pour lancer le prg
var w = new ActiveXObject("WScript.Shell");
if (choix[1].checked)
{
try { w.run ("d:\\tp_ihm_html\\intfctrl.exe -va1 "+octet,0,true); }
catch (erreur) {}
}
else
{
try { w.run ("d:\\tp_ihm_html\\intfctrl.exe -va2 "+octet,0,true); }
catch (erreur) {alert('erreur',erreur);}
}
NB04/12/2011 3/5
Noms des élèves : Classe : STI2D-SIN
}
</script>
<script Type="Text/JavaScript">
//==========================================================================================================
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function commanderoutvalana1() //~~ Exe ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{//commande la tension analogique de sortie en fonction d'une valeur saisie : voie 1
var octet;
if (vala1.value >= 0 && vala1.value <= 255)
{
octet = vala1.value;
}
else {alert("La valeur doit etre comprise entre 0 et 255!");}
//pour lancer le prg
var w = new ActiveXObject("WScript.Shell");
try { w.run ("d:\\tp_ihm_html\\intfctrl.exe -va1 " ,octet,true);}
catch (erreur) {alert('erreur',erreur);}}
</script>
<script Type="Text/JavaScript">
//==========================================================================================================
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function commanderoutvalana2() //~~ Exe ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{//commande la tension analogique de sortie en fonction d'une valeur saisie : voie 2
var octet;
if (vala2.value >= 0 && vala2.value <= 255)
{
octet = vala2.value;
}
else {alert("La valeur doit etre comprise entre 0 et 255!");}
//pour lancer le prg
var w = new ActiveXObject("WScript.Shell");
try { w.run ("d:\\tp_ihm_html\\intfctrl.exe -va2 ",octet,true);}
catch (erreur) {alert('erreur',erreur);}}
</script>
<script Type="Text/JavaScript">
//=============================================================================================================
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function commanderoutbitrun() //~~ Exe ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{//commande bit par bit les sorties à partir de cases à cocher
var octet;
octet = 0;
if (d7.checked == true){octet = octet +128;}
if (d6.checked == true){octet = octet +64;}
if (d5.checked == true){octet = octet +32;}
if (d4.checked == true){octet = octet +16;}
if (d3.checked == true){octet = octet +8;}
if (d2.checked == true){octet = octet +4;}
if (d1.checked == true){octet = octet +2;}
if (d0.checked == true){octet = octet +1;}
//pour lancer le prg
var w = new ActiveXObject("WScript.Shell");
try { w.run ("d:\\tp_ihm_html\\intfctrl.exe -vb "+octet,0,true); }
catch (erreur) {alert('erreur',erreur);}}
</script>
<script Type="Text/JavaScript">
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function commanderoutvalrun()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{//commande la sortie en fonction d'une valeur saisie dans un champ de saisie text
var octet;
if (valnum.value >= 0 && valnum.value <= 255)
{
octet = valnum.value;
}
else {alert("La valeur doit etre comprise entre 0 et 255!");}
//pour lancer le prg
var w = new ActiveXObject("WScript.Shell");
try { w.run ("d:\\tp_ihm_html\\intfctrl.exe -vb "+octet,0,true);}
catch (erreur) {alert('erreur',erreur);}}
</script>
</p>
</BODY></HTML>
NB04/12/2011 4/5
Noms des élèves : Classe : STI2D-SIN
Document Ressource :
Logiciel de pilotage de la carte d’interfaçage P8055
Cet ensemble logiciel permet de piloter une carte d’interface d’entrée-sortie VELLEMAN P8055.
Installation :
1. Exécuter le logiciel SETUP.EXE. Laisser les valeurs par défaut et valider tous les écrans jusqu’à
l’installation finale.
Remarque : Il peut être nécessaire de disposer de droits d’administrateurs pour cette installation.
2. Raccorder un câble USB entre l’ordinateur et la carte P8055
Principe de fonctionnement
Le fichier Index.HTM assure, grâce aux codes qu’il comporte, trois fonctions :
o affichage d’informations (titre, images, etc.…)
o prise en compte d’informations données par l’utilisateur (cases à cocher, champ de
saisie, etc.….)
o transmission des informations au programme intfctrl.exe
Le programme intfctrl reçoit les informations type de données et données et active les ports d’entrée-
sortie de la carte P8055.
Le format d’échange entre index.htm et intfctrl.exe se fait sous forme de paramètres. En effet le fichier
index.htm provoque l’exécution de intfctrl.exe en lui transmettant les deux paramètres type et donnée.
Les paramètres possibles sont :
o –vb : transmission d’une valeur numérique comprise entre 0 et 255 pour commander
les sorties numériques.
o –va1 : transmission d’une valeur numérique comprise entre 0 et 255 pour commander
la sortie analogique de la voie 1 de la carte.
o –va2 : transmission d’une valeur numérique comprise entre 0 et 255 pour commander
la sortie analogique de la voie 2 de la carte.
Par exemple intfctrl.exe –vb 255 : provoque la mise à 1 des 8 sorties logiques de la carte.
NB04/12/2011 5/5