Vous êtes sur la page 1sur 5

Noms des élèves : Classe : STI2D-SIN

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 ?

Développement de la problématique : Il s’agit par cette activité d’installer et


d’utiliser une carte d’interface de communication. L’interface Homme-Machine est
constituée d’une page HTML en liaison avec un logiciel de pilotage de la carte.

Durée du TP : 3 heures.

1/ Procéder à l’installation de l’ensemble logiciel en suivant le document ressource.


2/ Ouvrir le fichier index.htm, et placer en titre le nom des deux membres du binôme. Quelle balise
faut-il utiliser pour mettre un titre dans un fichier HTML.
<TITLE> texte </TITLE>
3/ Modifier le fichier afin que la page présente le titre et l’image de la carte. Faire vérifier le résultat par
le professeur.
Balise pour l’image : <p><img src="P8055.jpg" width="511" height="309"></p>

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().

Après analyse du code de la fonction, déterminer


le nom que doivent porter les cases à cocher.
Les noms des cases à cocher sont utilisées dans la fonction javascript : d0 à d7
Ecrire le code qui permet l’affichage de ces cases.
5/ Expliquer, après analyse de la fonction Commandeoutbitrun(), comment l’état des
cases à cocher se transforme en valeur numérique (donnee).
Chaque case à cocher correspond à une puissance de 2 (2n où n est le numéro de la
case). Il suffit donc de vérifier si la case est cochée et si oui d’ajouter la valeur qui lui
est associée à une variable appelée octet.
6/ Faire valider le fonctionnement de la commande par le professeur

7/ On souhaite à présent commander les 8 sorties logiques


par une valeur numérique directement. Modifier l’IHM pour
obtenir le résultat escompté.
Quelle fonction javascript présente dans index.htm faut-il
utiliser ? Justifier.
commanderoutvalrun(); car d’après le document ressource le paramètre dans
ce cas est –vb or cela ne peut pas être la fonction vue précédemment

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()

Faire vérifier le fonctionnement


6/ Par quel moyen est-il possible de distinguer le bouton radio 1 du bouton radio 2 ?
Expliquer
Par choix[1] ou choix[2]. Ce qui est entre crochet sélectionne la case.
7/ Pour les 5 valeurs ci-dessous, donner les tensions de sortie :
Valeur Tension (volt)
0 0
1 19mV
100 1,9V
200 3,8V
255 4,8V
8/ Expliquer ces réponses
Chaque incrément fait progresser la tension de sortie de 19mV. Soit 5V/256 5V étant la tension
8
d’alimentation et 256=2 soit le nombre de valeurs maximales avec un mot de 8bits.

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

Vous aimerez peut-être aussi