Téléchargement
illégal
Posez votre question Signaler

Aide pour la programmation de port serie?

jacklina - Dernière réponse le 27 avril 2011 à 11:06
Salut je cherche un programe pour faire une transmission d'un caractere d'un pc a un autre a travers le port serie. les deux Pc sont lies avec un cable j'ai fais des essais mais je n'ai pas reussi don j'ai urgement besoin de votre aide
/*------------------------------------------------------------------------*/
/* Fonction d’initialisation d’un port RS232 */
/* */
/* Paramètres */
/* char *Port : "COM1" pour Port1, "COM2" pour port2 */
/* char *Parite : "Paire", "Impaire", "Aucune" */
/* char *Vitesse : la vitesse en bauds */
/* char *Data : le nombre de bit de donnée */
/* char *StopBit : Le nombre de stop Bit */
/* */
/* Retour : un entier égal à 0 si erreur. */
/*------------------------------------------------------------------------*/
int InitCOM(char *Port,char *Parite,char *Vitesse,char *Data,char *StopBit)
{
DCB dcb; // déclarer une variable contenant la configuration du port
HANDLE hCom; // déclarer un handle
DWORD dwError; // n° de l’erreur
BOOL fSuccess; // tout c’est bien passé
/*--------------------------------------------------------*/
/* Ouverture du port de Com */
/*--------------------------------------------------------*/
hCom = CreateFile(
Port, // Choix du port « COMx »
GENERIC_READ | GENERIC_WRITE, // accès pour lire et écrire sur le port
0, // accès exclusif au port de COM
NULL, // sécurité par défaut
OPEN_EXISTING, //Doit être à cette valeur car se n’est pas un fichier
0,
NULL // mode synchrone
);
/*-----------------------------------------------------------*/
/* Vérifier si handle ouvert correctement */
/*-----------------------------------------------------------*/
if (hCom == INVALID_HANDLE_VALUE)
{
dwError = GetLastError();
/* Fichier non créer Gérer l'erreur */
}
/*-----------------------------------------------------------*/
/* Lecture Configuration initiale */
/*-----------------------------------------------------------*/
fSuccess = GetCommState(hCom, &dcb);
if (!fSuccess)
{
/* Gérer l'erreur*/
}
/*-------------------------------------------------------------------*/
/* Configuration du port */
/*-------------------------------------------------------------------*/
/* Gestion de la vitesse */
dcb.BaudRate = StrToInt(Vitesse);
/* Gestion du nombre de bits */
dcb.ByteSize = StrToInt(Data);
/* Gestion de la parité */
if (strcmp(Parite,"Aucune")==0)
dcb.Parity = NOPARITY;
if (strcmp(Parite,"Paire")==0)
dcb.Parity = EVENPARITY;
if (strcmp(Parite,"Impaire")==0)
dcb.Parity = ODDPARITY;
/* Gestion du Stop Bit */
if (strcmp(StopBit,"1")==0)
dcb.StopBits = ONESTOPBIT;
if (strcmp(StopBit,"1.5")==0)
dcb.StopBits = ONE5STOPBITS;
if (strcmp(StopBit,"2")==0)
dcb.StopBits = TWOSTOPBITS;
dcb.DCBlength;
dcb.BaudRate;
dcb.fBinary=1;
dcb.fParity=0;
dcb.fOutxCtsFlow=0;
dcb.fOutxDsrFlow=0;
dcb.fDtrControl=0;
dcb.fDsrSensitivity=0;
dcb.fTXContinueOnXoff=0;
dcb.fRtsControl=0;
/*-----------------------------------------------*/
/* Configurer le port */
/*-----------------------------------------------*/
fSuccess = SetCommState(hCom, &dcb);
if (!fSuccess)
{
/* Gérer l'erreur*/
}
/*------------------------------------------*/
/* fermer le port de com */
/*------------------------------------------*/
CloseHandle(hCom);
return(fSuccess);
}

Ecriture sur un port série : Exemple de fonction d’envoie de donnée

