begin process at 2012 05 30 05:12:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

[VB -> C++]Connection port RS232


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

[VB -> C++]Connection port RS232

mercredi 19 octobre 2011 à 15:49:35 | [VB -> C++]Connection port RS232

Belha1987

bonjour, je suis a la recherche d'un code programme en .net pour acquérir des données d'une sonde qui est reliée a un afficheur qui lui a une sortie RS232. je veux stocker dans un fichier exel pour pouvoir les utiliser apres.
Merci
mercredi 19 octobre 2011 à 17:26:09 | Re : Connection port RS232

jack

Administrateur CodeS-SourceS
Salut

Pas assez de détail.
Les trames d'infos envoyées par ton afficheur doivent avoir une structure - un codage - un protocole, en plus des informations d'usage liées à la comm elle même : vitesse, parité, stop bit ...
Tout ceci doit être décrit dans la doc de ton afficheur.

Sans ces éléments, impossible de te répondre.
En supposant que l'afficheur envoie des caractères ASCII, tu peux déjà essayer de le connecter à ton PC avec les bons réglages de vitesse et regarder ce qui arrive.
Si tu ne sais pas gérer une comm RS232, commence par regarder dans l'aide ET parmi les codes/questions forum du site.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
mercredi 19 octobre 2011 à 22:26:07 | Re : Connection port RS232

Belha1987

Merci pour ta réponse,
alors, c'est justement ce que je voulais savoir, moi je suis novice dans le domaine de la programmation j'ai trouvé un programme sur internet en c qui assure la liaison entre l'afficheur et l'ordinateur. il y a les parametres de parité, nombre de bits et bits de stop ... a introduire, ce que je veux savoir, si ces parametres c'est l'afficheur qui les impose ou je peux mettre ce que je veux.
le programme que j'ai trouvé crée un fichier txt et le stock les informations dessus, moi je récupere a chaque essai 3 caracteres illisibles. pourtant il me marque bien que le port et ouvert et ceci quelque soit la vitesse que je choisie ou la longueur de la trame....
PS; j'ai rien trouvé dans la doc de afficheur.
svp j'ai vraiment besoin d'aide il faut absolument que j'arrive a acquérir les données de cet afficheur.
merci d'avance


