Utilisateur anonyme
-
25 août 2009 à 13:50
cs_louis14
Messages postés793Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention10 février 2021
-
4 sept. 2009 à 14:01
Bonjour,
Je réalise un système de commande domotique à l'aide d'un micro PC portable (tournant sous Windows XP) ne possèdant pas de port série RS232, mais un port parallèle que j'envisage d'utiliser avec Borland C++ Builder5 pour communiquer avec un automate.
Mon souci est de trouver une librairie (dll, composant, ...) me permettant de déclencher une lecture du port parallèle à la réception d'une interruption provoquée par un signal de l'automate sur une des lignes du port parallèle.
Est-ce qu'une telle possibilité existe?
Si oui, je serai ravi d'avoir les références du code correspondant.
Par avance, merci.
A voir également:
Lecture du port parallèle sous XP par interruption externe
jibob
Messages postés59Date d'inscriptionmardi 10 mai 2005StatutMembreDernière intervention 4 juillet 2013 2 sept. 2009 à 18:30
Bonjour,
Au niveau du port parallèle PC, pas de souci la ligne ACK* (broche 10) permet de réaliser cela, car relié au contrôleur d'interruption PIC 8259, généralement par la ligne IRQ7.
Sous Linux, il existe des sources d'exemples toutes prêtes à recompiler.
Pour ce qui est de la manipulation des I/O du port parallèle sous XP (lire l'intégralité de l'article, sinon la fonction donnée en exemple ne fonctionnera pas)
http://support.microsoft.com/kb/823179/fr
Pour accéder au routine d'interruption sous XP, il est nécessaire de passer par un driver (*.sys) puis une DLL qui sert d'intermédiaire.
Pour gérer le signal IRQn, il faut détourner la routine d'interruption (ISR) vers sa propre fonction mais également autoriser la ligne IRQ, puis acquitter l'interruption dans la fonction ISR (voir le DDK).
Pour mémoriser le changement d'état, utiliser une bascule d'un 74HCT74 (DATA relié au + 5 V) reliant la ligne d'interruption de l'automate à l'entrée CLOCK (front montant) et relier sa sortie à une des entrées du port (exemple: ERROR)
Créer un thread pour tester cette entrée ERROR toutes les 50 millisecondes puis l'effacer après lecture (avec signal STROBE* passant de +5V/0V/+5V relié à l'entrée CLEAR* de la bascule 74HCT74)