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

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

pb avec communication rs232


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

pb avec communication rs232

vendredi 2 avril 2004 à 11:29:18 | pb avec communication rs232

kekenobi

salut a tous et a toutes!
voila j'ai un petit pb avec mon programme portant sur la communication RS232:
en fait je reçoit une trame de 19 caractères et lors de la lecture de cette trame j'effectue une vérification de checksum afin de verifier si il n'y pas d'anomalies!
cette étape fonctionne par contre maintenant j'aimerai vérifier si présence d'une erreur de checksum ou de parité et corriger l'eventuel erreur enfin de recevoir une trame correct!
si quelqu'un c'est comment faire... plize help me!! Thanks ;-)
KeKeNoOb!

voici mon source:
#pragma package(smart_init)
#pragma argsused

#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <windows.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>

#include "rs232.h"

//--------------------------PROTOTYPES----------------------------------------//


unsigned long checksum(char * Byte, unsigned long checksum);

//-----------------------------Fonction Main----------------------------------//
int main(void)
{

HANDLE hPort; /* Spécification de la communication */
char *Port;
int NPort;
int i;


cout<<"Tapez 1 pour COM1 ou 2 pour le COM2"<<endl;
cin>>NPort;
switch(NPort)
{
case 1 : Port="COM1";
break;
case 2 : Port="COM2";
break;
}

//LPSTR lpszPortName = _T("COM2");
hPort = CreateFile (Port,GENERIC_READ | GENERIC_WRITE, 0,NULL,OPEN_EXISTING,0,NULL);

//-------structure définissant les paramètres de la communication série-------//

DCB PortDCB;

PortDCB.DCBlength = sizeof (DCB);
PortDCB.BaudRate = 9600;
PortDCB.fBinary = TRUE;
PortDCB.fParity = TRUE;
PortDCB.fOutxCtsFlow = FALSE;
PortDCB.fOutxDsrFlow = FALSE;
PortDCB.fDtrControl = DTR_CONTROL_ENABLE;
PortDCB.fDsrSensitivity = FALSE;
PortDCB.fTXContinueOnXoff = TRUE;
PortDCB.fOutX = FALSE;
PortDCB.fInX = FALSE;
PortDCB.fErrorChar = FALSE;
PortDCB.fNull = FALSE;
PortDCB.fRtsControl = RTS_CONTROL_ENABLE;
PortDCB.fAbortOnError = FALSE;
PortDCB.ByteSize = 8;
PortDCB.Parity = NOPARITY;
PortDCB.StopBits = ONESTOPBIT;
//----------------------------------------------------------------------------//


//Récupération des informations enregistées du port série dans notre structure.
GetCommState (hPort, // instance d'accès de votre port série
&PortDCB); // Structure de configuration

DWORD dwNbBitEcris;
//char Byte[21];
char * Byte;

Byte = new char[19];
cout<<"Lecture de trame :"<<endl;
//int taille;
/*taille = /*Byte, Bytes;*/
int Alire=19;//StrLen(Byte);
unsigned long Byte1;

//ReadFile (hPort,Byte,Alire,&dwNbBitEcris,NULL) ;


//--Boucle répititive permettant la lecture de trame envoyer par le lecteur---//
while(1)
{
ReadFile (hPort,Byte,Alire,&dwNbBitEcris,NULL) ;
checksum(Byte,Byte1);


PurgeComm(hPort,PURGE_TXCLEAR | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_RXABORT);
ResetEvent(hPort);
SetupComm(hPort,20,20);
((LPBYTE)Byte)[dwNbBitEcris] = '\0';

}


//---------------------Fermeture de la communication série--------------------//
BOOL CloseHandle(
HANDLE hObject //Instance d'accès du port série
);
}
//****************************************************************************//
//--------------Vérification de la somme de contrôle (CHECKSUM)---------------//

unsigned long checksum(char * Byte, unsigned long checksum)
{

unsigned long Byte1= 0;

for (int i=0;i<16;i++)
{

Byte1 += Byte[i];

}


checksum = Byte[16]* 256 + Byte[17];



if (Byte1 == checksum)
{
cout << "pas d'erreur de checksum -->" ;
cout << Byte<<endl;

}else
cout << "Erreur checksum" <<endl;


return checksum;
}




Cette discussion est classée dans : port, include, false, checksum, portdcb


Répondre à ce message

Sujets en rapport avec ce message

desactiver l'echo sur une liaison RS232 [ par yooyoo78450 ] Bonjour, j'aurais voulu savoir comment désactiver l'echo sur une liaison série en port com, voila un bout de mon programme où sont decrites les optio Chat en C sous Linux [ par slobberbone ] Bonjour à tous et bonne Année 2005 ! Voilà j'ai un projet à faire, il consiste à faire une messagerie instantanée ( Client & Serveur ) J'arrive à fai pb bind pour un serveur avec djgpp/gcc [ par Guillaume of IUT ] Salut à tous, j'ai un problème. Voici le code du serveur en C. C'est pratiquement l'exemple qui est livré avec les librairies tcp lsck073b. Le problem Erreur d'execution d'uns dll [ par fabrice91 ] Bonjour tout le monde, voici mon problème : J'ai récupéré un code sur ce fabuleux site qu'est cppfrance;) (http://www.cppfrance.com/codes/BASE-COMMUNI besoin d'aide sur communication [ par keast ] salut tout le monde, Voila je suis vraiment nul en info et j'ai un problème en ce moment sur un projet. Je dois piloté un appareil qui celui-ci fonct probleme readfile sur port serie en overlapped [ par looloo78 ] Bonjour, je me permets de poster ce post concernant un programme pour lire sur le port COM1 ou 2. mais ca ne fonctionne pas, il se met automatiquemen Traitement caractères [ par baptchr55 ] Bonjour à tous, je sollicite à nouveau votre aide suite à un problème de traitement de caractères... Je reçoit une trame (par le biais de sockets) et envoie des données sur le port parallèle [ par popossi ] salut à tous,je suis élève  ingénieur en génie élèctrique je veux réaliser un mini projet qui concerne à écrire un programme en C qui génère 5 nombres Com RS232 [ par Dohko10270 ] Bonjour, Actuellement je cherche à récupérer une trame via la liaison RS232, je réussi très bien à faire ce que je veux à l'aide d'hyperterminal, c'e


Nos sponsors


Sondage...

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,484 sec (3)

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