// FICHIERS D'INCLUSION
//------------------------------------------------------------------------------
#include <windows.h>
#include <winbase.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
// CONSTANTES
//-------------------------------------------------------------------------------
// Codes de retour génériques
#define TRUE 1
#define FALSE 0
// PROTOTYPES
//----------------------------------------------------------------------------
int OuvrirCom(char *NomPort,int Vitesse,int Taille,char *Parite,int StopBits);
int EnvoyerCom (char*Chaine);
int RecevoirCom(char *Chaine,int nCountMax,int *pCountRead);
int MenuPort (char*) ;
int MenuVitesse (int*) ;
int MenuTaille (int*) ;
int MenuParite (char*) ;
int MenuStopBits (int*) ;
int MenuRecevoirEnvoyer () ;
int FermerCom();
// VARIABLES GLOBALES
//-----------------------------------------------------------------------------
DCB g_DCB; // structure dcb du port
HANDLE g_hCom = 0; // handle de la com
int main ()
{
int Sortie1 ;
int SortieVitesse ;
int SortieTaille ;
int SortieParite ;
int SortieStopBits ;
/* Valeur retour menu */
int ValeurMenuPort = 0;
int ValeurMenuVitesse = 0 ;
int ValeurMenuTaille = 0;
int ValeurMenuParite = 0;
int ValeurMenuStopBits = 0;
int ValeurMenuRecevoirEnvoyer = TRUE ;
/* Reels valeurs */
char ValeurPort[10] ;
int ValeurVitesse = 0;
int ValeurTaille = 0 ;
char ValeurParite[10] ;
int ValeurStopBits = 0;
/* Supplement */
//int LongueurPort = 0 ;
while (Sortie1)
{
/*** Initialisation des valeurs de sortie ***/
Sortie1 = TRUE ;
SortieVitesse = TRUE ;
SortieTaille = TRUE ;
SortieParite = TRUE ;
SortieStopBits = TRUE ;
/*** Configuration Port ***/
ValeurMenuPort = MenuPort (ValeurPort) ;
if (ValeurMenuPort == 0)
Sortie1 = FALSE ;
else if (ValeurMenuPort == 3 )
{
sleep(1000) ;
/*** Ouverture COM1 deja parametre ***/
if ( OuvrirCom("COM1", 9600, 8, "Aucune", 1 ) )
{
printf("\n Ouverture du port effectuee.\n") ;
ValeurMenuRecevoirEnvoyer = MenuRecevoirEnvoyer () ;
if (ValeurMenuRecevoirEnvoyer == 0 )
Sortie1 = FALSE ;
else if ( (ValeurMenuRecevoirEnvoyer == 3) || (ValeurMenuRecevoirEnvoyer == 4))
break ;
}
else
printf("\n Erreur ouverture port.\n") ;
}
else if (ValeurMenuPort == 4 )
{
sleep(1000) ;
/*** Ouverture COM2 deja parametre ***/
if ( OuvrirCom("COM2", 9600, 8, "Aucune", 1 ) )
{
printf("\n Ouverture du port effectuee.\n") ;
ValeurMenuRecevoirEnvoyer = MenuRecevoirEnvoyer () ;
if (ValeurMenuRecevoirEnvoyer == 0 )
Sortie1 = FALSE ;
else if ( (ValeurMenuRecevoirEnvoyer == 3) || (ValeurMenuRecevoirEnvoyer == 4))
break ;
}
else
printf("\n Erreur ouverture port.\n") ;
}
else
{
while (SortieVitesse)
{
SortieTaille = TRUE ;
/*** Configuration Vitesse ***/
ValeurMenuVitesse = MenuVitesse (&ValeurVitesse) ;
if (ValeurMenuVitesse == 5)
SortieVitesse = FALSE ;
else if (ValeurMenuVitesse == 0)
{
Sortie1 = FALSE ;
SortieVitesse = FALSE ;
}
else
{
while (SortieTaille)
{
SortieParite = TRUE ;
/*** Configuration Taille ***/
ValeurMenuTaille = MenuTaille (&ValeurTaille) ;
if (ValeurMenuTaille == 5)
SortieTaille = FALSE ;
else if(ValeurMenuTaille == 0)
{
Sortie1 = FALSE ;
SortieVitesse = FALSE ;
SortieTaille = FALSE ;
}
else
{
while (SortieParite)
{
SortieStopBits = TRUE ;
/*** Configuration Parite ***/
ValeurMenuParite = MenuParite (ValeurParite) ;
if (ValeurMenuParite == 4)
SortieParite = FALSE ;
else if (ValeurMenuParite == 0)
{
Sortie1 = FALSE ;
SortieVitesse = FALSE ;
SortieTaille = FALSE ;
SortieParite = FALSE ;
}
else
{
while (SortieStopBits)
{
/*** Configuration Stop Bits ***/
ValeurMenuStopBits = MenuStopBits (&ValeurStopBits) ;
if (ValeurMenuStopBits == 3)
SortieStopBits = FALSE ;
else if (ValeurMenuStopBits == 0)
{
Sortie1 = FALSE ;
SortieVitesse = FALSE ;
SortieTaille = FALSE ;
SortieParite = FALSE ;
SortieStopBits = FALSE ;
}
else
{
SortieVitesse = FALSE ;
SortieTaille = FALSE ;
SortieParite = FALSE ;
SortieStopBits = FALSE ;
/*** Recapitulatif ***/
printf("\nRecapitulatif de la configuration de la liaison serie RS-232.\n") ;
printf("\n Port : %s \n", ValeurPort) ;
printf(" Vitesse : %d bits/s \n", ValeurVitesse) ;
printf(" Taille : %d bits\n", ValeurTaille);
printf(" Parite : %s \n", ValeurParite) ;
printf(" Stop bits : %d bit(s) stop\n", ValeurStopBits) ;
sleep (1000) ;
if ( OuvrirCom(ValeurPort, ValeurVitesse,ValeurTaille, ValeurParite, ValeurStopBits) )
{
printf("\n Ouverture du port effectuee.\n") ;
ValeurMenuRecevoirEnvoyer = MenuRecevoirEnvoyer () ;
if (ValeurMenuRecevoirEnvoyer == 0 )
Sortie1 = FALSE ;
else if ( (ValeurMenuRecevoirEnvoyer == 3) || (ValeurMenuRecevoirEnvoyer == 4))
{
SortieVitesse = FALSE ;
SortieTaille = FALSE ;
SortieParite = FALSE ;
SortieStopBits = FALSE ;
}
}
else
printf("\n Erreur ouverture port.\n") ;
}
}
}
}
}
}
}
}
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
//------------------------------------------------------------------------------
// FONCTION : OuvrirCom
//------------------------------------------------------------------------------
int OuvrirCom(char *NomPort,int Vitesse,int Taille,char* Parite,int StopBits)
{
// On ouvre le port série
g_hCom = CreateFile( NomPort, GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_WRITE_THROUGH | FILE_FLAG_NO_BUFFERING,NULL);
if(g_hCom == INVALID_HANDLE_VALUE)
{
return FALSE ;
}
else
{
// on vide les tampons d'émission et de réception, mise à 1 DTR
PurgeComm( g_hCom,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
// On paramètre le port série
g_DCB.DCBlength = sizeof(DCB);
//Configuration actuelle
GetCommState(g_hCom, &g_DCB);
//Modification du DCB
g_DCB.BaudRate = Vitesse ;
g_DCB.ByteSize = Taille;
g_DCB.fDtrControl = DTR_CONTROL_ENABLE; // (DISABLE)
// Gestion de la parité parmi paire, impaire et aucune
if (strcmp(Parite,"Aucune")==0)
g_DCB.Parity = NOPARITY;
if (strcmp(Parite,"Paire")==0)
g_DCB.Parity = EVENPARITY;
if (strcmp(Parite,"Impaire")==0)
g_DCB.Parity = ODDPARITY;
// Gestion du Stop Bit
if ( StopBits == 1 )
g_DCB.StopBits = ONESTOPBIT;
//if ( StopBits == 1.5 )
//dcb.StopBits = ONE5STOPBITS;
if ( StopBits == 2 )
g_DCB.StopBits = TWOSTOPBITS;
//Configuration de la liaison serie
SetCommState(g_hCom, &g_DCB);
return TRUE ;
}
}
//----------------------------------------------------------------------------
// FONCTION : EnvoyerCom
//----------------------------------------------------------------------------
int EnvoyerCom(char* Chaine)
{
DWORD NumBytes=0;
int TailleChaine = strlen(Chaine) ;
printf("\n Taille de la chaine : %d \n", TailleChaine) ;
if(g_hCom != NULL)
{
//Emission de la Chaine
if (WriteFile(g_hCom,Chaine, TailleChaine,&NumBytes,NULL)==0)
{
printf ("\n Erreur emission.\n") ;
return FALSE ;
}
else
{
printf("\n Chaine envoyee : %s.\n", Chaine) ;
return TRUE ;
}
}
else
return FALSE ;
}
//---------------------------------------------------------------------------
// FONCTION : RecevoirCom
//---------------------------------------------------------------------------
int RecevoirCom(char *Chaine,int nCountMax, int* pCountRead)
{
COMSTAT Stat;
DWORD Errors;
int nbCarALire;
long NCarLus=0;
int b_Retour ;
if(g_hCom!=NULL)
{
FILE* FFichier ;
if ( (FFichier = fopen ("essai.txt", "w")) == NULL )
printf ("Ouverture fichier impossible\n") ;
else
{
// printf ("Ouverture fichier avec succes\n") ;
fprintf ( FFichier, "Ecriture dans le fichier...") ;
}
//Pour éviter de gérer un time out
Sleep(100);
//Pour connaitre le nombre d'octets dans le buffer d'entrée
ClearCommError(g_hCom,&Errors,&Stat);
nbCarALire=Stat.cbInQue;
//On effectue la lecture si il y a des caractères présents
if( (nbCarALire>0)&&(nbCarALire<=nCountMax) )
{
//Reception de la Chaine
if(ReadFile(g_hCom,Chaine,nbCarALire,&NCarLus,NULL)==0)
{
printf ("\n Erreur reception.\n") ;
return FALSE ;
}
}
//Finition de la Chaine
*pCountRead = NCarLus;
Chaine[NCarLus] = '\0' ;
//Ecriture dans le Fichier preouvert
fprintf ( FFichier,"%s", Chaine) ;
}
else
return FALSE ;
}
//-----------------------------------------------------------------------
// FONCTION : FermerCom
//-----------------------------------------------------------------------
int FermerCom()
{
if(g_hCom!=NULL)
{
CloseHandle(g_hCom);
return TRUE ;
}
}
//-----------------------------------------------------------------------
// FONCTION : MenuPort
//-----------------------------------------------------------------------
int MenuPort ( char* ValeurPort )
{
int Choix1 ;
printf ("\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t------- ** Liaison Serie RS-232 ** -------\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t- -\n") ;
printf ("\t- Entrez l'adresse du port : -\n") ;
printf ("\t- -\n") ;
printf ("\t- 1 - COM1 -\n") ;
printf ("\t- 2 - COM2 -\n") ;
printf ("\t- 3 - COM1 PAR DEFAUT -\n") ;
printf ("\t- 4 - COM2 PAR DEFAUT -\n") ;
printf ("\t- 0 - Quitter -\n") ;
printf ("\t- -\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t Votre Choix : ");
scanf ("%d", &Choix1) ;
system("cls") ;
switch(Choix1)
{
case 0:
printf ("\n Vous avez decider de quitter le programme, aurevoir..\n\n") ;
return Choix1 ;
break;
case 1:
printf("\n Vous avez selectionne le port COM1.\n") ;
strcpy (ValeurPort, "COM1") ;
return Choix1 ;
case 2:
printf("\n Vous avez selectionne le port COM2.\n") ;
strcpy (ValeurPort, "COM2") ;
return Choix1 ;
case 3:
printf("\n Vous avez selectionne le port COM1 deja parametre.\n") ;
printf(" -- Informations parametrage --\n") ;
printf(" Port : COM1 \n") ;
printf(" Vitesse : 9600 bits/s \n") ;
printf(" Taille : 8 bits\n");
printf(" Parite : Aucune \n") ;
printf(" Stop bits : 1 bit stop\n") ;
return Choix1 ;
case 4:
printf("\n Vous avez selectionne le port COM1 deja parametre.\n") ;
printf(" -- Informations parametrage --\n") ;
printf(" Port : COM2 \n") ;
printf(" Vitesse : 9600 bits/s \n") ;
printf(" Taille : 8 bits\n");
printf(" Parite : Aucune \n") ;
printf(" Stop bits : 1 bit stop\n") ;
return Choix1 ;
default:
system("cls");
printf("\n Mauvaise touche, essayer de nouveau !! \n") ;
break ;
}
}
//-----------------------------------------------------------------------
// FONCTION : MenuVitesse
//-----------------------------------------------------------------------
int MenuVitesse (int *ValeurVitesse)
{
int Choix1 ;
printf ("\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t------- ** Liaison Serie RS-232 ** -------\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t- -\n") ;
printf ("\t- Entrez la vitesse en bits/s : -\n") ;
printf ("\t- -\n") ;
printf ("\t- 1 - 2400 -\n") ;
printf ("\t- 2 - 4800 -\n") ;
printf ("\t- 3 - 9600 -\n") ;
printf ("\t- 4 - 19200 -\n") ;
printf ("\t- 5 - Retour -\n") ;
printf ("\t- 0 - Quitter -\n") ;
printf ("\t- -\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t Votre Choix : ");
scanf ("%d", &Choix1) ;
system("cls") ;
switch(Choix1)
{
case 0:
printf ("\n Vous avez decide de quitter le programme, aurevoir..\n\n") ;
return Choix1 ;
break;
case 1:
case 2400:
printf("\n Vous avez selectionne une vitesse de 2400 bits/s.\n") ;
*ValeurVitesse = 2400 ;
return Choix1 ;
case 2:
case 4800:
printf("\n Vous avez selectionne une vitesse de 4800 bits/s.\n") ;
*ValeurVitesse = 4800 ;
return Choix1 ;
case 3:
case 9600:
printf("\n Vous avez selectionne une vitesse de 9600 bits/s.\n") ;
*ValeurVitesse = 9600 ;
return Choix1 ;
case 4:
case 19200:
printf("\n Vous avez selectionne une vitesse de 19200 bits/s.\n") ;
*ValeurVitesse = 19200 ;
return Choix1 ;
case 5:
printf("\n Vous avez decide de revenir au menu precedent.\n") ;
return Choix1 ;
default:
system("cls");
printf("\n Mauvaise touche, essayer de nouveau !! \n") ;
break ;
}
}
//-----------------------------------------------------------------------
// FONCTION : MenuTaille
//-----------------------------------------------------------------------
int MenuTaille ( int* ValeurTaille)
{
int Choix1 ;
printf ("\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t------- ** Liaison Serie RS-232 ** -------\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t- -\n") ;
printf ("\t- Entrez la taille de la donnee : -\n") ;
printf ("\t- -\n") ;
printf ("\t- 1 - 5 bits -\n") ;
printf ("\t- 2 - 6 bits -\n") ;
printf ("\t- 3 - 7 bits -\n") ;
printf ("\t- 4 - 8 bits -\n") ;
printf ("\t- 5 - Retour -\n") ;
printf ("\t- 0 - Quitter -\n") ;
printf ("\t- -\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t Votre Choix : ");
scanf ("%d", &Choix1) ;
system("cls") ;
switch(Choix1)
{
case 0:
printf ("\n Vous avez decide de quitter le programme, aurevoir..\n\n") ;
return Choix1 ;
break;
case 1:
printf("\n Vous avez selectionne une taille de 5 bits.\n") ;
*ValeurTaille = 5 ;
return Choix1 ;
case 2:
printf("\n Vous avez selectionne une taille de 6 bits.\n") ;
*ValeurTaille = 6 ;
return Choix1 ;
case 3:
printf("\n Vous avez selectionne une taille de 7 bits.\n") ;
*ValeurTaille = 7 ;
return Choix1 ;
case 4:
case 8:
printf("\n Vous avez selectionne une taille de 8 bits.\n") ;
*ValeurTaille = 8 ;
return Choix1 ;
case 5:
printf("\n Vous avez decide de revenir au menu precedent.\n") ;
return Choix1 ;
default:
system("cls");
printf("\n Mauvaise touche, essayer de nouveau !! \n") ;
break ;
}
}
//-----------------------------------------------------------------------
// FONCTION : MenuParite
//-----------------------------------------------------------------------
int MenuParite (char* ValeurParite)
{
int Choix1 ;
printf ("\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t------- ** Liaison Serie RS-232 ** -------\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t- -\n") ;
printf ("\t- Entrez la parite desiree : -\n") ;
printf ("\t- -\n") ;
printf ("\t- 1 - Aucune -\n") ;
printf ("\t- 2 - Paire -\n") ;
printf ("\t- 3 - Impaire -\n") ;
printf ("\t- 4 - Retour -\n") ;
printf ("\t- 0 - Quitter -\n") ;
printf ("\t- -\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t Votre Choix : ");
scanf ("%d", &Choix1) ;
system("cls") ;
switch(Choix1)
{
case 0:
printf ("\n Vous avez decide de quitter le programme, aurevoir..\n\n") ;
return Choix1 ;
break;
case 1:
printf("\n Vous avez selectionne la presence d'aucune parite.\n") ;
strcpy (ValeurParite,"Aucune" ) ;
return Choix1 ;
case 2:
printf("\n Vous avez selectionne la presence d'une parite paire.\n") ;
strcpy (ValeurParite,"Paire" ) ;
return Choix1 ;
case 3:
printf("\n Vous avez selectionne la presence d'une parite impaire.\n") ;
strcpy (ValeurParite,"Impaire" ) ;
return Choix1 ;
case 4:
printf("\n Vous avez decide de revenir au menu precedent.\n") ;
return Choix1 ;
default:
system("cls");
printf("\n Mauvaise touche, essayer de nouveau !! \n") ;
break ;
}
}
//-----------------------------------------------------------------------
// FONCTION : MenuStopBits
//-----------------------------------------------------------------------
int MenuStopBits ( int* ValeurStopBits)
{
int Choix1 ;
printf ("\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t------- ** Liaison Serie RS-232 ** -------\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t- -\n") ;
printf ("\t- Entrez le nombre de bit(s) stop : -\n") ;
printf ("\t- -\n") ;
printf ("\t- 1 - 1 bit stop -\n") ;
printf ("\t- 2 - 2 bits stop -\n") ;
printf ("\t- 3 - Retour -\n") ;
printf ("\t- 0 - Quitter -\n") ;
printf ("\t- -\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t Votre Choix : ");
scanf ("%d", &Choix1) ;
system("cls") ;
switch(Choix1)
{
case 0:
printf ("\n Vous avez decide de quitter le programme, aurevoir..\n\n") ;
return Choix1 ;
break;
case 1:
printf("\n Vous avez selectionne la presence d'un bit stop.\n") ;
*ValeurStopBits = 1 ;
return Choix1 ;
case 2:
printf("\n Vous avez selectionne la presence de deux bits stop.\n") ;
*ValeurStopBits = 2 ;
return Choix1 ;
case 3:
printf("\n Vous avez decide de revenir au menu precedent.\n") ;
return Choix1 ;
default:
system("cls");
printf("\n Mauvaise touche, essayer de nouveau !! \n") ;
break ;
}
}
//-----------------------------------------------------------------------
// FONCTION : MenuRecevoirEnvoyer
//-----------------------------------------------------------------------
int MenuRecevoirEnvoyer ()
{
int Choix1 ;
int Sortie = TRUE ;
int SortieRetour ;
while (Sortie)
{
printf ("\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t------- ** Liaison Serie RS-232 ** -------\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t- -\n") ;
printf ("\t- Que voulez-vous faire : -\n") ;
printf ("\t- -\n") ;
printf ("\t- 1 - Envoyer -\n") ;
printf ("\t- 2 - Recevoir -\n") ;
printf ("\t- 3 - Fermer le port -\n") ;
printf ("\t- 4 - Retour -\n") ;
printf ("\t- 0 - Quitter -\n") ;
printf ("\t- -\n") ;
printf ("\t----------------------------------------------\n") ;
printf ("\t Votre Choix : ");
scanf ("%d", &Choix1) ;
system("cls") ;
switch(Choix1)
{
case 0:
printf ("\n Vous avez decide de quitter le programme, aurevoir..\n") ;
if (FermerCom())
printf ("\n Fermeture du port avec succes.\n\n") ;
SortieRetour = 0 ;
Sortie = FALSE ;
return SortieRetour ;
break;
case 1:
printf("\n Vous avez selectionne l'envoi de donnees sur le port.\n") ;
char *Chaine ;
Chaine = malloc (128) ;
printf("\n Veuillez saisir votre message: ") ;
scanf("%s", Chaine) ;
if ( EnvoyerCom(Chaine) )
printf (" Trame envoyee correctement.\n") ;
else
printf(" Erreur envoi trame.\n") ;
break ;
case 2:
printf("\n Vous avez selectionne la reception de donnees sur le port.\n") ;
printf ("\n Pour sortir du mode reception, veuillez entrer la lettre 'q'.\n") ;
/*** Reception boucle infini -> sortir en entrant le caractere 'q' ***/
char UnCaractere = ' ' ;
char Chaine1[30] = " Ordre Plateau 1 Ok " ;
char Chaine2[30] = " Ordre Plateau 2 Ok " ;
char Chaine3[30] = " Ordre Plateau 3 Ok " ;
char Chaine4[30] = " Ordre Plateau 4 Ok " ;
char Chaine5[30] = " Ordre Plateau 5 Ok " ;
char Chaine6[30] = " Ordre Plateau 6 Ok " ;
char Chaine7[30] = " Ordre Plateau 7 Ok " ;
char Chaine8[30] = " Ordre Plateau 8 Ok " ;
while ( (UnCaractere != 'Q') && (UnCaractere != 'q') )
{
printf (" ") ;
char ChaineRecue[100] ;
int nbMaxCar = 100 ;
int nbCarRecus ;
if ( RecevoirCom(ChaineRecue, nbMaxCar, &nbCarRecus ) )
{
if ( nbCarRecus != 0 )
{
printf (" Trame recue correctement.\n") ;
//printf ("Nombre de caractere recus : %d\n", nbCarRecus) ;
if (strcmp (ChaineRecue, "Plateau 1") == 0 )
EnvoyerCom(Chaine1) ;
else if (strcmp (ChaineRecue, "Plateau 2") == 0 )
EnvoyerCom(Chaine2) ;
else if (strcmp (ChaineRecue, "Plateau 3") == 0 )
EnvoyerCom(Chaine3) ;
else if (strcmp (ChaineRecue, "Plateau 4") == 0 )
EnvoyerCom(Chaine4) ;
else if (strcmp (ChaineRecue, "Plateau 5") == 0 )
EnvoyerCom(Chaine5) ;
else if (strcmp (ChaineRecue, "Plateau 6") == 0 )
EnvoyerCom(Chaine6) ;
else if (strcmp (ChaineRecue, "Plateau 7") == 0 )
EnvoyerCom(Chaine7) ;
else if (strcmp (ChaineRecue, "Plateau 8") == 0 )
EnvoyerCom(Chaine8) ;
else
printf (" Message recu : %s\n", ChaineRecue ) ;
}
}
else
printf("\n Erreur envoi trame.\n") ;
UnCaractere = getchar() ;
}
break ;
case 3:
printf("\n Vous avez decide de fermer le port de communication.\n") ;
if (FermerCom())
printf ("\n Fermeture du port avec succes.\n\n") ;
else
printf("\n Fermeture du port echouee.\n\n") ;
Sortie = FALSE ;
return SortieRetour ;
break ;
case 4:
printf("\n Vous avez decide de revenir au menu precedent.\n") ;
if (FermerCom())
printf ("\n Fermeture du port avec succes.\n\n") ;
else
printf("\n Fermeture du port echouee.\n\n") ;
Sortie = FALSE ;
return SortieRetour ;
break ;
default:
system("cls");
printf("\n Mauvaise touche, essayer de nouveau !! \n") ;
break ;
}
}
}
mercredi 19 octobre 2011 à 23:33:35 | Re : Connection port RS232

jack

Administrateur CodeS-SourceS
Imposé côté afficheur : Disons qu'il faut que les deux interfaces aient les mêmes réglages, c'est tout.

As-tu essayé le <convertisseur de code C# vers .Net > ?
Je n'y connais rien en C.
Ce que je vois est
"COM1", 9600, 8, "Aucune", 1
Donc, Port COM1, à 9600 bauds, 8 bits de données, Pas de parité, 1 Bit de stop.
C'est déjà un début.

Maintenant, la comm peut envoyer des codes décimaux et pas des codes ASCII.
Il faudrait analyser chaque chiffre reçu pour le savoir. A toi de les attraper - Il doit bien y avoir une source sur le site qui parle de RS232 ...
jeudi 20 octobre 2011 à 13:05:49 | Re : Connection port RS232

Belha1987


Merci pour ta reponse,
admettons que la configuration est Port COM1, à 9600 bauds, 8 bits de données, Pas de parité, 1 Bit de stop. pourquoi quand je mets ces reglages, j'ai des caractere illisible qui s'affiche? aurais tu un programme en .net qui marche bien et qui peut m'afficher sur l'ordinateur ce que je vois sur l'ecran. merci
jeudi 20 octobre 2011 à 13:44:08 | Re : Connection port RS232

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour,

C'est parce que les données envoyées sont en binaire et pas en texte, je pense (pas regardé le code source).
Dans ce cas, il faut afficher la valeur de l'octet reçu et non pas sa traduction en caractère.

---------------------------------------------------------------------
  1. Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien
  2. Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
  3. Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés.

---
Mon site
jeudi 20 octobre 2011 à 17:36:31 | Re : Connection port RS232

Belha1987

je fais comment svp pour afficher la valeur de l'octet reçu?? merci
jeudi 20 octobre 2011 à 19:13:54 | Re : Connection port RS232

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour,

Quel code utilises-tu pour lire la réception ? (regardes le point 2 qui suit)

---------------------------------------------------------------------
  1. Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien
  2. Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
  3. Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés.

---
Mon site
jeudi 20 octobre 2011 à 22:15:20 | Re : Connection port RS232

Belha1987

excuses moi mais j'ai pas compris ta question quesque ça ve dire code??je veux utiliser .net
vendredi 21 octobre 2011 à 00:14:23 | Re : Connection port RS232

NHenry

Membre Club Administrateur CodeS-SourceS
Bonjour,

Quel code as-tu testé pour dire :
"j'ai des caractere illisible qui s'affiche" ?

---------------------------------------------------------------------
  1. Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien
  2. Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
  3. Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés.

---
Mon site

1 2

Cette discussion est classée dans : port, connection, rs232


Répondre à ce message

Sujets en rapport avec ce message

Lecture d'un port serie (RS232) sous LINUX [ par DjBouch ] Je suis en BTS informatique industriel et mon projet consiste à lire les trames d'une station météo (wmr918) à travers un port série (RS232) sous Linu communication port COM [ par nmeunier ] Bonjour à tous !Je suis actuellement en stage dans une entreprise ou personne ne peut vraiment m'aider...;-(J'ai récupéré des sources en turbo C d'un programme c/c++ pour gestion port rs232 [ par dambeaufort ] Bonjour a tousJe suis actuellement en train de developper un programme sous visual c++ qui devrait me permettre de dialoguer avec un port rs232. quelq port COM, RS232 ou UART! [ par zenetcalme ] bonjour a tous,je developpe un logiciel qui communique avec le port RS232, et qui est diffusé sur un grand nombre de machine. j'arrive tres bien a com Communication Port serie RS232 [ par freddy766 ] Bonjour, J'ai un petit probleme concernant la communication RS232 (port serie) en c++. Afin de tester mon programme sur des appareils et etablir des c demande d'aide Cherche interception sur RS232 port serie [ par chemins_hermes ] Bonjour tout le monde.je cherche a pouvoir intercepter tout ce qui sort ou rentre par le port RS232 (port serie). et a le mettre dans un fichier log.c RS232 [ par th62d ] Bonjour,J'essaie de faire communiquer mon pc via le port serie RS232.....Quand je lance le programme TestCOM.c j'ai l'erreur suivante à la compilation Simulateur de communication RS232 [ par gordon13 ] Bonjour,Je dois réaliser un composant de communication avec un appareil connecté au PC via le port série. Comme j'ai pas l'appareil, je voudrais simul communication rs232 [ par sdisp ] Bonjour,J'ai fait un programme qui envoie des données ( trame de 12 octets ) sur un module de transmition wifi via le port com.Mon probleme est que lo sockets et proxy [ par vangeurmasker ] Bonjour Je dévelope une application qui récupere le code source d'une page html en se connectant sur le port 80 du serveur pas un socket. Le probleme


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

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