[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