Forum Clubic

Besoin d'aide - port parallele en C sous linux

bonjour a tous
je suis nouveau sur ce site mais je m’y connais pas mal en C. j’essaye de controler un led par le port parallele. j’ai fait ce programme qui marche sous XP, mais plante tout le temps (ce programme doit fermer) :


#include <stdio.h>
#include <conio.h>
#include <dos.h>
#define port 0x378

int main()
{
    while(1)
    {
        printf("allume\n");
        _outp(port,0x01);
        sleep(1000);
        printf("eteint\n");
        _outp(port,0x00);
        sleep(1000);
    }   
}

sinon j’ai essaye sous knoppix sur un vieux pc mais segmentation fault :


#include <stdio.h>
#include <unistd.h>
#include <asm/io.h>

#define port 0x378

int main()
{
    ioperm(port,2,1);
printf("port ouvert\n");
outb(255,port);
printf("octet écrit");
ioperm(port,2,0);
printf("port ferme");
return 0;
}

ca plante au moment du outb (il me met port ouvert puis segementation fault)

pouvez vous m’aider?

au fait je me suis servi de cette page :
http://209.85.135.104/search?q=cache:lHvqp…=2&client=opera

merci

edit : j’ai oublie de dire que j’ai utilise userport pour avoir acces sous XP. sinon existe t’il une classe en java pour le faire?

Commence par vérifier les retours des fonctions que tu appels.

Premier code :
ton main devrait retourner quelque chose, du style:


int main()
{
 //ton code

 return 0;
}

pour le java : http://www.rgagnon.com/javadetails/java-0062.html

le programme marche sous windows mais je ne trouve pas pourquoi il plante aussi souvent. il n’exista pas des fonctions simples pour ecrire sur le port, autre que _outp? je pense que cette fonction plante une fois sur 10…

en fait j’essaye juste d’envoyer un signal carre a 50hz par la broche d0

vous savez ou je pourrais trouver un site qui explique comment faire?

merci

C’est normal que ça plante sous Windows, on accède pas au matériel directement comme c’était le cas avant, tu pourras le faire en utilisant winio par contre.

j’ai installe userport je crois que ca me permet d’acceder au port.
en fait ca ne plante pas a chaque fois des fois il marche une minute avant de planter et ma led clignote bien

merci pour le lien, je vais voir si j’arrive à l’utiliser mais a mon avis ce n’est pas de mon niveau de programmation

winio marche avec dev cpp?

Prend le soin de faire un minimum d’effort, tu aurais vu qu’il y a une DLL donc utilisable par n’importe quel langage 32 bits :wink:

ok je vais essayer je ne savais pas que les dll etaient accessibles comme ca.
j’essaye un petit programme je verrai bien si ca marche

non ca me met plein d’erreurs dans winio.h

sinon vous ne savez pas ce qui fait planter les outp? ou comment contourner le probleme?

ou alors un code C qui marche et que je pourrais adapter?
merci

j’ai reussi!!! :bounce:

j’ai utlise inpout32, tres simple a utiliser

tout est la : http://www.logix4u.net/inpout32.htm
et la : http://www.hytherion.com/beattidp/comput/pport.htm

merci encore pour l’aide et desole j’aurais pu trouver tt seul

Ah oui, il n’est plus fournis que comme source, dans ce cas tu as Inpout32 qui est son équivalent et déja compilé sous forme de DLL.
Pour contourner le problème de crash, tout est expliqué ici, c’est dû à la façon dont Windows XP fonctionne.

grillé :slight_smile: