30.11.2010 - initial commit
This commit is contained in:
75
piserial.h
Normal file
75
piserial.h
Normal file
@@ -0,0 +1,75 @@
|
||||
#ifndef PISERIAL_H
|
||||
#define PISERIAL_H
|
||||
|
||||
#include "pithread.h"
|
||||
#ifndef WINDOWS
|
||||
#include <termios.h>
|
||||
#include <fcntl.h>
|
||||
#else
|
||||
#define B110 110
|
||||
#define B300 300
|
||||
#define B600 600
|
||||
#define B1200 1200
|
||||
#define B2400 2400
|
||||
#define B4800 4800
|
||||
#define B9600 9600
|
||||
#define B14400 14400
|
||||
#define B19200 19200
|
||||
#define B38400 38400
|
||||
#define B57600 57600
|
||||
#define B115200 115200
|
||||
#define B128000 128000
|
||||
#define B256000 256000
|
||||
#endif
|
||||
|
||||
#define BUFFER_SIZE 4096
|
||||
|
||||
typedef bool (*SerialFunc)(void * , char * );
|
||||
|
||||
class PISerial: public PIThread
|
||||
{
|
||||
public:
|
||||
// slot is any function format "bool <func>(void*, char*)"
|
||||
PISerial(string name, void * data, SerialFunc slot = 0);
|
||||
~PISerial();
|
||||
|
||||
enum Parameters {IgnoreParityControl = 0x01, TwoStopBits = 0x02};
|
||||
|
||||
void setSlot(SerialFunc func) {ret_func = func;}
|
||||
void setSpeed(int speed) {ospeed = ispeed = speed;}
|
||||
void setOutSpeed(int speed) {ospeed = speed;}
|
||||
void setInSpeed(int speed) {ispeed = speed;}
|
||||
void setParameters(Flags<PISerial::Parameters> parameters) {params = parameters;}
|
||||
void setReadData(void * headerPtr, int headerSize, int dataSize) {this->headerPtr = headerPtr;
|
||||
this->headerSize = headerSize;
|
||||
this->dataSize = dataSize;}
|
||||
|
||||
bool send(char * data, int size);
|
||||
bool init();
|
||||
bool initialized() const {return fd != -1;}
|
||||
|
||||
private:
|
||||
void begin();
|
||||
void run();
|
||||
void end();
|
||||
|
||||
#ifdef WINDOWS
|
||||
DCB desc, sdesc;
|
||||
void * hCom;
|
||||
DWORD readed, mask;
|
||||
#else
|
||||
termios desc, sdesc;
|
||||
int readed;
|
||||
#endif
|
||||
int fd, ospeed, ispeed;
|
||||
string devName;
|
||||
SerialFunc ret_func;
|
||||
char * buffer, * sbuffer, * hbuffer, * pbuffer;
|
||||
void * headerPtr, * data;
|
||||
int dataSize, headerSize, sbuffIndex, startIndex, backIndex;
|
||||
Flags<PISerial::Parameters> params;
|
||||
bool first, tryagain;
|
||||
|
||||
};
|
||||
|
||||
#endif // PISERIAL_H
|
||||
Reference in New Issue
Block a user