QuakeGod
2023-09-05 df03213660361b1c771f0a3f21b6ddaeaef7763a
提交 | 用户 | age
418cb3 1 #pragma once
Q 2
3 #ifdef KLINK_EXPORTS
4 #define KLINK1_API __declspec(dllexport)
5 #else
6 #define KLINK1_API __declspec(dllimport)
7 #endif
8
9 #include "pch.h"
10
11 class KLINK1_API HvSerialPort1
12 {
13 public:
14     double GetTimemS()
15     {
16         LARGE_INTEGER perfreq;
17         LARGE_INTEGER percounter1;
18         QueryPerformanceFrequency(&perfreq);
19         QueryPerformanceCounter(&percounter1);
20
21         double time1 = (double)percounter1.QuadPart / perfreq.QuadPart;
22         return (time1 * 1000);
23     };
24 public:
25     enum Results {
26         R_ERR = -1,
27         R_OK = 0 ,
28         R_ERR2 =1,
29     };
30     HANDLE hCom1;
31     bool m_bOpened;
32     int m_nPort;
33     int m_nBaudRate;
34     CString m_Settings;
35     CRITICAL_SECTION g_cs;
36
37 //    CCriticalSection m_CS1;
38 //    CCriticalSection m_CS2;
39
40     volatile bool MyThreadProc1ToRun;
41     volatile bool MyThreadProc1Running;
42
43     volatile int RecvBufDataLen = 0;
44     unsigned char * RecvBuf[4096];
45     volatile int RecvBufPos = 0;
46
47     unsigned char * RecvBuf2[4096];
48     DWORD m_dwError;
49     CString m_strResult;
50     int m_nCountToTry = 5;
51     int m_nCountToWait = 1;
52
53     volatile    DWORD TotalSendBytes, TotalRecvBytes;
54     volatile    DWORD SendBytes, RecvBytes;
55     volatile    DWORD LastSendBytes, LastRecvBytes;
56     volatile     DWORD SendSpeed, RecvSpeed;
57     volatile    double LastTime;
58
59     typedef int(*pRecvDone)(void *, int); //RecvDone CallBack func
60     int m_bRecvDoneCBSet = 0;
61     typedef int(*pEventCB)(int ,void *); //Event CallBack func
62     int m_bEventCBSet = 0;
63
64     pRecvDone RecvDoneCB =NULL;
65     pEventCB EventCB=NULL;
66
67     HvSerialPort1(void)
68     {
69         this->hCom1 = INVALID_HANDLE_VALUE;
70         this->m_bOpened = 0;
71
72         this->m_nPort = 0;
73         this->m_nBaudRate = 0;
74         this->m_Settings.Empty();
75
76         this->m_dwError = 0;
77     };
78     ~HvSerialPort1()
79     {
80         MyThreadProc1ToRun = 0;
81         if (this->m_bOpened) { this->Close(); }
82         this->hCom1 = INVALID_HANDLE_VALUE;
83
84     };
85 public:
86     int Init();
87
88 public:
89     int SetParams(int nPortNum, int BaudRate, CString Settings);
90
91     int Open();
92     int ClearStatData();
93     int CalSpeed();
94
95     int Close();
96     int SetRecvDoneCallBack(pRecvDone);
97
98     int ClearBuf();
99
100     int Send(void * pBuf, int len1);
101     int Recv(void * pBuf, int len1);
102     int RecvFromCom(void * pBuf, int len1);
103     int RecvFromBuf(void * pBuf, int len1);
104
105 protected:
106 //    int PurgeComBuf()
107 //    {
108         //ClearCommError()
109 //        return    PurgeComm(hCom1, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
110 //    }
111
112
113     static UINT MyJumper1(LPVOID pParam);
114     DWORD WINAPI MyThreadProc1(LPVOID pParam);
115
116 };
117