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 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
| #include <windows.h>
#include <iostream>
using namespace std;
int main(void)
{
// On crée un handle que l'on initialise à NULL.
HANDLE SPort=NULL;
DWORD Event;
COMMCONFIG tR;
// Sport est un handle ( identifiant )
// Pour mieux comprendre les paramètre passés
// consultez la fonction CreateFile();
SPort = CreateFile("COM1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
// Le handle sera le lien entre notre apllication
// et le port série.
// Ici ce sera le port indiquédans le tableau COM déclaré au début qui sera ouvert.
if ( SPort == INVALID_HANDLE_VALUE )
{
MessageBox(0,"Le port selectionne ne peut etre ouvert ou l'est deja","Erreur",MB_OK);
cout << "Le port selectionne ne peut etre ouvert ou l'est deja"<<endl<<endl ;
system( "pause" );
}
// Vérification de parité désactivée
tR.dcb.fParity=NOPARITY;
// La taille du mot donnée est de
tR.dcb.ByteSize=8;
// Un bit de stop
tR.dcb.StopBits=ONESTOPBIT;
// désactive les Xon-Xoff
tR.dcb.fInX=FALSE;
tR.dcb.fOutX=FALSE;
// Configuration du BaudRate
tR.dcb.BaudRate= CBR_4800;
// Enregistrer les modifications apportées
// au paramètres Xon-Xoff
SetCommConfig(SPort, &tR, sizeof(tR));
// On remplit la strucuture COMMTIMEOUTS
COMMTIMEOUTS tMyTimeOuts = {
100,
0,
0,
1000,
1000
};
//Enregistre les modifications concernant le CommTimeouts
if (!SetCommTimeouts(SPort, &tMyTimeOuts) )
{
MessageBox(0,"Erreur de configuration","Erreur",MB_OK);
system( "pause" );
}
unsigned char buffer;
DWORD nb;
long a,b,c,d,e,A,B,C,D,E;
unsigned long tab[50],TAB[50];
int i,choix;
cout<<"### TRAME A EMETTRE ###"<<endl<<endl<<endl;
cout<<"Choix du mode de transmission : "<<endl<<endl;
cout<<"1) Manuel "<<endl;
cout<<"2) Trame donnee "<<endl;
cout<<"3) Quitter "<<endl;
cout<<"Choix : 1 / 2 / 3 ? "<<endl;
cout<<"Votre choix est : ";
cin>>choix;
while (1)
{
if(choix==1)
{
cout<<endl<<endl<<"-> Parametrage manuel de la trame... "<<endl;
cout<<endl<<"Adresse de l'esclave : ";
cin>>a;
tab[0]=a;
cout<<endl<<"Code fonction : ";
cin>>b;
tab[1]=b;
cout<<endl<<"Numero du registre du debut de lecture : ";
cin>>c;
tab[2]=c;
cout<<endl<<"Nombre du registre du debut de lecture : ";
cin>>d;
tab[3]=d;
cout<<endl<<"CRC : ";
cin>>e;
tab[4]=e;
cout<<endl<<endl<<"Trame a envoyer : "<<endl<<endl;
for(i=0;i<=4;i++)
{
cout<<tab[i]<<" ";
}
cout<<endl<<"ou"<<endl<<endl;
for(i=0;i<=4;i++)
{
cout<<i<<" ";
cout<<tab[i]<<endl;
buffer=tab[i];
WriteFile(SPort,&buffer,1,&nb,0);
}
cout<<endl<<endl<<endl;
cout<<"Nouvelle trame ..."<<endl<<endl;
cout<<"Choix du mode de transmission : "<<endl<<endl;
cout<<"1) Manuel "<<endl;
cout<<"2) Trame donnee "<<endl;
cout<<"3) Quitter "<<endl;
cout<<"Choix : 1 / 2 / 3 ? "<<endl;
cout<<"Votre choix est : ";
cin>>choix;
}
if(choix==2)
{
cout<<endl<<endl<<"-> Parametrage donnee de la trame... "<<endl;
A=04;
TAB[0]=A;
B=03;
TAB[1]=B;
C=0002;
TAB[2]=C;
D=0001;
TAB[3]=D;
E=2515;
TAB[4]=E;
cout<<endl<<endl<<"Trame a envoyer : "<<endl<<endl;
for(i=0;i<=4;i++)
{
cout<<TAB[i]<<" ";
}
cout<<endl<<"ou"<<endl<<endl;
for(i=0;i<=4;i++)
{
cout<<i<<" ";
cout<<TAB[i]<<endl;
buffer=TAB[i];
WriteFile(SPort,&buffer,1,&nb,0);
}
cout<<endl<<endl<<endl;
cout<<"Nouvelle trame ?"<<endl;
cout<<"Choix du mode de transmission : "<<endl<<endl;
cout<<"1) Manuel "<<endl;
cout<<"2) Trame donnee "<<endl;
cout<<"3) Quitter "<<endl;
cout<<"Choix : 1 / 2 / 3 ? "<<endl;
cout<<"Votre choix est : ";
cin>>choix;
}
if(choix==3)
{
cout<<endl<<endl<<"Fermer l'application en cliquant sur une touche...";
cout<<endl<<endl;
system( "pause" );
}
if(choix>3)
{
cout<<"erreur"<<endl;
cout<<"redemarrer l'application"<<endl;
system( "pause" );
}
}
system( "pause" );
} |
Partager