QuakeGod
2024-12-24 61deef5cdf96cbfdd6ad45be49e80d597c00ca65
提交 | 用户 | 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;
61deef 36     bool m_bAutoReConnect = 1;
Q 37     bool m_bUseWorkThread = 0;
418cb3 38
Q 39 //    CCriticalSection m_CS1;
40 //    CCriticalSection m_CS2;
41
42     volatile bool MyThreadProc1ToRun;
43     volatile bool MyThreadProc1Running;
44
45     volatile int RecvBufDataLen = 0;
61deef 46     unsigned char RecvBuf[4096];
418cb3 47     volatile int RecvBufPos = 0;
Q 48
61deef 49     unsigned char RecvBuf2[4096];
418cb3 50     DWORD m_dwError;
Q 51     CString m_strResult;
61deef 52     int m_nCountToTry = 3;
418cb3 53     int m_nCountToWait = 1;
Q 54
55     volatile    DWORD TotalSendBytes, TotalRecvBytes;
56     volatile    DWORD SendBytes, RecvBytes;
57     volatile    DWORD LastSendBytes, LastRecvBytes;
58     volatile     DWORD SendSpeed, RecvSpeed;
59     volatile    double LastTime;
60
61     typedef int(*pRecvDone)(void *, int); //RecvDone CallBack func
62     int m_bRecvDoneCBSet = 0;
63     typedef int(*pEventCB)(int ,void *); //Event CallBack func
64     int m_bEventCBSet = 0;
65
66     pRecvDone RecvDoneCB =NULL;
67     pEventCB EventCB=NULL;
68
69     HvSerialPort1(void)
70     {
71         this->hCom1 = INVALID_HANDLE_VALUE;
72         this->m_bOpened = 0;
73
74         this->m_nPort = 0;
75         this->m_nBaudRate = 0;
76         this->m_Settings.Empty();
77
78         this->m_dwError = 0;
79     };
80     ~HvSerialPort1()
81     {
82         MyThreadProc1ToRun = 0;
83         if (this->m_bOpened) { this->Close(); }
84         this->hCom1 = INVALID_HANDLE_VALUE;
85
86     };
87 public:
88     int Init();
89
90 public:
91     int SetParams(int nPortNum, int BaudRate, CString Settings);
92
93     int Open();
94     int ClearStatData();
95     int CalSpeed();
96
97     int Close();
98     int SetRecvDoneCallBack(pRecvDone);
99
100     int ClearBuf();
101
102     int Send(void * pBuf, int len1);
103     int Recv(void * pBuf, int len1);
104     int RecvFromCom(void * pBuf, int len1);
105     int RecvFromBuf(void * pBuf, int len1);
106
107 protected:
108 //    int PurgeComBuf()
109 //    {
110         //ClearCommError()
111 //        return    PurgeComm(hCom1, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
112 //    }
113
114
115     static UINT MyJumper1(LPVOID pParam);
116     DWORD WINAPI MyThreadProc1(LPVOID pParam);
117
118 };
119