1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
| #include <windows.h>
#include <stdio.h>
#include<stdlib.h>
#define DEBUG
int main()
{
char var='A';
char tab[50]="Salut a tous !";
unsigned char tab2[50];
int tab3[100]={'a',1,2,3,4,5,'a'};
int i=0;
int cpt=0;
DCB dcb; // déclarer une variable contenant la configuration du port
HANDLE hCom; // déclarer un point d'accès au port COM
DWORD NbTx;
DWORD NbRx;
COMMTIMEOUTS timeouts;
/*--------------------------------------------------------*/
/* Ouverture du port de Com */
/*--------------------------------------------------------*/
hCom = CreateFile(
"COM1", // 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, // Fichier spécial associé à la ressource COM1 déjà existant.
0, // mode synchrone (BLOQUANT)
NULL);
/*-----------------------------------------------------------*/
/* Vérifier si handle ouvert correctement */
/*-----------------------------------------------------------*/
/*
if(hCom == INVALID_HANDLE_VALUE)
{
puts("Erreur d'ouverture du port COM1 !!!!");
exit(-1);
}*/
//OU
if(hCom == INVALID_HANDLE_VALUE)
FatalAppExit(0,"Erreur d'ouverture du port COM1 !!!!");
#ifdef DEBUG //ne fonctionne que si #define DEBUG est défini
puts("Porte COM1 ouvert !!!! \n");
#endif
/*-------------------------------------------------*/
/* Lecture Configuration initiale */
/*-------------------------------------------------*/
if (GetCommState(hCom,&dcb)==0)
FatalAppExit(0,"Erreur de lecture de la configuration initiale !!!!");
#ifdef DEBUG //ne fonctionne que si #define DEBUG est défini
puts("Lecture reussie de la configuration initiale !!!! \n");
#endif
/*-------------------------------------------------------*/
/* Modification de la configuration récupérée */
/*-------------------------------------------------------*/
dcb.BaudRate=CBR_9600;
dcb.ByteSize=8;
dcb.StopBits=ONESTOPBIT;
dcb.Parity=NOPARITY;
dcb.fParity=FALSE;
/*-----------------------------------------------*/
/* Aplication de la nouvelle configuration */
/*-----------------------------------------------*/
if (SetCommState(hCom,&dcb)==0)
FatalAppExit(0,"Erreur de l'application de la nouvelle configuration !!!!");
#ifdef DEBUG //ne fonctionne que si #define DEBUG est défini
puts("Application reussie de la nouvelle configuration !!!! \n");
#endif
/*------------------------------------------------*/
/* Réception */
/*------------------------------------------------*/
//RÉCEPTION DU BLOC DE DONNÉES
if(GetCommTimeouts(hCom, &timeouts)==0)
FatalAppExit(0,"Erreur recuperation des donnees timeout");
timeouts.ReadIntervalTimeout=0;
timeouts.ReadTotalTimeoutMultiplier=0;
timeouts.ReadTotalTimeoutConstant=30;
if(SetCommTimeouts(hCom, &timeouts)==0)
FatalAppExit(0,"Erreur envoie des donnees timeout");
cpt=0;
do
{
ReadFile(hCom,tab2,1,&NbRx,NULL);
if(NbRx==1)
{
cpt++;
}
}while((NbRx==1)||(cpt==0));
printf("Poids : %d g \n", tab2);
/*printf("Nb d'octets recus : %d\n",cpt);
for(i=0; i<cpt; i++)
printf("%02X : %c \n",(unsigned char)tab2[i],(unsigned char)tab2[i]);*/
/*------------------------------------------*/
/* Fermer le port de com */
/*------------------------------------------*/
if (CloseHandle(hCom)==0)
FatalAppExit(0,"Erreur de fermeture du port COM1 !!!!");
#ifdef DEBUG //ne fonctionne que si #define DEBUG est défini
puts("Port COM1 ferme !!!! \n");
#endif
return 0;
} |
Partager