SDC C-Project CF Review 프로그램
LYW
2022-04-01 9c13bc5af33d28bb217995597f88fe863db42442
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
 
/* ------------------------------------------------------------------------ --
--                                                                          --
--                        PC serial port connection object                  --
--                           for non-event-driven programs                  --
--                                                                          --
--                                                                          --
--                                                                          --
--  Copyright @ 2001          Thierry Schneider                             --
--                            thierry@tetraedre.com                         --
--                                                                          --
--                                                                          --
--                                                                          --
-- ------------------------------------------------------------------------ --
--                                                                          --
--  Filename : sertest2.cpp                                                 --
--  Author   : Thierry Schneider                                            --
--  Created  : April 4th 2000                                               --
--  Modified : April 8th 2001                                               --
--  Plateform: Windows 95, 98, NT, 2000 (Win32)                             --
-- ------------------------------------------------------------------------ --
--                                                                          --
--  This software is given without any warranty. It can be distributed      --
--  free of charge as long as this header remains, unchanged.               --
--                                                                          --
-- ------------------------------------------------------------------------ */
 
 
// modified by Chris O. Nov-02-2010
 
/* ---------------------------------------------------------------------- */
#ifndef TSERIAL_H
#define TSERIAL_H
 
enum ComPortTimeouts
{
    RxIntrvlTimeout      = 200,  // Read Interval Timeout
    RxTotalTimeoutMultip = 10,   // Read Total Timeout Multiplier
    RxTotalTimeoutConst  = 500,  // Read Total Timeout Constant
    TxTotalTimeoutMultip = 10,   // Write Total Timeout Multiplier
    TxTotalTimeoutConst  = 200   // Write Total Timeout Constant 
};
 
enum serial_parity  { spNONE, spODD, spEVEN };
 
 
/* -------------------------------------------------------------------- */
/* -----------------------------  Tserial  ---------------------------- */
/* -------------------------------------------------------------------- */
class Tserial
{
    // -------------------------------------------------------- //
protected:
    static const int iMaxPortName = 10;
    char              port[iMaxPortName];            // port name "com1",...
    int               rate;                          // baudrate
    serial_parity     parityMode;
    HANDLE            serial_handle;                 // ...
    DWORD              dwReadTotalTimeout;             // timeout set while port is opened
 
    DCB dcbOrg;
    COMMTIMEOUTS ctoOrg;
    DWORD cmOrg;
 
    // ++++++++++++++++++++++++++++++++++++++++++++++
    // .................. EXTERNAL VIEW .............
    // ++++++++++++++++++++++++++++++++++++++++++++++
public:
    Tserial();
    ~Tserial();
 
    DWORD connect (const char *port_arg, 
                   int rate_arg,
                   serial_parity parity_arg); 
    DWORD disconnect (void);
    DWORD reconnect (void);
    BOOL isconnected() { return serial_handle==INVALID_HANDLE_VALUE ? FALSE : TRUE; }
 
    DWORD sendChar (char c);
    DWORD sendArray (const char *buffer, int len);
    DWORD getChar(char *c);
    DWORD getArray (char *buffer, int len, DWORD *iReadNum);
    int   getNbrOfBytes (void);
 
    DWORD ChangeCommTimeouts(DWORD dwTimeout);
    DWORD ResetCommTimeouts();
    DWORD ChangeCommBaudrate(DWORD dwBaudRate);
    DWORD GetCommBaudrate(DWORD *dwBaudrate);
};
/* -------------------------------------------------------------------- */
 
#endif TSERIAL_H