/* ------------------------------------------------------------------------ -- -- -- -- PC serial port connection object -- -- for non-event-driven programs -- -- -- -- -- -- -- -- Copyright @ 2001 Thierry Schneider -- -- thierry@tetraedre.com -- -- -- -- -- -- -- -- ------------------------------------------------------------------------ -- -- -- -- Filename : sertest2.cpp -- -- Author : Thierry Schneider -- -- Created : April 4th 2000 -- -- Modified : April 8th 2001 -- -- Plateform: Windows 95, 98, NT, 2000 (Win32) -- -- ------------------------------------------------------------------------ -- -- -- -- This software is given without any warranty. It can be distributed -- -- free of charge as long as this header remains, unchanged. -- -- -- -- ------------------------------------------------------------------------ */ // modified by Chris O. Nov-02-2010 /* ---------------------------------------------------------------------- */ #ifndef TSERIAL_H #define TSERIAL_H enum ComPortTimeouts { RxIntrvlTimeout = 200, // Read Interval Timeout RxTotalTimeoutMultip = 10, // Read Total Timeout Multiplier RxTotalTimeoutConst = 500, // Read Total Timeout Constant TxTotalTimeoutMultip = 10, // Write Total Timeout Multiplier TxTotalTimeoutConst = 200 // Write Total Timeout Constant }; enum serial_parity { spNONE, spODD, spEVEN }; /* -------------------------------------------------------------------- */ /* ----------------------------- Tserial ---------------------------- */ /* -------------------------------------------------------------------- */ class Tserial { // -------------------------------------------------------- // protected: static const int iMaxPortName = 10; char port[iMaxPortName]; // port name "com1",... int rate; // baudrate serial_parity parityMode; HANDLE serial_handle; // ... DWORD dwReadTotalTimeout; // timeout set while port is opened DCB dcbOrg; COMMTIMEOUTS ctoOrg; DWORD cmOrg; // ++++++++++++++++++++++++++++++++++++++++++++++ // .................. EXTERNAL VIEW ............. // ++++++++++++++++++++++++++++++++++++++++++++++ public: Tserial(); ~Tserial(); DWORD connect (const char *port_arg, int rate_arg, serial_parity parity_arg); DWORD disconnect (void); DWORD reconnect (void); BOOL isconnected() { return serial_handle==INVALID_HANDLE_VALUE ? FALSE : TRUE; } DWORD sendChar (char c); DWORD sendArray (const char *buffer, int len); DWORD getChar(char *c); DWORD getArray (char *buffer, int len, DWORD *iReadNum); int getNbrOfBytes (void); DWORD ChangeCommTimeouts(DWORD dwTimeout); DWORD ResetCommTimeouts(); DWORD ChangeCommBaudrate(DWORD dwBaudRate); DWORD GetCommBaudrate(DWORD *dwBaudrate); }; /* -------------------------------------------------------------------- */ #endif TSERIAL_H