[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

progammation sur port parallele


From chris <cj-libre at tele2 dot fr>
Subject progammation sur port parallele
Date Sat, 6 May 2006 00:31:18 +0200

Bonjour

Je suis en train de m'amuser avec mon port parallèle, mais les divers 
programme que je trouve sur le net nécessite d'être root pour être exécuté.
Voici le code source que j'utilise :

#include <stdio.h>
#include <sys/io.h>
#include <asm/io.h>
#include <unistd.h>
//Puis nous définissons BASEPORT avec l'adresse du port à utiliser :
#define BASEPORT 0x378
//Ensuite nous pouvons commencer notre programme :
int main(void)
{
unsigned int i=0; // compteur pour l'accès aux relais
unsigned int r=1; //compteur pour le numéro du relais
   //Cette ligne permet de demander un accès au port
   //si l'accès est refusé le programme se termine avec une erreur
if(ioperm(BASEPORT,3,1)){perror("ioperm");exit(1);}
   //Comme il n'y a pas eu d'erreur, nous pouvons entrer dans une
   //boucle qui activera puis désactivera les huit relais les uns 
   //après les autres
while(r<9)
{
usleep(30000); //attendre
outb(i,BASEPORT); //on envoie la valeur de i sur 0x378
printf("Relais %d : ON\n", r); //on affiche que le relais n° r est allumé
usleep(30000); //attendre
outb(0,BASEPORT); //on envoie 0 sur 0x378
printf("Relais %d : OFF\n", r); //on affiche que le relais n° r est éteint
i=i*2; //on double la valeur de i pour accéder au prochain relais
r++; //on incrémente le numéro du relais
i++;
}
return(0);
}

Pour l'instant, c'est un programme de base, mais je cherche à écrire en mode 
user sur ce port parallèle, ce que ne permet pas les fonction ioperm ou 
outb.

Qui peut me fournir des pistes pour résoudre ce problème, mes recherches sur 
google, sont pour l'instant négative.

Merci pour toute aide

Christophe JOSSELIN