Port série de la Fox Board G20 en php

11 nov Port série de la Fox Board G20 en php

Afin de préparer la connexion de la FoxBoard G20 au réseau CAN, voici un bout de code permettant de gérer une communication RS232 en PHP.


Les ports /dev/ttyS1 à /dev/ttyS6 fonctionnent avec une tension de 3,3V. N’ayant pas encore préparé ma carte CANG20 afin de convertir ces 3,3V en 5V, je me suis amusé avec le port /dev/ttyS0 qui est normalement dédié à la console.

Le port /dev/ttyS0 de la FoxBoard

Bits par seconde : 115200
Bits de données : 8
Parité : Aucun
Bits d’arrêt : 1

Ouverture du port série de la Fox Board G20 en PHP

L’ouverture est des plus simples puisqu’il suffit de la considérer comme un fichier :

$fp = fopen("/dev/ttyS0","r+b");
if (!$fp)
{
echo date("<br>d/m/Y H:i:s")." : ERREUR : $errno – $errstr<br />\n";
}

Fermeture du port série de la FoxBoard G20 en PHP

fclose($fp);
unset($fp);

Envoi d’une donnée au port série de la Fox Board G20 en PHP

Toujours aussi simple, puisqu’un fwrite est suffisant

fwrite($fp,"Essai");

Code source pour communiquer avec le port série de la Fox Board G20

Nous allons ouvrir le port, envoyer une donnée puis fermer le port… :

<?php
echo "\n– Ouverture du port –\n";
OpenClosePort(true);

WaitMilliSec(100);

try {
echo "essai d’envoi\n";
fwrite($fp,"Essai");
} catch (Exception $e) {
echo ‘Exception reçue : ‘, $e->getMessage(), "\n";
}

echo "\n– Fermerture du port –\n";
OpenClosePort(false);

function OpenClosePort($Stat){

global $fp, $StatPort;

// ouverture du port série
// ————————–
if($Stat)
{ // si ouverture
echo date("d/m/Y H:i:s")." : Ouverture de /dev/ttyS0\n";
$fp = fopen("/dev/ttyS0","r+b");
if (!$fp)
{
echo date("<br>d/m/Y H:i:s")." : ERREUR : $errno – $errstr<br />\n";
}
}
else{
// fermeture du port série
// ————————–

echo date("d/m/Y H:i:s")." : fermeture de la connexion\n";
fclose($fp);
unset($fp); // le fermer
}
}

function WaitMilliSec($DelaiMilliSeconde){
usleep($DelaiMilliSeconde*1000);
}
?>

Be Sociable, Share!
No Comments

Post A Comment