00001
00019 #ifndef SERIALIB_H
00020 #define SERIALIB_H
00021
00022
00023
00024 #include <sys/time.h>
00025
00026 #if defined (_WIN32) || defined( _WIN64)
00027
00028 #include <windows.h>
00029 #endif
00030
00031
00032 #ifdef __linux__
00033 #include <stdlib.h>
00034 #include <sys/types.h>
00035 #include <sys/shm.h>
00036 #include <termios.h>
00037 #include <string.h>
00038 #include <iostream>
00039
00040 #include <fcntl.h>
00041 #include <unistd.h>
00042 #include <sys/ioctl.h>
00043 #endif
00044
00045
00046
00053 class serialib
00054 {
00055 public:
00056
00057 serialib ();
00058
00059
00060 ~serialib ();
00061
00062
00063
00064
00065
00066
00067
00068
00069 char Open (const char *Device,const unsigned int Bauds);
00070
00071
00072 void Close();
00073
00074
00075
00076
00077
00078
00079
00080
00081 char WriteChar (char);
00082
00083
00084 char ReadChar (char *pByte,const unsigned int TimeOut_ms=NULL);
00085
00086
00087
00088
00089
00090
00091
00092
00093 char WriteString (const char *String);
00094
00095 int ReadString ( char *String,
00096 char FinalChar,
00097 unsigned int MaxNbBytes,
00098 const unsigned int TimeOut_ms=NULL);
00099
00100
00101
00102
00103
00104
00105
00106
00107 char Write (const void *Buffer, const unsigned int NbBytes);
00108
00109
00110 int Read (void *Buffer,unsigned int MaxNbBytes,const unsigned int TimeOut_ms=NULL);
00111
00112
00113
00114
00115
00116
00117
00118 void FlushReceiver();
00119
00120
00121 int Peek();
00122
00123 private:
00124
00125 int ReadStringNoTimeOut (char *String,char FinalChar,unsigned int MaxNbBytes);
00126
00127
00128 #if defined (_WIN32) || defined( _WIN64)
00129 HANDLE hSerial;
00130 COMMTIMEOUTS timeouts;
00131 #endif
00132 #ifdef __linux__
00133 int fd;
00134 #endif
00135
00136 };
00137
00138
00139
00143
00144 class TimeOut
00145 {
00146 public:
00147
00148
00149 TimeOut();
00150
00151
00152 void InitTimer();
00153
00154
00155 unsigned long int ElapsedTime_ms();
00156
00157 private:
00158 struct timeval PreviousTime;
00159 };
00160
00161
00162
00219 #endif // SERIALIB_H
00220