00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _SERIAL_HXX
00028 #define _SERIAL_HXX
00029
00030
00031 #ifndef __cplusplus
00032 # error This library requires C++
00033 #endif
00034
00035 #ifdef _WIN32
00036 # include <windows.h>
00037 #endif
00038
00039 #include <simgear/compiler.h>
00040 #include <string>
00041 using std::string;
00042
00043
00044
00045
00046
00050 class SGSerialPort
00051 {
00052 #ifdef _WIN32
00053 typedef HANDLE fd_type;
00054 #else
00055 typedef int fd_type;
00056 #endif
00057
00058 private:
00059
00060 fd_type fd;
00061 bool dev_open;
00062
00063 public:
00064
00066 SGSerialPort();
00067
00073 SGSerialPort(const string& device, int baud);
00074
00076 ~SGSerialPort();
00077
00082 bool open_port(const string& device);
00083
00087 bool close_port();
00088
00093 bool set_baud(int baud);
00094
00098 string read_port();
00099
00105 int read_port(char *buf, int len);
00106
00111 int write_port(const string& value);
00112
00118 int write_port(const char *buf, int len);
00119
00121 inline bool is_enabled() { return dev_open; }
00122 };
00123
00124
00125 #endif // _SERIAL_HXX
00126
00127