Lecture du port parallèle sous XP par interruption externe [Résolu]

Messages postés
4
Date d'inscription
mercredi 8 octobre 2003
Dernière intervention
21 décembre 2015
- - Dernière réponse : cs_louis14
Messages postés
788
Date d'inscription
mardi 8 juillet 2003
Dernière intervention
8 mars 2017
- 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.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
61
Date d'inscription
mardi 10 mai 2005
Dernière intervention
4 juillet 2013
3
Merci
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).

Une solution de repli existe néanmoins avec une légère adaptation matérielle qui consiste à mémoriser le front d'interruption par un niveau et procéder à un polling toutes les 50 ms.
Voir également
http://www.cppfrance.com/codes/PORT-PARALLELE-BUS-I2C-AVEC-PCF8574A-24C32-PCF8591_37144.aspx

http://paulfjujo.free.fr/PULSE/pulse_reccorder.htm

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)

Cordialement.

Merci jibob 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de jibob
Messages postés
788
Date d'inscription
mardi 8 juillet 2003
Dernière intervention
8 mars 2017
3
Merci
bonjour, ùje pense que ces éléments te seroint utiles:
http://www.codeproject.com/KB/cs/csppleds.aspx
http://www.codeproject.com/KB/cs/control_e_appliances.aspx
http://www.codeproject.com/KB/system/steppermotorcontrol.aspx



louis14

Merci cs_louis14 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_louis14
Messages postés
4
Date d'inscription
mercredi 8 octobre 2003
Dernière intervention
21 décembre 2015
0
Merci
Ces liens sont intéressants, mais ne traitent pas de la gestion d'interruptions externes par la patte 10 du port.

Merci pour ta réponse.
Commenter la réponse de mfilleau
Messages postés
788
Date d'inscription
mardi 8 juillet 2003
Dernière intervention
8 mars 2017
0
Merci
cherche sr le même site avec comme mot-clé "parallel port".
http://www.codeproject.com/KB/vb/PortAccess.aspx#HowdoestheSurveillancesystemandSampleApplicationRuns8

louis14
Commenter la réponse de cs_louis14

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.