⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comportenum.h

📁 GPS信号模拟器源代码
💻 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 + -