| From | launay <pierre dot launay at ac-rennes dot fr> |
| Subject | Re: [gulliver] progammation sur port parallele |
| Date | Sat, 06 May 2006 15:14:42 +0200 |
Tu peut faire un driver pour piloter ton port série et ensuite écrire un programme qui utilise ce driver.
Voici un article qui survole la chose: http://www.freesoftwaremagazine.com/articles/drivers_linux
Attention le port parallèle est diffirent du port série. Pour une application simple le port parallèle est plus simple à gérer.
Le Samedi 6 Mai 2006 00:31, chris a écrit :attention tu vas allumer puis éteindre un relais toutes les 30 ms, ce qui est très court pour un relais et ne le fait pas trop souvent les relais ont un nombre limité d'allumage.
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
Pour le commander en user j'utilise la solution ci dessous :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.
Un dernier conseil pour commander des relais, pour chaque relaisQui 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
---- Liste gulliver ----
Se d�sinscrire, mailto:gulliver-unsubscribe at listes dot gulliver dot eu dot org
GULLIVER, http://gulliver.eu.org/
---- Liste gulliver ---- Se d�sinscrire, mailto:gulliver-unsubscribe at listes dot gulliver dot eu dot org GULLIVER, http://gulliver.eu.org/