M
						
					
					
						
					
				
				
					ich hab mal für elexs versucht ne klasse zum comport zu schreiben, sie wurde nie fertieg, ihr könnt sie benutzten und erweitern, wenn ihr mir die erweiterungen->verbesserungen mitteilt 
Die CPORT.CPP
#include <windows.h>
#include "CPORT.H"
HANDLE hCom;
DWORD COMStatus;
ComPort::SetOPEN(int PORT)
{
    if(PORT<=0||PORT>4)
    {
        return WRONG_PORT;
    }
    char*CP[]={"COM1","COM2","COM3","COM4"};
    hCom = CreateFile(CP[PORT-1],
    GENERIC_READ | GENERIC_WRITE,
    0,
    NULL,
    OPEN_EXISTING,
    0,               /* no overlapped I/O             */
    NULL);           /* must be NULL for comm devices */
    return 0;
}
ComPort::SetCLOSE()
{
    CloseHandle(hCom);
    return 0;
}
ComPort::SetDTR(bool mode)
{
    if(mode==ON)
    {   
        EscapeCommFunction(hCom, SETDTR);  // setzen
    }
    else
    {
        EscapeCommFunction(hCom, CLRDTR);  // Loeschen  
    }
    return 0;
}
ComPort::SetRTS(bool mode)
{
    if(mode==ON)
    {   
        EscapeCommFunction(hCom, SETRTS);  // setzen
    }
    else
    {
        EscapeCommFunction(hCom, CLRRTS);  // Loeschen      
    }
    return 0;
}
ComPort::SetTXD(bool mode)
{
    if(mode==ON)
    {   
        EscapeCommFunction(hCom, SETBREAK);  // setzen
    }
    else
    {
        EscapeCommFunction(hCom, CLRBREAK);  // Loeschen    
    }
    return 0;
}
int   ComPort::SENDEN   (char* text)
{
    //WriteFile(hCom,text);
    return 0;
}
char* ComPort::EMPFANGEN ()
{
    char* text;
    //ReadFile(hCom,text);
    return text;
}
void ComPort::WARTE(int ms)
{
    Sleep(ms);
}
bool ComPort::GetCTS()
{
    GetCommModemStatus(hCom, &COMStatus);  
    if(COMStatus & MS_CTS_ON)
    {
        return ON;
    }
    return OFF;
}
bool ComPort::GetDSR()
{
    GetCommModemStatus(hCom, &COMStatus);  
    if(COMStatus & MS_DSR_ON)
    {
        return ON;
    }
    return OFF;
}
Die CPORT.H
#pragma once
#define WRONG_PORT 100
#define INVALID_PORT 101
#define ON  true
#define OFF false
class ComPort
{
public:
    int   SetOPEN   (int PORT);
    int   SetCLOSE  (void);
    int   SetDTR    (bool mode);
    int   SetRTS    (bool mode);
    int   SetTXD    (bool mode);
    int   SENDEN    (char* text);
    bool  GetCTS    ();
    bool  GetDSR    ();
    void  WARTE     (int ms);
    char* EMPFANGEN (void);
};
das #pragma once bewirkt, das die header nur einmal eingebun´den wird beim vc++
da gibts bestimmt auch ne bessere methode