컴퓨터 내부의 직렬 포트와 (AT 명령을 사용하여) 통신 할 수있는 프로그램을 C#으로 작성했습니다. 포트를 찾을 수있는 코드는 다음과 같습니다C#을 사용하여 WWAN 모뎀의 직렬 포트와 통신하는 방법
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_PnPEntity");
//This loops through the results from the searcher
foreach (ManagementObject queryObj in searcher.Get())
{
//If it finds the port,
if (queryObj["Caption"].ToString().Contains("##### Wireless AT"))
{
//it writes it to the file
sw.WriteLine("serial port : {0}", queryObj["Caption"] + "\n");
sw.Flush();
}
이 코드는 우리의 오래된 모뎀 훌륭하게 작동, 그것은 COM 포트를 통해 검색하고 AT 무선 명령 포트를 찾습니다. 이것은 결국 내 AT 명령을 보내는 포트입니다. 다음은 포트 I이 검색하고의 장치 관리자의 두 사진은
문제는, 우리가 새로운 모뎀과 우리의 컴퓨터를 출시된다됩니다에 대한, 그리고 다른 이들 작업 ...
새 모뎀은 장치 관리자의 포트 목록이있는 직렬 포트를 사용하지 않습니다. 또한 직렬 포트가 Win32_PnpEntity
검색에 표시되지 않습니다 ... 직렬 포트가 모뎀 속성 아래에 나열됩니다.
내 질문은, 어떻게 C#을 사용 모뎀의 직렬 포트를 찾을 수 있습니까입니까?
제가 정교 할 수있는 방법이 있는지 알려주십시오.
누가 복음
흠 ... 그것은 나에게'System.NullReferenceException'을주고있다. "##### Wireless WWAN Modem"을 "Your Modem String"자리에 놓으시겠습니까? 문제는 무엇입니까? –
장치 ID를 사용하여 포트 이름을 추적 할 수 있습니까? –
디버깅 : 줄에 중단 점 배치 var searcher =. 명령을 단계별로 실행하고 searcher의 값을 살펴보십시오. URL이 null 인 경우 검색된 WMI 위치에 직렬 포트가 없기 때문에 쿼리 할 적절한 위치를 찾아야합니다.searcher에 값이 있으면 디버거 조사 창에서 개체를 열고 데이터에서 모뎀을 찾습니다. 찾았 으면 문자열을 실제 값으로 대체하십시오. –