/*-----------------------------------------------------------------------------*/
/* Envoyer une chaine de caractére sur la RS232 */
/* */
/* Paramètres : */
/* char *Chaine La chaine à Envoyer */
/* char *Port, le port de COM : "COM1" ou "COM2" */
/* char *EolChar, le caractère fin de ligne */
/* */
/* Retour : 0 si erreur */
/*-----------------------------------------------------------------------------*/
int EnvoiChaineRS232(char *Chaine,char *Port,char *EolChar)
{
HANDLE hCom;
DWORD dwError;
BOOL fSuccess;
DWORD dwEvtMask;
int i;
int NbOctet;
char *Message;
unsigned long nBytesWrite;
Message = new char[200];
/*-----------------------------------------------*/
/* Ouverture du port de communiucation */
/*-----------------------------------------------*/
hCom = CreateFile(Port,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL
);
/*--------------------------------------------------*/
/* Envoi de la chaine + Eol caractére */
/*--------------------------------------------------*/
if(strcmp(EolChar,"CR")==0)
sprintf(Message,"%s%c",Chaine,0x0D);
if(strcmp(EolChar,"LF")==0)
sprintf(Message,"%s%c",Chaine,0x0A);
if(strcmp(EolChar,"LF/CR")==0)
sprintf(Message,"%s%c%c",Chaine,0x0A,0x0D);
if(strcmp(EolChar,"CR/LF")==0)
sprintf(Message,"%s%c%c",Chaine,0x0D,0x0A);
// compter le nombre d’octet à envoyer
NbOctet = StrLen(Message);
// écrire dans le fichier
WriteFile(hCom,Message,NbOctet,&nBytesWrite,NULL);
// Fermer le handle de com
CloseHandle(hCom);
// Libération mémoire
delete[] Message;
return(fSuccess);
}


Lecture sur un port série : Exemple de fonction de réception de données

/*------------------------------------------------------------------------------*/
/* Recevoir une chaîne de caractère sur la RS232 */
/* */
/* Paramètres : */
/* char *ChaineRecue , buffer de réception */
/* char *Port, le port de COM : "COM1" ou "COM2" */
/*------------------------------------------------------------------------------*/
int RecevoirRS232(char *Chaine Recue,char *Port)
{
DCB dcb;
HANDLE hCom;
DWORD dwError;
BOOL fSuccess;
BOOL bResult;
DWORD dwEvtMask;
COMMTIMEOUTS tTimeout;
unsigned long nBytesRead;
char *inBuffer;
int TimeoutRead;
int i;
int NbOctet;
char c;
/*-------------------------------------*/
/* Initialisation des variables */
/*-------------------------------------*/
inBuffer = new char[200]; // réservation mémoire pour le buffer de récéption
sprintf(inBuffer,"%s","");
nBytesRead=0;
/*-----------------------------------------------*/
/* Ouverture du port de communication */
/*-----------------------------------------------*/
hCom = CreateFile(Port,
GENERIC_READ | GENERIC_WRITE,

0,
NULL,
OPEN_EXISTING,
0,
NULL
);
/*----------------------------------*/
/* Définition des timeouts */
/*----------------------------------*/
TimeoutRead = 500; // timeout de 500ms
tTimeout.ReadIntervalTimeout = MAXWORD;
tTimeout.ReadTotalTimeoutMultiplier = 0;
tTimeout.ReadTotalTimeoutConstant = TimeoutRead; // pas de time out = 0
tTimeout.WriteTotalTimeoutMultiplier = 0;
tTimeout.WriteTotalTimeoutConstant = 0;
// configurer le timeout
SetCommTimeouts(hCom,&tTimeout);
/*-------------------------------------------------------------*/
/* boucle d'attente de lecture des octets */
/* Sortie de la boucle par timeout par exemple, si */
/* l’on suppose le format de la trame reçu n’est */
/* variable. */
/*-------------------------------------------------------------*/
bResult = ReadFile(hCom,inBuffer,199,&nBytesRead,NULL);
if (nBytesRead!=0) // Il existe des octets lus
{
// Mettre en forme la trame : recherche de CR
}
else
sprintf(inBuffer,, »%s », “Pas de donnée reçue”) ;
sprintf(ChaineRecue,"%s",inBuffer); // Retourner la chaîne reçue
// fermer le port
CloseHandle(hCom);
// Libérer la mémoire
delete[] inBuffer;
return(fSuccess);
}



