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
|
class CLiaisonSerie
{
private:
HANDLE m_ComPort;
DCB m_config;
OVERLAPPED m_Ov;
public:
CLiaisonSerie(void);
~CLiaisonSerie(void);
BOOL Connecter(void);
BOOL Deconnecter(void);
BOOL Transmettre(CString buffer);
};
CLiaisonSerie::CLiaisonSerie(void)
{
m_Ov.hEvent=NULL;
}
CLiaisonSerie::~CLiaisonSerie(void)
{
}
BOOL CLiaisonSerie::Connecter(void)
{
BOOL err;
// ***** OUVERTURE DU PORT *****
m_ComPort = 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, //Doit être à cette valeur car se n’est pas un fichier
FILE_FLAG_OVERLAPPED, // mode asynchrone asynchrone
NULL
);
err = m_ComPort == INVALID_HANDLE_VALUE;
if (!err){
memset(&m_Ov,0,sizeof(m_Ov));
// ***** CONFIGURATION DU PORT *****
GetCommState(m_ComPort,&m_config);
m_config.BaudRate=115200;
m_config.Parity=0;
m_config.StopBits=0;
m_config.ByteSize=8;
err = SetCommState(m_ComPort,&m_config) == 0;
}
return(!err);
}
BOOL CLiaisonSerie::Deconnecter(void){
if(m_Ov.hEvent) CloseHandle(m_Ov.hEvent);
m_Ov.hEvent=NULL;
return (CloseHandle(m_ComPort) == S_OK);
}
BOOL CLiaisonSerie::Transmettre(CString buffer){
DWORD nWritten;
BOOL Err;
Err = WriteFile(m_ComPort, (LPCTSTR)buffer, buffer.GetLength(), &nWritten, &m_Ov);
if (!Err) Err = nWritten != buffer.GetLength();
return !Err;
} |
Partager