📄 comportenum.h
字号:
#ifndef __CCOMPORTENUM_H__
#define __CCOMPORTENUM_H__
#include "Afxtempl.h"
typedef CString COMPORT_DESC;
class CComPortEnum
{
public:
CComPortEnum(){;}
virtual ~CComPortEnum(){;}
public:
int GetCount()
{
return m_listComPort.GetCount();
}
// 枚举所有的串口,返回总串口数
int EnumAllComPort(void)
{
COMPORT_DESC comdesc;
if(m_listComPort.GetCount() != 0)
m_listComPort.RemoveAll();
HKEY hKey;
LPCTSTR data_Set = "HARDWARE\\DEVICEMAP\\SERIALCOMM\\";
LONG ret0 = RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_READ, &hKey);
if(ret0 != ERROR_SUCCESS)
{
AfxMessageBox("错误:无法打开有关的hKEY");
m_nComPortNum = 0;
return 0;
}
DWORD dwIndex = 0;
LONG Status;
CHAR Name[25];
UCHAR szPortName[80];
DWORD dwName;
DWORD dwSizeofPortName;
DWORD Type;
do
{
dwName = sizeof(Name);
dwSizeofPortName = sizeof(szPortName);
Status = RegEnumValue(hKey, dwIndex++, Name, &dwName, NULL, &Type, szPortName, &dwSizeofPortName);
if((Status == ERROR_SUCCESS)||(Status == ERROR_MORE_DATA))
{
comdesc = (LPCTSTR)szPortName;
m_listComPort.AddTail(comdesc);
}
} while((Status == ERROR_SUCCESS)||(Status == ERROR_MORE_DATA));
RegCloseKey(hKey);
return 0;
}
// 从列表选择号得到串口名
CString &GetComPortNameFromListNum(int listnum)
{
COMPORT_DESC *comdesc;
comdesc = &m_listComPort.GetAt(m_listComPort.FindIndex(listnum));
return *comdesc;
}
public:
int m_nComPortNum;
CList <COMPORT_DESC, COMPORT_DESC& > m_listComPort;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -