Probleme avec une liaison serie

xtrememan Messages postés 14 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 18 mai 2005 - 25 janv. 2005 à 09:21
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 25 janv. 2005 à 10:27
Voila je dois effectuer une reception de trame avec une liaison serie par le biais d'un programme en C.



J'ai reussis l'emission,mais je reste bloquer sur la reception



Pourriez vous svp m'aider !!!



Merci d'avance pour votre amabilité.



voici ci dessous le commencement de mon programme



/******************************************************************************

*
nom :
serie.cpp
*

* description : communiquer avec
l'automate en liaison
série
*

*
*

******************************************************************************/



/******************************************************************************

*
Bibliothèque
*

******************************************************************************/



#include <dos.h>

#include <stdio.h>

#include <conio.h>

#include <string.h>



/******************************************************************************

*
Définition des
constantes
*

******************************************************************************/



#define COM1 0x3F8 //Adresse de base de COM1

#define DLM 0x3F9 //Adresse du registre diviseur poids faibles

#define LCR 0x3FB //Adresse du registre de contrôle de la ligne

#define LSR 0x3FD //Adresse du registre d'état de la ligne



/******************************************************************************

*
Définition des
prototypes
*

******************************************************************************/



void init(void);

unsigned char LRC(unsigned char *, unsigned short);

void emission(void);

void reception (void);



/******************************************************************************

*
Programme
Principal
*

******************************************************************************/



main ()

{

init();

emission();

reception();

}



/******************************************************************************

*
Initialisation
*

******************************************************************************/



void init(void)

{

outportb(LCR,0x9B); // 9600 bauds



outportb(COM1,12); // Registre diviseur poids forts

outportb(DLM,0); // Registre diviseur poids faibles



outportb(LCR,0x1B); // Registre de contrôle de ligne

}



/******************************************************************************

*
Calcul du
LRC
*

******************************************************************************/



static unsigned char LRC(unsigned char *auchMsg, unsigned short usDataLen)

{

unsigned char uchLRC =0 ; // LRC char initialisé



while (usDataLen--) // lecture message

uchLRC += *auchMsg++ ; // buffer addition octet


// sans retenue



return -uchLRC
;
// renvoie compl à 2

}



/******************************************************************************

*
Emission
*

******************************************************************************/



void emission(void)

{

int i;

unsigned char resLRC=0;

char trame[]={0x01,0x02,0x02,0x20,0x00,0x08};

/*printf("Entrez les donnees a transmettre : ") ;

scanf("%s",trame) ;*/



resLRC=LRC(trame, sizeof(trame));

printf ("LRC = %x\n", resLRC);



trame[6]=resLRC;



for(i=0;i<=15;++i)

{

while ((inportb (LSR) & 0x20)==0);

outportb (COM1,trame[i]);

}

}



/*******************************************************************************

*


Reception




*

*******************************************************************************/



void reception (void)

{



}

2 réponses

cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012 1
25 janv. 2005 à 10:25
Salut,

Tu trouveras sur ce site plusieurs bonnes sources pour le RS232.

@+
Arnotic,
Admin CS, MVP Visual C++
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
25 janv. 2005 à 10:27
Si c'est pour windows, laisse tomber l'accès direct aux ports (marchera pas sous NT/2k/xp), utilise les API.

Exemple de base pour l'émission/réception rs232 dans mes sources.
0