void main(void)
{
int Erreur ;
char *TrameRecue ;
TrameRecue = new char[200] ;
Erreur=InitCOM(« COM1 », « Aucune », « 9600 », « 8 », « 1 ») ;
if (Erreur !=0) // périphérique initialisé correctement
{
// envoi de la commande d’identification
EnvoiChaineRS232(« ID ? », « COM1 », « CR ») ;
// recevoir la réponse
RecevoirRS232(TrameRecue, « COM1 ») ;
// Traiter la trame reçue
}
else
{
// afficher une erreur
}
// Libération mémoire
delete[] TrameRecue ;
}
Lire la suite 

Aide pour la programmation de port serie »

15 réponses
Réponse
+2
moins plus
je suis sincerement desole j'en ai un qui marche mais sur C++ si ca vous interesse je vous l'envois
Goo Madagascar - 7 juin 2007 à 11:10
Je m'appelle Goo
Je voudrais recevoir la programmation de la port serie en c++ si vous le voulez
Mon email est lrakotoary@yahoo.fr
Merci
Ajouter un commentaire
Réponse
+1
moins plus
salut
je cherche un programme en java pour faire une transmission d'un caractere d'un pc àune caisse enregistreuse a travers le port serie . pc et caisse sont lies avec un cable.

merci d'avance
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour Jacklina,

Je suis a la recherche de toute documentations sur comment configurer et programmer un port serie RS 232.

S'il vous plait pourriez vous m'aider ?

Merci.
tchoubaka- 30 mars 2009 à 01:28
Bjr mon ami, je te conseillerai d'aller dans google et de taper <<programmer le port serie>> et tu recherche cet adresse en dessous du titre: le port serie du pc. ceci entre parenthese c'est l'adresse ( brassart.iut-amiens.fr/enseignement/fichiers/2006_TP5_Port_serie.pdf )
que Dieu te bénisse
Ajouter un commentaire
Réponse
+0
moins plus
bon j'ai eu un programme de communication avec RS232 qui marche a merveil vous pouvez le trouve sur ce site www.codes-sources.com et vous taper dans la recherche RS232 dans la rubrique c/c++ bon chance
Ajouter un commentaire
Réponse
+0
moins plus
bonjour jacklina,

la programmmation de la port serie entre pc et caisse enregistreuse sur c++ m'interresse aussi .

s'il vous plait jacklina pourriez vous m'envoiyer ce programme.

merci infiniment.
Ajouter un commentaire
Réponse
+0
moins plus
bonjour jacklina;
j'ai un projet de programmation des ports d'un ordinateur à l'aide de programme visual basic 6.0
j'espère que tu m'aide.
voilà mon email riadh_bouguerra@yahoo.fr
Ajouter un commentaire
Réponse
+0
moins plus
Bonsoir,

Je suis à la recherche d'un programme executable (je ne connait pas de language de programmation) qui permet lors d'un clik de souris lire le contenu (Fichier) d'un dipositif relié par une RS 232.
OU un programme qui met l'appariel comme un disque dur par une rs 232.
D'avance je vous remerci de votre aide.
Ajouter un commentaire
Réponse
-1
moins plus
Bonjour à tous,
Je dois créer un adaptateur port série RS232 - bus parallèle, si vous avez des infos qui pourrez m'être utiles, elles seront les bien venues.

Jackelina, pourrez-tu m'envoyer le code C++ que tu as stp ? Merci d'avance
Ajouter un commentaire
Réponse
-1
moins plus
moi je fait des études informatique et je veu utiliser le vb pour commender un port série ou usb et je ne sais pas comment aidez svp;mrci à l'vance .
Ajouter un commentaire
Réponse
-1
moins plus
salut a tous
je n'arrive paas a avoir le son sur mon laptop Toshiba tecra
kelkun peut m'aider a trouver solution a mon problem?
merci d'avance.
djim
Tmoche - 11 oct. 2010 à 16:14
Ta raison mon gars je te met +1 parce-que tu le mérite avec ta question super bien placé !!!
Toshiba c'est de la camelote.
francis - 11 oct. 2010 à 16:35
Pareil
coolio - 27 avril 2011 à 11:06
Pas mieux!
Ajouter un commentaire
Ce document intitulé « aide pour la programmation de port serie? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?