interfaçage par le biais du port parallèle - Programmation
Marsh Posté le 09-06-2001 à 23:21:17
mon pb est que déja je n'arrive pas a envoyier correctement mes deux valeurs (identique) l'une après l'autre (et ce sur la meme broche car en plus g un pb avec les adresses qui ne sont pas les bonnes)
Marsh Posté le 09-06-2001 à 23:23:22
/* HELLO.C -- Hello, world */
#include <stdio.h>
#include <dos.h>
main()
{
char c[17]; /*<--ici je définit que 17 bits doivent etre envoyié au maximum (16 + le 0 de terminaison)*/
int i=0;
int b; /* <--ici je définit la variable b à décrémenter*/
b=2; /* <--je lui donne la valeur 2 car le chiffre que je veux envoyier vers le port parallèle doit etre envoyié 2 fois d'affilés*/
int adr =0x3BC; /* <--ici je définit l'adresse de la broche du port parallèle sur laquel je veux envoier les données(et déjà ca c faux)*/
printf("\ntaper + pour sortir du programme\n) /* ca c pour sortir du prog une fois finit*/
while(c[0]!='+')
{
printf("\nEntrer un chiffre de 0 à 64\n" );
while(b!=0){ /* <-- boucle tant que b ne vaut pas 0: le pb c que dans cette config je dois appuyer 2 fois sur pour qu'il envoie 2 fois les données*/
scanf("%s",c);
b=b-1; /* <-- je décrémente b*/
}
outportb(adr,c[0]);
printf("\nOK\n" );
}
}
Marsh Posté le 10-06-2001 à 11:30:33
Essaye déjà d'utiliser l'adresse de port 378h, qui est habituellement associée à LPT1. C'est vraisemblablement cette sortie que tu utilises...
De plus, tu n'as pas d'initialisation de ton port parallèle !
Marsh Posté le 10-06-2001 à 15:26:35
Je m'y connais pas trop, mais je ne peux que te conseiller de te rendre sur cette page qui m'a souvent aidé :
http://www.programmationworld.com/ [...] /index.htm
@+
Marsh Posté le 10-06-2001 à 16:32:38
ok j'y vais
ah au fait précision
voila ce que j'aimerais obtenir
sur l'une des broches un signal qui passe a 1 a ce moment la l'horloge arrive sur une autre broche et passe a 1 tandis que mon signal, sur une troisième broche débute sur le front montant
Marsh Posté le 11-06-2001 à 22:53:09
/* Programme compilé avec borland */
#include <stdio.h>
#include <dos.h> /* Fichier contenant la fonction outportb() */
#define DATA 0x378 /* Adresse du bus de donnees */
#define CONTROL 0x37A /* L'adresse du registre de contrôle */
void main(void)
{
unsigned char Valeur;
int b;
b=2;
printf("* Ecriture d'une valeur sur le bus de donnees\n" );
printf("* du port parallele\n" );
printf("Entrez la valeur à écrire (0-64):" );
scanf("%d",&Valeur);
outportb(CONTROL,0x00); /* On configure le bus de donnees en sortie */
while(b!=0){
outportb(DATA,Valeur); /* Ecriture de la valeur dans le registre de donnees */
b=b-1;
printf("Ecriture de %d terminée\n",Valeur);
}
}
merci pour les liens mais ce n'est pas encore finit car en fait il faudrait que j'envoi tout les 1 et 0 a la suite sur une meme broche
Marsh Posté le 15-06-2001 à 19:42:38
Je m'interesse aussi à la programmation du port //.
J'aurait qq question à te poser:
1-) t'es sous quel OS??? vu que les fonctions 'outportb' et 'inportb' ne marchent que sous windows 16 bits (donc pas pour les win95 et posterieurs...).
2-) quelle version de borland?? je ne crois pas que cela influe bcp ..
J'ai moi-meme essayé d'utiliser ces 2 fonctions sous Borland C++ 5.0 sous Win95, et à la compilation il me repond que ces fonctions sont inexistantes...
J'avais le choix soit d'utiliser l'asm (ms vas-y pr trouver le Turbo Assembler 5.0) ou les API. J'ai qd meme essaye les API en m'aidant de l'aide de Borland, ms c dur dur...
Marsh Posté le 19-06-2001 à 19:07:43
Finalement j'ai plus ou moins reussi à utiliser les API modifiées de Borland C++, c'est (entre autre) les fonctions CreateFile (pour créer le handler du port) et WriteFile (pour envoyer des infos sur la partie "donnée" à travers le port). Par contre, je sais pas comment faire pr envoyer des infos sur la partie "control" du port parallele... Fo surment changé un des champs lié à une des structures (HANDLE, DCB...) lié au port, ms j'arrive pas à trouver laquelle.
Alors si qq1 le sait qu'il se manifeste vite.
Marsh Posté le 19-06-2001 à 21:11:13
Je pense que tu devrais regarder du côté de cette fonction :
DeviceIoControl, qui appartient également à <winbase.h>
Marsh Posté le 09-06-2001 à 23:15:49
/* HELLO.C -- Hello, world */
#include <stdio.h>
#include <dos.h>
main()
{
char c[3];
int i=0;
int b;
b=2;
int adr =0x3BC;
printf("\ntaper + pour sortir du programme\n" );
while(c[0]!='+')
{
printf("\nEntrer un chiffre de 0 à 64\n" );
while(b!=0){
scanf("%s",c);
b=b-1;
}
outportb(adr,c[0]);
printf("\nOK\n" );
}
}