2021-09-20 23:46:15 +08:00
|
|
|
|
#include<tchar.h>
|
2021-09-20 22:37:32 +08:00
|
|
|
|
#include<iostream>
|
2021-09-20 23:46:15 +08:00
|
|
|
|
//#include<map>
|
|
|
|
|
#include <windows.h>
|
|
|
|
|
//using namespace std;
|
|
|
|
|
#include"serial_port.h"
|
2021-09-20 22:37:32 +08:00
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
map<int, HANDLE> SerialPort::ComMap;
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>캯<EFBFBD><ECBAAF>
|
2021-09-20 22:37:32 +08:00
|
|
|
|
SerialPort::SerialPort()
|
|
|
|
|
{
|
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
} //<2F><><EFBFBD>캯<EFBFBD><ECBAAF>
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2021-09-20 22:37:32 +08:00
|
|
|
|
SerialPort::~SerialPort()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
|
|
|
|
UINT SerialPort::GetPortNum(UINT** PortList)
|
2021-09-20 22:37:32 +08:00
|
|
|
|
{
|
2021-09-20 23:46:15 +08:00
|
|
|
|
LPCTSTR Reg_Path = _T("HARDWARE\\DEVICEMAP\\SERIALCOMM"); //<2F><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
|
|
|
|
//TCHAR pnum[8];
|
|
|
|
|
HKEY H_Key;
|
|
|
|
|
static UINT portlist[255]; //һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>255<35><35><EFBFBD><EFBFBD><EFBFBD>鹻<EFBFBD><E9B9BB><EFBFBD>ˡ<EFBFBD>
|
|
|
|
|
long Status;
|
|
|
|
|
UINT PortNum;
|
|
|
|
|
DWORD count = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
DWORD Com_Length, Type_Length, Type;
|
|
|
|
|
TCHAR Com_Name[256];//<2F>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
TCHAR Type_Name[256];//<2F>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
Status = RegOpenKeyEx(HKEY_LOCAL_MACHINE, Reg_Path, 0, KEY_READ, &H_Key); //<2F><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>long
|
|
|
|
|
memset(portlist, 0, sizeof(portlist)); // <20><>0
|
|
|
|
|
|
|
|
|
|
if (Status) //<2F><><EFBFBD><EFBFBD>ֵΪ0<CEAA><30>ʾ<EFBFBD>ɹ<F2BFAAB3><C9B9><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
2021-09-20 22:37:32 +08:00
|
|
|
|
{
|
2021-09-20 23:46:15 +08:00
|
|
|
|
return 0;
|
2021-09-20 22:37:32 +08:00
|
|
|
|
}
|
2021-09-20 23:46:15 +08:00
|
|
|
|
|
|
|
|
|
while (true)
|
2021-09-20 22:37:32 +08:00
|
|
|
|
{
|
2021-09-20 23:46:15 +08:00
|
|
|
|
Com_Length = 256; //<2F>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>ÿ<EFBFBD>ζ<EFBFBD>Ҫ<EFBFBD><D2AA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ȼ<EFBFBD>´ο<C2B4><CEBF>ܻ<EFBFBD>ʧ<EFBFBD><CAA7>,Com_lengthֵ<68><D6B5><EFBFBD><EFBFBD>
|
|
|
|
|
Type_Length = 256;
|
|
|
|
|
PortNum = 0;
|
|
|
|
|
Status = RegEnumValue(H_Key, count++, Type_Name, &Type_Length
|
|
|
|
|
, 0, &Type, PUCHAR(Com_Name), &Com_Length);
|
|
|
|
|
if (Status) //<2F><>ѯʧ<D1AF><CAA7>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int i = 3; Com_Name[i]; i++) //ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
PortNum = PortNum * 10 + (Com_Name[i] - '0');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
portlist[count - 1] = PortNum;
|
2021-09-20 22:37:32 +08:00
|
|
|
|
}
|
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
*PortList = portlist; //<2F>ض<EFBFBD><D8B6><EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
return (count - 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//_stprintf_s(DcbPara, _T("baud=%d parity=%c data=%d stop=%d"), 9600, 'N', 8, 1);
|
|
|
|
|
//<2F>˿<F2BFAAB6>
|
|
|
|
|
HANDLE SerialPort::OpenPort(UINT PortNo) //<2F>˿<F2BFAAB6>
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HANDLE H_Com; //<2F><><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
|
|
|
|
|
//PortNum = PortNo; //<2F><><EFBFBD>ں<EFBFBD>
|
|
|
|
|
|
|
|
|
|
TCHAR PortName[20];
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ںŴ<DABA>ӡ<EFBFBD><D3A1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>10<31><30><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>
|
|
|
|
|
_stprintf_s(PortName, _T("\\\\.\\COM%d"), PortNo);
|
|
|
|
|
|
|
|
|
|
H_Com = CreateFile(PortName,
|
|
|
|
|
GENERIC_READ | GENERIC_WRITE,//<2F><>д
|
|
|
|
|
0,
|
|
|
|
|
NULL,
|
|
|
|
|
OPEN_EXISTING, //<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
0,
|
|
|
|
|
0); //<2F><EFBFBD><F2BFAAB4>ڣ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
if (H_Com == INVALID_HANDLE_VALUE)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>ʧ<EFBFBD><CAA7>
|
2021-09-20 22:37:32 +08:00
|
|
|
|
{
|
2021-09-20 23:46:15 +08:00
|
|
|
|
return INVALID_HANDLE_VALUE;
|
2021-09-20 22:37:32 +08:00
|
|
|
|
}
|
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
SetupComm(H_Com, 1024, 1024); //<2F><><EFBFBD>ö<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1024;
|
|
|
|
|
|
|
|
|
|
ComMap[PortNo] = H_Com; // <20>ɹ<F2BFAAB3><C9B9><EFBFBD><F2A3ACB4><EFBFBD>map
|
|
|
|
|
return H_Com;
|
|
|
|
|
}
|
|
|
|
|
//<2F>رն˿<D5B6>
|
|
|
|
|
void SerialPort::ClosePort(UINT PortNo) //<2F>رմ<D8B1><D5B4><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
if (PortState(PortNo)) //<2F><><EFBFBD><EFBFBD><EFBFBD>Ǵ<C7B4>
|
2021-09-20 22:37:32 +08:00
|
|
|
|
{
|
2021-09-20 23:46:15 +08:00
|
|
|
|
HANDLE H_Com = ComMap[PortNo]; //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
CloseHandle(H_Com);
|
|
|
|
|
ComMap.erase(PortNo); //<2F><>map<61><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
2021-09-20 22:37:32 +08:00
|
|
|
|
}
|
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
}
|
2021-09-20 22:37:32 +08:00
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>ж˿<D0B6>
|
|
|
|
|
void SerialPort::ClearAllPort() //<2F>رմ<D8B1><D5B4><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
for (map<int, HANDLE>::iterator iter = ComMap.begin(); iter != ComMap.end(); )
|
2021-09-20 22:37:32 +08:00
|
|
|
|
{
|
2021-09-20 23:46:15 +08:00
|
|
|
|
CloseHandle(iter->second); //<2F>رմ<D8B1><D5B4><EFBFBD>
|
|
|
|
|
iter = ComMap.erase(iter); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧЧ<CAA7><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣<EFBFBD><ECB3A3>
|
2021-09-20 22:37:32 +08:00
|
|
|
|
}
|
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int SerialPort::InitPort(UINT PortNo, UINT Baud, byte Parity, byte Data, byte Stop)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (PortState(PortNo)) //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><CBBF>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>
|
2021-09-20 22:37:32 +08:00
|
|
|
|
{
|
2021-09-20 23:46:15 +08:00
|
|
|
|
ClosePort(PortNo); //<2F>ص<EFBFBD><D8B5>˿<EFBFBD>
|
2021-09-20 22:37:32 +08:00
|
|
|
|
}
|
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
if (Parity < 0 || Parity >4) //parity 0~4
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
if (Stop < 0 || Stop >2) //stop 0~2
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
HANDLE H_Com; //<2F><><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
|
|
|
|
|
//TCHAR DcbPara[50]; //<2F><><EFBFBD><EFBFBD>Dcb<63>ṹ
|
|
|
|
|
//_stprintf_s(DcbPara, _T("baud=%d parity=%c data=%d stop=%d") , Baud, Parity, Data, Stop);
|
|
|
|
|
H_Com = OpenPort(PortNo);
|
|
|
|
|
|
|
|
|
|
if (H_Com == INVALID_HANDLE_VALUE)
|
2021-09-20 22:37:32 +08:00
|
|
|
|
{
|
2021-09-20 23:46:15 +08:00
|
|
|
|
return 0;
|
2021-09-20 22:37:32 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
//int count = 0;
|
2021-09-26 00:43:37 +08:00
|
|
|
|
COMMTIMEOUTS ComTimeouts = { 0, 0, 10, 0, 10 };
|
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
DCB S_dcb;
|
|
|
|
|
if (!SetCommTimeouts(H_Com, &ComTimeouts))//<2F><><EFBFBD>ó<EFBFBD>ʱ
|
|
|
|
|
{
|
2021-09-20 22:37:32 +08:00
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
if (!GetCommState(H_Com, &S_dcb)) //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>DCB<43>ṹ
|
|
|
|
|
{
|
2021-09-20 22:37:32 +08:00
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
2021-09-20 22:37:32 +08:00
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
S_dcb.BaudRate = Baud;
|
|
|
|
|
S_dcb.ByteSize = Data;
|
|
|
|
|
S_dcb.Parity = Parity;
|
|
|
|
|
S_dcb.StopBits = Stop;
|
|
|
|
|
//if(!BuildCommDCB(DcbPara , &S_dcb))//<2F><><EFBFBD><EFBFBD>DCB
|
|
|
|
|
//{
|
2021-09-20 22:37:32 +08:00
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
// return 0;
|
|
|
|
|
//}
|
2021-09-20 22:37:32 +08:00
|
|
|
|
|
2021-09-26 00:43:37 +08:00
|
|
|
|
S_dcb.fRtsControl = RTS_CONTROL_DISABLE; //<2F><><EFBFBD><EFBFBD>Rts<74>ź<EFBFBD>
|
2021-09-20 23:46:15 +08:00
|
|
|
|
if (!SetCommState(H_Com, &S_dcb)) //<2F><><EFBFBD><EFBFBD>DCB
|
2021-09-20 22:37:32 +08:00
|
|
|
|
{
|
2021-09-20 23:46:15 +08:00
|
|
|
|
int i = GetLastError();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
2021-09-20 22:37:32 +08:00
|
|
|
|
}
|
2021-09-20 23:46:15 +08:00
|
|
|
|
|
|
|
|
|
PurgeComm(H_Com, PURGE_RXCLEAR | PURGE_TXCLEAR |
|
|
|
|
|
PURGE_RXABORT | PURGE_TXABORT); //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
2021-09-22 00:01:02 +08:00
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
int SerialPort::PortState(UINT PortNo)
|
|
|
|
|
{
|
|
|
|
|
map<int, HANDLE>::iterator iter;
|
|
|
|
|
|
|
|
|
|
iter = ComMap.find(PortNo);
|
|
|
|
|
|
|
|
|
|
if (iter != ComMap.end()) //˵<><CBB5><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>˶˿<CBB6>
|
|
|
|
|
return 1;
|
2021-09-20 22:37:32 +08:00
|
|
|
|
else
|
2021-09-20 23:46:15 +08:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int SerialPort::ReadPort(UINT PortNo, char* P_recved, int length) //<2F><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD> һ<>ζ<EFBFBD>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (PortState(PortNo) == 0) //<2F><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
|
|
|
|
return 0;
|
|
|
|
|
HANDLE H_Com = ComMap[PortNo];
|
|
|
|
|
DWORD Recn; //ʵ<>ʶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
BOOL Result = TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Result = ReadFile(H_Com, P_recved, length, &Recn, NULL);
|
|
|
|
|
if (Result == 0)
|
2021-09-20 22:37:32 +08:00
|
|
|
|
{
|
2021-09-20 23:46:15 +08:00
|
|
|
|
//GetLastError();
|
|
|
|
|
PurgeComm(H_Com, PURGE_RXCLEAR | PURGE_RXABORT);
|
|
|
|
|
|
|
|
|
|
return 0;
|
2021-09-20 22:37:32 +08:00
|
|
|
|
}
|
|
|
|
|
|
2021-09-20 23:46:15 +08:00
|
|
|
|
return Recn;
|
|
|
|
|
}
|
|
|
|
|
//<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void SerialPort::ClearCom(UINT PortNo)
|
|
|
|
|
{
|
|
|
|
|
if (PortState(PortNo) == 0) //<2F><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
|
|
|
|
return;
|
|
|
|
|
HANDLE H_Com = ComMap[PortNo];
|
|
|
|
|
PurgeComm(H_Com, PURGE_RXCLEAR | PURGE_RXABORT);
|
|
|
|
|
}
|
|
|
|
|
int SerialPort::CheckRTS(UINT PortNo)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
//д<><D0B4><EFBFBD><EFBFBD>
|
|
|
|
|
int SerialPort::WritePort(UINT PortNo, const char* pData, int length)
|
2021-09-20 22:37:32 +08:00
|
|
|
|
{
|
2021-09-20 23:46:15 +08:00
|
|
|
|
|
|
|
|
|
if (PortState(PortNo) == 0) //<2F><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
|
|
|
|
return 0;
|
|
|
|
|
HANDLE H_Com = ComMap[PortNo];
|
|
|
|
|
|
|
|
|
|
if (length == 0)
|
|
|
|
|
length = strlen(pData);
|
|
|
|
|
|
|
|
|
|
DWORD Recn;
|
|
|
|
|
BOOL Result = TRUE;
|
|
|
|
|
|
|
|
|
|
if (H_Com == INVALID_HANDLE_VALUE)
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
Result = WriteFile(H_Com, pData, length, &Recn, NULL);
|
|
|
|
|
if (Result == 0)
|
2021-09-20 22:37:32 +08:00
|
|
|
|
{
|
2021-09-20 23:46:15 +08:00
|
|
|
|
GetLastError();
|
|
|
|
|
PurgeComm(H_Com, PURGE_RXCLEAR | PURGE_RXABORT);
|
|
|
|
|
|
|
|
|
|
return 0;
|
2021-09-20 22:37:32 +08:00
|
|
|
|
}
|
2021-09-20 23:46:15 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return Recn;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
//<2F><>ȡҪ<C8A1><D2AA>ȡ<EFBFBD><C8A1><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|
|
|
|
UINT SerialPort::GetByte(UINT PortNo) //<2F>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3>ȡ<EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
if (PortState(PortNo) == 0) //<2F><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
|
|
|
|
|
return 0;
|
|
|
|
|
HANDLE H_Com = ComMap[PortNo];
|
|
|
|
|
DWORD dwError;
|
|
|
|
|
COMSTAT comstat;
|
|
|
|
|
DWORD BytesInQue = 0;
|
|
|
|
|
DWORD FirstSize = 0;
|
|
|
|
|
|
|
|
|
|
memset(&comstat, 0, sizeof(COMSTAT)); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
while (true)
|
2021-09-20 22:37:32 +08:00
|
|
|
|
{
|
2021-09-20 23:46:15 +08:00
|
|
|
|
|
|
|
|
|
BytesInQue = FirstSize;
|
|
|
|
|
Sleep(10);
|
|
|
|
|
if (ClearCommError(H_Com, &dwError, &comstat))
|
|
|
|
|
FirstSize = comstat.cbInQue; //<2F><><EFBFBD>¸<EFBFBD>ֵ
|
|
|
|
|
|
|
|
|
|
if (BytesInQue == FirstSize)
|
|
|
|
|
break;
|
2021-09-20 22:37:32 +08:00
|
|
|
|
}
|
2021-09-20 23:46:15 +08:00
|
|
|
|
|
|
|
|
|
return BytesInQue;
|
2021-09-20 22:37:32 +08:00
|
|
|
|
}
|