QuakeGod
2022-01-16 326d3e312c74726814c39c9d112faab03c4a167c
提交 | 用户 | age
0ed438 1 #pragma once
Q 2 class HvSerialPort
3 {
4 public:
326d3e 5     double GetTimemS()
0ed438 6     {
Q 7         LARGE_INTEGER perfreq;
8         LARGE_INTEGER percounter1;
9         QueryPerformanceFrequency(&perfreq);
10         QueryPerformanceCounter(&percounter1);
11
12         double time1 = (double)percounter1.QuadPart / perfreq.QuadPart;
13         return (time1 * 1000);
14     };
15 public:
16     enum Results {
17         R_ERR = -1,
18         R_OK = 0 ,
19         R_ERR2 =1,
20     };
21     HANDLE hCom1;
22     bool m_bOpened;
23     int m_nPort;
24     int m_nBaudRate;
25     CString m_Settings;
26     CCriticalSection m_CS1;
27     CCriticalSection m_CS2;
28
29     volatile bool MyThreadProc1ToRun;
30     volatile bool MyThreadProc1Running;
31
32     volatile int RecvBufDataLen = 0;
33     unsigned char * RecvBuf[2048];
34
35     DWORD m_dwError;
36     CString m_strResult;
37     int m_nCountToTry = 5;
38     int m_nCountToWait = 0;
39
40     volatile    DWORD TotalSendBytes, TotalRecvBytes;
41     volatile    DWORD SendBytes, RecvBytes;
42     volatile    DWORD LastSendBytes, LastRecvBytes;
43     volatile     DWORD SendSpeed, RecvSpeed;
44     volatile    double LastTime;
45
46     typedef int(*pRecvDone)(void *, int); //RecvDone CallBack func
47     int m_bRecvDoneCBSet = 0;
48     typedef int(*pEventCB)(int ,void *); //Event CallBack func
49     int m_bEventCBSet = 0;
50
51     pRecvDone RecvDoneCB =NULL;
52     pEventCB EventCB=NULL;
53
54     HvSerialPort(void)
55     {
56         this->hCom1 = INVALID_HANDLE_VALUE;
57         this->m_bOpened = 0;
58
59         this->m_nPort = 0;
60         this->m_nBaudRate = 0;
61         this->m_Settings.Empty();
62
63         this->m_dwError = 0;
64     };
65     ~HvSerialPort()
66     {
326d3e 67         MyThreadProc1ToRun = 0;
0ed438 68         if (this->m_bOpened) { this->Close(); }
Q 69         this->hCom1 = INVALID_HANDLE_VALUE;
70
71     };
72 public:
73     int Init();
74
75 public:
76     int SetParams(int nPortNum, int BaudRate, CString Settings);
77     int PurgeComBuf()
78     {
79         return    PurgeComm(hCom1, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_TXCLEAR);
80     }
81
82     int Open();
83     int ClearStatData();
84     int CalSpeed();
85
86     int Close();
87     int SetRecvDoneCallBack(pRecvDone);
88
89     int Send(void * pBuf, int len1);
90     int Recv(void * pBuf, int len1);
91
92     static UINT MyJumper1(LPVOID pParam);
93     DWORD WINAPI MyThreadProc1(LPVOID pParam);
94
95 };
96