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)
{
}