Forum Linux.général Echo vers port parallele (lp0)

Posté par  .
Étiquettes : aucune
0
5
nov.
2004
Bonjour,

j'ai realisé un montage tres simple avec en gros une LED sur chacune des 8 sorties controlables du port parallele et reliées a la masse du port.

Mon but est de faire s'allumer les diodes connectées selon l'octet que j'envoi sur le port // (chacune correspondant a un bit).

j'ai essayé ca : "echo + > /dev/lp0" histoire d'envoyer l'octet correspondant au code ascii du caractere '+'.

Malheureusement, une fois la commande validée, ca attends, comme si rien ne se passait. j'arrive a recuperer le prompt avec Ctrl+C seulement. C bloqué.

De meme avec un prog en C qui essaye d'ecrire dans /dev/lp0.

une idée ? :)


Petite precision, mon port // est configuré en spp + epp, ca peut changer quelque chose ?

sinon, avec un prog windows j'arrive a faire ce que je veux mais le but final est faire ca sous linux. Est-il possible que ca vienne du fait que Windows ecrit direct dans les registres d'ecriture et que linux fait autrement ?

merci
  • # J'ai un exemple

    Posté par  . Évalué à 1.

    J'avais cxodé un prog python qui communiquait avec le port parallèle en lançant un programme en C.
    Le prog est dispo sur http://pinaraf.robertlan.eu.org/traceur.c(...)
    • [^] # Re: J'ai un exemple

      Posté par  . Évalué à 1.

      Explication :
      j'avais codé ce programme pour les TPE, il s'agissait de contrôler un traceur branché sur le port parallèle.
      La fonction qui envoie les données est
      void alterne (int up, int down, int periode, int times)
      en gros, elle se charge d'envoyer times fois avec un intervalle de periode micro secondes alternativement le signal up puis le signal down sur les huit broches (=> up et down entiers < 255)
      J'utilise la libieee1284 qui m'a permis de me débarasser de tous les problèmes que j'avais en essayant de faire ça avec la façon que tu décris.
  • # code C

    Posté par  . Évalué à 2.

    il faut d'abord faire un ioperm sur le port lpt (ici 0x378)

    ioperm(0x378, 3, 1);

    ensuite il suffit d'envoyer ton octet avec outb. remarque: outb nécessite que tu compile ton prog avec -O ou -O2.

    outb(octet, 0x378);

    et quand tu as fini, tu libère le bouzin

    ioperm(0x378, 3, 0);

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.