/* * Serial.h & Serial.cpp - (C) 2007 by Torben H. Nielsen * * A wrapper class for communicating with a serial port */ #pragma once #include #include #include #ifndef _MSC_VER // inline void Sleep(int x) { usleep(x*1000);} #include #endif class CSerial { public: //public enumerations enum Baudrate { Baud300, Baud600, Baud1200, Baud2400, Baud4800, Baud9600, Baud19200, Baud38400, Baud57600, Baud115200 }; public: //public methods CSerial(); CSerial(char* port, Baudrate bitrate); virtual ~CSerial(void); void close(); void open(char* port, Baudrate bitrate); int readByte(); void writeByte(unsigned char out); void writeBytes(unsigned char* buf, unsigned int len); int readBytes(unsigned char* buf, unsigned int maxLen); #ifdef _MSC_VER COMSTAT getComstat() const; #endif int bytesReady() const; int outQueueSize() const; char* getPort() const {return mPortstr;} Baudrate getBitrate() const {return mBitrate;} bool isOpen() { return mIsopen; } protected: void printByte(char* description, unsigned char byte); int convertBaudrate(Baudrate rate); #ifdef _MSC_VER void openWindows(); int readBytesWindows(unsigned char*buf, unsigned int maxLen); void writeBytesWindows(unsigned char* buf, unsigned int len); #else void openLinux(); int readBytesLinux(unsigned char* buf, unsigned int maxLen); void writeBytesLinux(unsigned char* buf, unsigned int len); #endif private: // member vars #ifdef _MSC_VER HANDLE mComport; DCB mDcbRestore; #else int mFiledescriptor; termios mOldtio; #endif char* mPortstr; Baudrate mBitrate; bool mIsopen; };