PowerAnt: Apprenez à votre Ordinateur à Piloter le Monde Réel
PowerAnt peut commander 14 appareils externes et plus, ceci depuis votre ordianteur, via le port RS232. Le protocole de communication est simple à mettre en oeuvre et vous trouverez une description complète dans le manuel de programmation. Les équipements électriques à piloter peuvent aller jusqu'à 200W. Possible de piloter des appareils à partir de MS Excel ?
 PowerAnt
Description
Applications
Caractéristiques
Documentation
Photos
 Modèles de PowerAnt
SwSe
SwSw
SeSe
 Programmation
Exemples en Perl
Exemples en C/C++
MS Access 2000
MS Excel 2000
 Achat
Contenu du paquet
Tarifs
 Nouvelles RSS
 Contacts
 ë  ListTop.Ru Rambler's Top100

Programmation d'un PowerAnt en Perl

Perl est mon langage de programmation favori. Le protocole textuel du PowerAnt a été avant tout conçu pour le programmer en Perl. Chaque commande et chaque réponse du module ne contient que des caractères uniques ce qui rend l'analyse très facile.

Si pour les utilisateur de Linux, la question "Ou puis-je trouver Perl?" n'est plus d'actualité, les utilisateurs de Windows pourrons trouver ActivePerl.

En Natif, Perl ne gère pas le port RS232. Pour lui ajouter le support du port RS232, vous devez installer des modules spécifiques Win32::SerialPort (Pour ActivePerl il nécessite : Win32-API.ppd, Win32-SerialPort.ppd).

Ouvrir le port RS-232 en Perl

#!/usr/bin/perl -w

Utiliser Win32::SerialPort;

$PowerAnts = new Win32::SerialPort('COM2','','') || die "Impossible d'ouvrir le COM2";
$PowerAnts->baudrate(9600) || die "Impossible de configurer en 9600";
$PowerAnts->parity('none') || die "Impossible de configurer la parité none";
$PowerAnts->databits(8)  || die "Impossible de configurer 8 bits de données";
$PowerAnts->stopbits(1)  || die "Impossible de configurer 1 bit de stop";
$PowerAnts->handshake('none')  || die "Impossible de configurer le control de flux matériel inactif";
$PowerAnts->write_settings;
#...........

Fermer le port RS-232 en Perl

#...........
$PowerAnts->close() || die "Fermeture du port impossible, quelquechose ne va pas!\n";;
undef $PowerAnts;

Travailler avec le port RS-232 en Perl

Dans ce morceau de code source est présenté la procédure utilisant la fonction "write" (écrire) pour emmettre des octets vers les modules et la fonction "read" (lire) pour obtenir les octets émis par les modules. La procédure standard "input" (entrée) n'est pas de grande utilité (elle attend juste de recevoir le code 0x0A).

sub pwrant_cmd($){
    my $cmd = shift;
    $PowerAnts->write($cmd."\r");    
    $_ = '';
    do {
    	$_ .= $PowerAnts->read(1);
    } while (! /\r/);
    return $_;
};

$_ = pwrant_cmd("!??");

Detection d'erreur

Si la réponse du module contient le caractère '-', c'est qu'il répond à la négative. Cela signifie donc qu'un problème est surveni. Pour la detection de erreur en Perl vous pouvez utiliser un ligne de text tel:

die "Il y'a un problème\n" if (/-/);

Tester l'état des capteurs en Perl

Par exemple, pour le PowerAnt modèle SwSe le changement d'état du capteur 'K' (de 'k' à 'K') devrait être detecté par le programme suivant:

$_ = pwrant_cmd('?=');
while( ! /K/ ){
	die "Un problème est survenu\n" if (/-/);
	$_ = pwrant_cmd('?%');
};
# Capteur 'K' est actif

Commande de sortie en Perl

Par exemple, faire le programme de chenillard (Le programme peu être utiliser avec le PowerAnt modèles : SwSe et SwSw):

#!/usr/bin/perl -w

use Win32::SerialPort;

$PowerAnts = new Win32::SerialPort('COM2','','') || die "Impossible d'ouvrir le COM2";
$PowerAnts->baudrate(9600) || die "Impossible de configurer en 9600";
$PowerAnts->parity('none') || die "Impossible de configurer la parité none";
$PowerAnts->databits(8)  || die "Impossible de configurer 8 bits de données";
$PowerAnts->stopbits(1)  || die "Impossible de configurer 1 bit de stop";
$PowerAnts->handshake('none')  || die "Impossible de configurer le control de flux matériel inactif";
$PowerAnts->write_settings;

sub pwrant_cmd($){
    my $cmd = shift;
    $PowerAnts->write($cmd."\r");    
    $_ = '';
    do {
    	$_ .= $PowerAnts->read(1);
    } while (! /\r/);
    return $_;
};

$x_on   = 'H';
$x_off  = 'h';
pwrant_cmd("=abcdefgh"); # Eteindre toutes les sorties
while( 1 ){
	$_ = pwrant_cmd("=".$x_off); # Eteindre la sortie donnée par la variable $x_off
	# Test de la réponse
	die "Un problème est survenu\n" if (/-/);
	$x_on++;
	$x_off++;
	if( $x_on gt 'H' ){
		$x_on   = 'A';
		$x_off  = 'a';
	};
	$_ = pwrant_cmd("=".$x_on); # Active la sortie  donnée par la variable $x_on
	# Test de la réponse
	die "Un problème est survenu\n" if (/-/);
	sleep( 1 ); # Attendre 1 seconde
};

$PowerAnts->close() || die "Un problème est survenu\n";;
undef $PowerAnts;

Conclusion

Si Perl est votre langage de programmation favori, et que vous avez le manuel du programmeur du PowerAnt, alors je pense que toute discussion concernant "l'écriture de programmes pour PowerAnt en Perl ?" n'a pas de sens.

PowerAnt peut commander 14 appareils externes et plus, ceci depuis votre ordianteur, via le port RS232. Le protocole de communication est simple à mettre en oeuvre et vous trouverez une description complète dans le manuel de programmation. Les équipements électriques à piloter peuvent aller jusqu'à 200W. Possible de piloter des appareils à partir de MS Excel ?
Traduit par/Translate by Nicolas LE FEVRE -   © 2004-2014 by  www.anthillsolutions.com