29.07.2011 - fundamental new
This commit is contained in:
36
piserial.h
36
piserial.h
@@ -25,23 +25,36 @@
|
||||
|
||||
#define BUFFER_SIZE 4096
|
||||
|
||||
typedef bool (*SerialFunc)(void * , char * );
|
||||
typedef bool (*SerialFunc)(void * , char * , int );
|
||||
|
||||
class PISerial: public PIThread
|
||||
{
|
||||
public:
|
||||
// slot is any function format "bool <func>(void*, char*)"
|
||||
// slot is any function format "bool <func>(void*, char*, int)"
|
||||
PISerial(PIString name = "serial", void * data = 0, SerialFunc slot = 0);
|
||||
~PISerial();
|
||||
|
||||
enum Parameters {IgnoreParityControl = 0x01, TwoStopBits = 0x02};
|
||||
enum Parameters {ParityControl = 0x01, ParityOdd = 0x02, TwoStopBits = 0x04};
|
||||
enum Speed {
|
||||
S110 = 110,
|
||||
S300 = 300,
|
||||
S600 = 600,
|
||||
S1200 = 1200,
|
||||
S2400 = 2400,
|
||||
S4800 = 4800,
|
||||
S9600 = 9600,
|
||||
S19200 = 19200,
|
||||
S38400 = 38400,
|
||||
S57600 = 57600,
|
||||
S115200 = 115200
|
||||
};
|
||||
|
||||
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 setSpeed(PISerial::Speed speed) {ospeed = ispeed = speed;}
|
||||
void setOutSpeed(PISerial::Speed speed) {ospeed = speed;}
|
||||
void setInSpeed(PISerial::Speed speed) {ispeed = speed;}
|
||||
void setDevice(const PIString & dev) {devName = dev;}
|
||||
void setParameters(Flags<PISerial::Parameters> parameters) {params = parameters;}
|
||||
void setParameters(PIFlags<PISerial::Parameters> parameters) {params = parameters;}
|
||||
void setData(void * d) {data = d;}
|
||||
void setReadData(void * headerPtr, int headerSize, int dataSize) {this->headerPtr = headerPtr;
|
||||
this->headerSize = headerSize;
|
||||
@@ -53,6 +66,8 @@ public:
|
||||
void terminate();
|
||||
|
||||
private:
|
||||
int convertSpeed(PISerial::Speed speed);
|
||||
|
||||
void begin();
|
||||
void run();
|
||||
void end();
|
||||
@@ -65,13 +80,14 @@ private:
|
||||
termios desc, sdesc;
|
||||
uint readed;
|
||||
#endif
|
||||
int fd, ospeed, ispeed;
|
||||
int fd;
|
||||
PISerial::Speed ospeed, ispeed;
|
||||
PIString devName;
|
||||
SerialFunc ret_func;
|
||||
char * buffer, * sbuffer, * hbuffer, * pbuffer;
|
||||
char buffer[BUFFER_SIZE], sbuffer[BUFFER_SIZE], * hbuffer, * pbuffer;
|
||||
void * headerPtr, * data;
|
||||
int dataSize, headerSize, sbuffIndex, startIndex, backIndex;
|
||||
Flags<PISerial::Parameters> params;
|
||||
PIFlags<PISerial::Parameters> params;
|
||||
bool first, tryagain;
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user