#ifndef RS485_DRIVER_H
|
#define RS485_DRIVER_H
|
|
#include <qthread.h>
|
#include <QDebug>
|
#include <QMutex>
|
#include "Common/data_define.h"
|
//----------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------
|
class RS485Driver : public QThread
|
{
|
Q_OBJECT
|
|
public:
|
RS485Driver(const char *Dev);
|
virtual void run();
|
~RS485Driver();
|
|
static const quint8 DeviceAddr = 1;
|
public:
|
int GetCommTick(void);
|
void IncCommTick(void);
|
|
void SetMonomerNum(const quint16 num);
|
|
int ReadFromIOModule( const quint8 device_addr,const quint16 data_addr,
|
const quint16 read_data_num, void *read_data_buf);
|
int MultiWriteIOModule( const quint8 device_addr,const quint16 data_addr,
|
quint16 *wr_data_buf, const quint16 WriteDataNum);
|
int SingleWriteIOModule( const quint8 device_addr,const quint16 data_addr,
|
const quint16 wr_data, const quint16 timeout_ms);
|
quint8 IF_MONCLEAR;
|
private:
|
int FD;
|
bool RS485_RUN_EN;
|
quint16 MonomerNum;
|
int CommTick;
|
|
quint8 moncount;
|
|
static const int CommOK = 0;
|
static const int CommTxError = -1;
|
static const int CommRxError = -2;
|
static const int CommDataError = -3;
|
static const int CommWrFailError = -4;
|
|
private:
|
void set_speed(int fd, int speed);
|
int set_Parity(int fd,int databits,int stopbits,int parity);
|
unsigned short CalModbusCRC16(void *puchMsg, unsigned short usDataLen);
|
int OpenDev(const char *Dev);
|
void SetDevAttr(int bitrate, char bitlen, char stopbitlen, char checktype);
|
int WriteDev(void *buf, int len);
|
int ReadDev(void *buf, int len);
|
|
signals:
|
void SendCommData(COMM_DATA);
|
|
};
|
|
#define Swap16(u16) ((quint16)(((quint16)(u16) >> 8)|((quint16)(u16) << 8)))
|
|
#endif // RS485_DRIVER_H
|