Bonsoir à tous,
Je cherche à contrôler le port parallèle depuis un programme C, et notamment les lignes de contrôle (Strobe, Ack ...).
L'idée est de développer une interface de programmation pour programmateur PIC (des microcontrôleurs assez sympa) de type PROPIC2, qui change un peu de ça : http://www.propic2.com/ScreenShot.htm(...) et qui fonctionne sous Linux. Le programmateur lui-même se branche sur le port parallèle.
Le problème est que je souhaite produire quelque chose de relativement portable et que je n'ai que peu d'expérience en bas niveau sous Linux.
Il y a-t-il un moyen de contrôler ces lignes à l'aide de ioctl et assimilés, ou faut-il se résoudre à attaquer directement les ports I/O en assembleur, ce qui est très motivant en soi, mais pas pour un logiciel qui se veut portable, encore moins s'il s'agit de faire des opérations aussi « élémentaires » ?
Merci !
PS: Le dictionnaire ne connaît pas « microcontrôleurs ».
# Controller le port parallèle
Posté par Cook Captain . Évalué à 3.
Si tu veux faire du portable, il existe une petite api, développée en C, disponible sous Linux et Windows et qui peut être attaqué en Java : http://www.geocities.com/Juanga69/parport/(...)
Sur leur page d'accueil, tu trouveras pas mal d'infos intéressantes (particulièrement dans la section links).
[^] # Re: Controller le port parallèle
Posté par Obsidian . Évalué à 2.
Par contre, je ne suis descendu que rarement en dessous du userland sous Linux, d'où mon message. Je pense que je n'aurais pas trop de mal à piloter ces interfaces directement, mais la difficulté est justement d'utiliser ce qui existe déjà, et au bon niveau.
Exemple : Il y a quelques temps, j'avais voulu écrire un pilote pour lire les disquettes de mon vieux TO8D de 1985. Celui-ci utilisait un lecteur qui était pratiquement celui du PC, mais avec un formattage un peu différent (640 Ko, 256 octets par secteur). Le lecteur en question proposait déjà les fonctions de base (polling) et celles dites « intelligentes » comme la recherche automatique de secteur, le tout au travers de 13 ports d'entrées/sorties hardware. Connaissant bien le pilote de mon TO8D pour l'avoir désassemblé et commenté, je me suis mis en tête d'en faire un sous Linux. J'ai très vite rencontré des difficultés, mais surtout je me suis aperçu que quelqu'un en avait déjà réalisé un, en utilisant exactement les mêmes ports, de la même façon, mais le tout en userland via ioctl. Cela m'a paru évident lorsque j'ai eu les sources sous les yeux, mais je n'y aurais jamais pensé seul.
C'est pour cela que je me suis dit que, le format de port parallèle étant relativement constant d'une architecture à l'autre, dans le sens où il faut piloter les mêmes imprimantes, et le modèle restant simple (8 bits de données, une ligne de strobe, une ligne de ack), il devait exister quelque chose pour faire cela.
[^] # Re: Controller le port parallèle
Posté par David Decotigny (site web personnel) . Évalué à 2.
Exemple de prog de test pour controler le registre de donnees :
Evidemment, cet exemple est facilement adaptable pour controler les 2 autres registres (remplacer DATA par STATUS et CONTROL). Pour modifier ce source, voir l'API definie dans ppdev.h de include/linux/ . Dans le source, on utilise le mode de base du port // : tous les autres modes sont dispo (en particupier EPP).
Sous windows, j'ai pas trouve mieux que d'utiliser inpout32.dll qui permet de se ramener au niveau inb/outb a la main. Peut-etre qu'une ecriture toute bete sur le "fichier" "LPT1" suffit.
[^] # Re: Controller le port parallèle
Posté par Obsidian . Évalué à 2.
Un grand merci, je m'y mets de suite.
[^] # Re: Controller le port parallèle
Posté par kb . Évalué à 2.
http://people.redhat.com/twaugh/parport/html/parportguide.html(...)
# De mémoire
Posté par Ph Husson (site web personnel) . Évalué à 3.
Sinon tu peux attaquer directement les IO sans assembleur (mais en root)
(man ioperm/inb/outb)
# Manière simple
Posté par mykey . Évalué à 1.
http://mykey57.free.fr/?rub=documents&page=cours&mat=inform(...)
ou en simplifié: http://mykey57.free.fr/rubriques/documents/cours/bts_iris/informati(...)
Amuse toi bien ++
[^] # PS Manière simple
Posté par mykey . Évalué à 1.
++
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.