begin process at 2012 05 29 20:07:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Probleme avec une liaison serie


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme avec une liaison serie

mardi 25 janvier 2005 à 09:21:13 | Probleme avec une liaison serie

xtrememan


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

}

mardi 25 janvier 2005 à 10:25:55 | Re : Probleme avec une liaison serie

Arnotic

Administrateur CodeS-SourceS
Salut,

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

@+
Arnotic,
Admin CS, MVP Visual C++
mardi 25 janvier 2005 à 10:27:44 | Re : Probleme avec une liaison serie

ymca2003

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.


Cette discussion est classée dans : void, char, trame, reception, unsigned


Répondre à ce message

Sujets en rapport avec ce message

Pb affichage bmp envga c/asm [ par 030417 ] Bonjour à tous,Je suis en train d'essayer d'afficher un bmp en c avec asm sous dos en vga (13h) . j'utilise comme compilateur borland c++ 3.0, mais je methode system() [ par sperate ] Bonjour,je code sur visual studio 2005 une simple application en mode console.j'utilise la methode "system()" pour envoyer des commandes simples genre conjugaison en c++ [ par abdelali62 ] Bonsoir tt le monde c'est mon premier programme en c++ j'ai trouve une difficulter a implante le code de la fonction main mais je vais pas besser les Protocole OneWire [ par TupaShakur ] Bonjour à tous, Je développe une carte à base de pic18f2455 qui sert à gérer des iButton Voila dix jours que je me prends la tête avec ce protocole Programmation C : 2 unsigned char dans 1 unsigned int. [ par romain60112 ] Bonjours a tous, J'ai un petit soucis pour stocker 2 unsigned char dans 1 unsigned int. Je dispose de : un tableau d'unsigned int : unsigned int con Reception des données dans un tableau [ par jojolastar27 ] bonjour,Je voudrais mettre les donnés dans un tableau.Mes donné sont bien ressu dans un Memo grace a la fonction:Memeo1->Lines->ADD(Socket->ReceiveTex comparaison entre 2 fonctions [ par cyss ] Est-ce que ces 2 fonctions sont equivalentes?void f1(char *t){    if (t!=0)    {        while(*t!=0)        {            cout            t++;        } SDL et windows.h sous sygwin [ par agent933 ] salut je travaille en ce moment sur un programme en langage.grosso modo jutilise le port serie pour recevoir donnees et ensuite utilise une interface Utilisation du type unsigned char [ par zaraki21 ] Bonjour, Je développe actuellement une application en C/C++ pour un périphérique "embarqué" et je dois utiliser le type unsigned char. Je sais que ce


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales