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

mfilleau 4 Messages postés mercredi 8 octobre 2003Date d'inscription 21 décembre 2015 Dernière intervention - 25 août 2009 à 13:50 - Dernière réponse : cs_louis14 788 Messages postés mardi 8 juillet 2003Date d'inscription 8 mars 2017 Dernière intervention
- 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
jibob 61 Messages postés mardi 10 mai 2005Date d'inscription 4 juillet 2013 Dernière intervention - 2 sept. 2009 à 18:30
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 121 internautes ce mois-ci

Commenter la réponse de jibob
Meilleure réponse
cs_louis14 788 Messages postés mardi 8 juillet 2003Date d'inscription 8 mars 2017 Dernière intervention - 4 sept. 2009 à 09:25
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 121 internautes ce mois-ci

Commenter la réponse de cs_louis14
mfilleau 4 Messages postés mercredi 8 octobre 2003Date d'inscription 21 décembre 2015 Dernière intervention - 4 sept. 2009 à 11:56
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
cs_louis14 788 Messages postés mardi 8 juillet 2003Date d'inscription 8 mars 2017 Dernière intervention - 4 sept. 2009 à 14:01
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.