BOOL CNumDeviceDlg::GetComPortNum()
{
CString comStr;
int iTmp;
int jTmp;
int kTmp = 0;
HANDLE m_hCom;
jTmp = 1;
int ComNum[256] = { 0 };
for (iTmp = 0; iTmp < 256; iTmp++)
ComNum[iTmp] = 0;
m_ComboxPortList.ResetContent();
for (; jTmp <= iTmp; jTmp++)
{
if (jTmp < 10)
{
comStr.Format(_T("COM%d"), jTmp);
}
else
{
comStr.Format(_T("\\\\.\\COM%d"), jTmp);//大于10就要改变输入方式,否则找不到
}
m_hCom = CreateFile(comStr, GENERIC_READ |
GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL |
FILE_FLAG_OVERLAPPED, NULL);
if (m_hCom != INVALID_HANDLE_VALUE) // 如果没有该设备,或者被其他应用程序在用
{
//查找可用串口
comStr.Format(_T("COM%d"), jTmp);
m_ComboxPortList.AddString(comStr); //写入combobox
ComNum[kTmp++] = jTmp;
}
SetCommMask(m_hCom, 0);// 关闭文件句柄,后面我们采用控件,不用API
CloseHandle(m_hCom);
}
if (ComNum[0])
return TRUE;
else
return FALSE;
}