whyclwt
2022-05-18 ab72c6e114d7c4e83564194367ba623ca23bf09d
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
64
65
66
67
68
#ifndef UART_DRIVER_H
#define UART_DRIVER_H
 
#include <QThread>
#include "Common/app_define.h"
#include <QMutex>
 
 
class Uart_Driver : public QThread
{
    Q_OBJECT
public:
    explicit Uart_Driver(QObject *parent = 0);
 
    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;
 
    int ModBusRead( const quint8 device_addr,const quint16 data_addr,const quint16 read_data_num,
                    void *read_data_buf, const quint16 timeout_ms );
    int ModBusMultiWrite(const quint8 device_addr, const quint16 data_addr,quint16 *wr_data_buf,
                         const quint16 WriteDataNum, const quint16 timeout_ms);
    int ModBusSingleWrite( const quint8 device_addr,const quint16 data_addr,
                           const quint16 wr_data, const quint16 timeout_ms );
 
    int Tx_Rx_Data(void *txdata, const int txlen, void *rxdata, const int timeout_ms);
 
    int Tx_Rx_Data_ESP32(void *txdata, const int txlen, void *rxdata, const int rxlen);
    int ReadData_ESP32(void *rxdata, const int timeout_ms);
 
public:
    int FD;
 
public:
    int OpenDev(const char *Dev);
    void SetDevAttr(int bitrate, char bitlen, char stopbitlen, char checktype);
 
    void ClearRxBuff(void);
 
    int WriteDev(void *buf, int len);
 
private:
    //int WriteDev(void *buf, int len);
    int ReadDev(void *buf, int len);
    int ReadData(void *buf, const int len, const int timeout_ms);
    void set_speed(int fd, int speed);
    int set_Parity(int fd,int databits,int stopbits,int parity);
 
 
 
 
};
 
 
#define Swap16(u16) ((quint16)(((quint16)(u16) >> 8)|((quint16)(u16) << 8)))
#define Swap32(u32) ((quint32)(((quint32)(u32) >> 16)|((quint32)(u32) << 16)))
 
#define     FUNC_CODE_READ             0x03
#define     FUNC_CODE_SINGLE_WRITE     0x06
#define     FUNC_CODE_MULTI_WRITE     0x10
 
 
 
 
 
#endif // UART_DRIVER_H