#include
#include
//-------------------------------------------------------------------------------
//① 설 명 : COM포트가 사용가능한지 알아낸다.
//② 인 수 :
//③ 리 턴 :
//-------------------------------------------------------------------------------
bool __fastcall XXXXX::bValidateComPort(const TCHAR *comport)
{
bool Result = false;
HANDLE PortHandle;
PortHandle = CreateFile(comport, GENERIC_READ || GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if(PortHandle != INVALID_HANDLE_VALUE)
{
Result = true;
CloseHandle(PortHandle);
}
return Result;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TStringList *FList = new TStringList;
TStringList *XXXXXX::GetList(bool SubName, bool OnlyAvail)
{
bool bRet;
auto_ptr reg(new TRegistry());
auto_ptr Name(new TStringList());
FList->Clear();
reg->RootKey = HKEY_LOCAL_MACHINE;
m_Ret = reg->OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM", false);
if (bRet == false) return NULL;
reg->GetValueNames(Name.get());
for (int i = 0; i < Name->Count; i++)
{
// \\device\\ 의 문자열을 "" 으로 변환
TReplaceFlags flag = TReplaceFlags() << rfReplaceAll << rfIgnoreCase;
String Value = StringReplace(Name->Strings[i], "\\device\\", "", flag);
// TStringList 에서 values 사용이 가능하도록 변경 후 Add
String Str;
Str = reg->ReadString(Name->Strings[i]);
if(OnlyAvail)//유효한 시리얼포트만 리턴한다
{
if(bValidateComPort(Str.w_str()))
{
if(SubName) Str = Str.Format("%s=%s", ARRAYOFCONST((Str.Trim(), Value)));// .
FList->Add(Str);
}
}
else
{
if(SubName) Str = Str.Format("%s=%s", ARRAYOFCONST((Str.Trim(), Value)));// .
FList->Add(Str);
}
}
reg->CloseKey();
//FList->CustomSort(ListSortIntegerProc);
return FList;
}
프로그램 초짜 님이 쓰신 글 :
: 수고 많으십니다.
:
: 주말에 뻘짓으로 땀 나는 초짜 입니다.
:
: TRegistry* Registry = new TRegistry();
:
: 레지스트리 안으로 들어가서 연결된 시리얼 포트의 포트 번호를 찾는데 성공하였습니다.
:
: 근데 시리얼 포트의 이름을 얻기 위해선 어떻게 해야 하는지 검색이 안되서
:
: 질문 드려 봅니다.
:
: 데탑에 장치 관리자 에 가보면
:
: 포트(COM 및 LPT)
: |____통신 포트(COM2)
: |____ 프린터 포트(LPT1)
:
: 이라고 되어 있는데
: 제가 Usb를 꼽으면
:
: 포트(COM 및 LPT)
: |____통신 포트(COM2)
: |____ 프린터 포트(LPT1)
: |____ Prolific USB_to_Serial Comm Port(Com8)
:
: 이라고 뜨는데 저기서
: Prolific USB_to_Serial Comm Port 라는 이름을 얻고 싶어요
:
: 도움 부탁 드립니다.
|