QuakeGod
2021-12-29 0a20f73829d9d53e060927f23c2777f10347ac65
提交 | 用户 | age
0ed438 1 #pragma once
Q 2 class HvSerialPort
3 {
4 public:
5     double GetTimeMs()
6     {
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     {
67         if (this->m_bOpened) { this->Close(); }
68         this->hCom1 = INVALID_HANDLE_VALUE;
69
70     };
71 public:
72     int Init();
73
74 public:
75     int SetParams(int nPortNum, int BaudRate, CString Settings);
76     int PurgeComBuf()
77     {
78         return    PurgeComm(hCom1, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_TXCLEAR);
79     }
80
81     int Open();
82     int ClearStatData();
83     int CalSpeed();
84
85     int Close();
86     int SetRecvDoneCallBack(pRecvDone);
87
88     int Send(void * pBuf, int len1);
89     int Recv(void * pBuf, int len1);
90
91     static UINT MyJumper1(LPVOID pParam);
92     DWORD WINAPI MyThreadProc1(LPVOID pParam);
93
94 };
95