La dernière étape du projet est la création du programme informatique permettant de contrôler la carte. Pour simplifier la programmation, j'ai développé une librairie qui permet de contrôler indépendamment chaque port via une fonction d'ouverture et de fermeture mais aussi de lire les entrées (heureusement!). Pour que les programmes soient opérationnels sous tous les Windows, j'ai utilisé une librairie de contrôle du port parallèle. Cette librairie est gratuite, il suffit de la copier avec la librairie de contrôle de la carte et l'exécutable de votre programme (donc pour que votre programme soit opérationnel, il faut la librairie de la carte, celle du port // et l'exécutable de votre programme).


L'exemple que je vais montrer à été programmé en Delphi, mais il est clair que la traduction des commandes n'est pas une chose difficile. La première étape est d'implémenter la dll dans le programme, de cette manière: Dans la zone implémentation mettez:

implementation
function setup(port, temps:integer):integer;Stdcall;external 'Driver.dll' name 'setup';
function open(porte:integer):integer;Stdcall;external 'Driver.dll' name 'open';
function closed(porte:integer):integer;Stdcall;external 'Driver.dll' name 'close';
function readin(porte:integer):boolean;Stdcall;external 'Driver.dll' name 'readin';
function setdown():integer;Stdcall;external 'Driver.dll' name 'setdown';


La fonction 'setup' est nécessaire pour configurer, elle doit être appelée avec les bons paramètres à chaque exécution du programme. Le premier paramètre 'port' est l'adresse du port parallèle, par défaut celui-ci est 888 mais peut varier suivant si vous avez plusieurs port... Le paramètre 'temps' permet de configurer le temps que la librairie doit attendre avant d'envoyer une seconde information sur le port parallèle ainsi que le temps de l'impulsion à envoyé. Setup renvoie "1" si tout à bien été initialisé mais "0", s'il y a un problème. En effet, si vous avez un lecteur zip ou autres périphériques, le système lit continuellement le port et écrit dessus, pour empêcher la carte de malfonctionner à cause de ça, la fonction setup vérifie que l'OS n'écrit pas sur le port. Pour cette raison, l'initialisation prend un peu plus d'une seconde.

La fonction 'open' permet d'ouvrir une porte (la passer à l'état haut). Le paramètre porte est le numéro de la porte à ouvrir 1 à 21. Si vous essayez d'ouvrir deux fois la même porte, rien ne se passe... J'ai optimisé la librairie ;)

La fonction 'closed' est tout simplement l'inverse de la fonction open. La fonction s'appelle 'closed' uniquement parce qu'une fonction 'close' existe déjà en delphi.

La fonction 'readin' permet de lire une porte, elle renvoie 'true' si la porte est à l'état haut et 'false' si la porte est à l'état bas. Encore une fois, si vous lisez 2 fois la même porte d'affiliée, la deuxième fois sera beaucoup plus rapide que la première fois, la carte étant déjà configurée sur la bonne porte, il ne suffit plus que de lire.

La fonction 'setdown' est l'inverse de 'setup', elle permet uniquement de fermer toutes les sorties de la cartes, elle peut-être utilisée en cours de fonction tout comme à la fin de l'utilisation de la carte. L'utilité est surtout d'être sur que tout est coupé à la fermeture du programme. Si vous utilisez cette fonction en cours de programme, vous n'êtes pas obligé de refaire le setup après, elle n'efface pas les données initialisées.

Je distribue un programme démo, ça ne signifie pas qu'il y a une version complète payante, démo signifie démonstration de programmation. Pour montrer le fonctionnement des fonctions. Voir téléchargement.

Pour ceux qui désirent programmer en C# le driver s'utilise en créant la classe suivante:

using System.Runtime.InteropServices;
class domocarte {
[DllImport("Driver.dll", EntryPoint = "setup")]
public static extern int setup(int port, int temps);
[DllImport("Driver.dll", EntryPoint = "open")]
public static extern int open(int porte);
[DllImport("Driver.dll", EntryPoint = "close")]
public static extern int closed(int porte);
[DllImport("Driver.dll", EntryPoint = "readin")]
public static extern bool readin(int porte);
[DllImport("Driver.dll", EntryPoint = "setdown")]
public static extern int setdown();
}


Téléchargement : Voir les fichiers de téléchargements