Ubuntu12.04.4_lts
2023-08-01 961efe36f62f7eba688d504ec0cdf3e1daa4dd74
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#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