Communication série, 2011/2012, TD1 : Différence entre versions
| Ligne 19 : | Ligne 19 : | ||
On veut créer une site web où on entre des caractères, qui sont envoyé en parallèle vers une liaison série puis ils nous reviennent en parallèle. | On veut créer une site web où on entre des caractères, qui sont envoyé en parallèle vers une liaison série puis ils nous reviennent en parallèle. | ||
| − | + | <!DOCTYPE html> | |
| − | |||
| − | <! | ||
<html> | <html> | ||
<head> | <head> | ||
<meta charset="utf-8" /> | <meta charset="utf-8" /> | ||
| − | <title>Communication | + | <title>Communication série</title> |
</head> | </head> | ||
<body> | <body> | ||
| + | <script type="text/javascript" src="prototype.js"></script> | ||
| + | <p> <h1> Entrée des caractères</h1> <br/> | ||
| + | <FORM METHOD="POST" ACTION="pageWebProjet.html" enctype="multipart/form-data"> | ||
| + | <TABLE BORDER=0> | ||
| + | <TR> | ||
| + | <TD> entrer les caractères<TD> <TD><INPUT type=text name="char"> | ||
| + | </TD> <TD> <INPUT type="submit" value="Envoyer"> </TD> | ||
| + | |||
| + | </TR> | ||
| + | </TABLE> | ||
| + | </FORM> | ||
| + | <?php | ||
| + | /* Prepare the read array */ | ||
| + | $read = array($stream1, $stream2); | ||
| + | $write = NULL; | ||
| + | $except = NULL; | ||
| + | if (false === ($num_changed_streams = stream_select($read, $write, $except, 0))) { | ||
| + | /* Error handling */ | ||
| + | } elseif ($num_changed_streams > 0) { | ||
| + | /* At least on one of the streams something interesting happened */ | ||
| + | } | ||
| + | ?> | ||
| + | |||
| + | <?php | ||
| + | // Quelques constantes | ||
| + | |||
| + | define('SOCKET_ECRITURE','/tmp/serial.send'); | ||
| + | define('SOCKET_LECTURE','/tmp/serial.recv'); | ||
| + | |||
| + | // Test de lecture de 8 octets | ||
| + | |||
| + | $fe=fsockopen('unix://'.SOCKET_ECRITURE); | ||
| + | if(!$fe) die("fsockopen,write\n"); | ||
| + | $fl=fsockopen('unix://'.SOCKET_LECTURE); | ||
| + | if(!$fl) die("fsockopen,read\n"); | ||
| + | if(fwrite($fe,"\0")!=1) die("fwrite\n"); | ||
| + | for($i=0;$i<8;$i++){ | ||
| + | $byte=fread($fl,1); | ||
| + | if(strlen($byte)!=1) die("fread\n"); | ||
| + | printf("%02x\n",ord($byte[0])); | ||
| + | } | ||
| + | fclose($fe); | ||
| + | fclose($fl); | ||
| + | ?> | ||
| + | |||
| + | |||
| + | </p> | ||
| + | <br><br> | ||
| + | <p> <h2> Champ de reception <h2><br/> | ||
| + | <form method=get action="pageWebProjet.html"> | ||
| + | <table border=0> | ||
| + | <tr> <td> | ||
| + | <textarea name="sortie" rows="2" cols="15"> | ||
| + | </textarea> | ||
| + | </td></tr> | ||
| + | </table> | ||
| + | </form> | ||
| + | </p> | ||
| + | |||
</body> | </body> | ||
</html> | </html> | ||
Version du 28 mars 2012 à 10:23
Partie électronique:
Mercredi 21 Mars 2012:
On a en entrée un signal sur 8 bits en parallèle.
On a une liaison série qui est toujours à 1, tant qu'on ne transmet pas de données.
A l'appui sur un bouton, on met le signal en série et on l'envoit sur la liaison.
Le signal est réceptionné et remit en parallèle.
Mercredi 28 Mars 2012:
Sur la nanoboard, la LED est allumée tout le temps. Sauf quand on appui sur le bouton et on le relache, au bout de 8 temps d'horlogela LED clignote suivant les entrées qu'on lui à mise (mais au moins une fois pour le bit de start). Et après 9 temps la LED reste allumée.
Partie informatique:
On veut créer une site web où on entre des caractères, qui sont envoyé en parallèle vers une liaison série puis ils nous reviennent en parallèle. <!DOCTYPE html> <html>
<head>
<meta charset="utf-8" />
<title>Communication série</title>
</head>
<body>
<script type="text/javascript" src="prototype.js"></script>
Entrée des caractères
<FORM METHOD="POST" ACTION="pageWebProjet.html" enctype="multipart/form-data">
| entrer les caractères | <INPUT type=text name="char"> | <INPUT type="submit" value="Envoyer"> |
</FORM> <?php /* Prepare the read array */ $read = array($stream1, $stream2); $write = NULL; $except = NULL; if (false === ($num_changed_streams = stream_select($read, $write, $except, 0))) { /* Error handling */ } elseif ($num_changed_streams > 0) { /* At least on one of the streams something interesting happened */ } ?>
<?php // Quelques constantes
define('SOCKET_ECRITURE','/tmp/serial.send'); define('SOCKET_LECTURE','/tmp/serial.recv');
// Test de lecture de 8 octets
$fe=fsockopen('unix://'.SOCKET_ECRITURE); if(!$fe) die("fsockopen,write\n"); $fl=fsockopen('unix://'.SOCKET_LECTURE); if(!$fl) die("fsockopen,read\n"); if(fwrite($fe,"\0")!=1) die("fwrite\n"); for($i=0;$i<8;$i++){
$byte=fread($fl,1);
if(strlen($byte)!=1) die("fread\n");
printf("%02x\n",ord($byte[0]));
}
fclose($fe); fclose($fl); ?>
Champ de reception <h2>
<form method=get action="pageWebProjet.html">
<textarea name="sortie" rows="2" cols="15">
</textarea>
</form>
</p>
</body>
</html>
<textarea name="sortie" rows="2" cols="15"> </textarea>

