vendredi 2 février 2007

Appel des interruptions logicielles en Delphi

Bien que l'accessibilitée de ces interruptions soient limitées, je vais vous présenter deux d'entre elles.

La première concerne la gestion des débordements. Si vous écrivez


asm
int $4
end;


vous produirez une exception EIntOverflow, débordement d'entier. Je vous le consède bien volontier, ceci n'a pas grand interêt. La deuxième interruption que l'on peut appeler et celle qui gère les points d'arrêts.

asm
int $3
end;

int $3 est l'interruption logicielle prévue par Intel pour gérer les points d'arrêt. A ce moment là, le processeur passe en mode noyau et donne la main au système windows, qui fera remonter l'info au debugger de Delphi. Le programme va s'arrêter en mode pas à pas dans Delphi sur l'instruction pascal qui suit cet appel à int $3.

Cet appel fait penser à la fonction de l'api windows : DebugBreak. Par contre DebugBreak provoque l'affichage de la vue CPU dans Delphi. On ne se retrouve pas en arrêt sur une ligne pascal.

jeudi 1 février 2007

Contrôle d'une carte à relais en PHP

Le kit Velleman K8056 permet de construire une carte comprenant 8 relais commandés par un port série RS232. Voici comment contrôler cette carte en PHP sur une machine linux.

Il existe une version linux du programme de contrôle de la carte k8056. Vous pouvez le trouver ici : http://k8056.free.fr

Un fois le programme compilé, il s'agit de le lancer via PHP. Cette page minimaliste vous montre comment faire :


';
echo '';
$last = system($interface,$retval);
echo "derniere ligne : ". $last;
echo "valeur retournée:" . $retval;
echo '';
echo '';
?>


Cette page part du principe que le programme de lancement se trouve dans /usr/local/bin/k8056_20051007/
A vous d'adapter le chemin en fonction de votre contexte. Dans le cas présent le port et la commande à envoyer sont en dur. Rien n'empêche de récupérer des paramètres par un formulaire.

Il vous faudra aussi faire attention aux droits d'accès au programme k8056.

Voilà