일반적으로 PC에는 터미널 에뮬레이터에서 사용할 수있는 비표준 COM 포트 집합이 있습니다. 나는 COM1-COM32 포트를 스캔하여 직렬 포트로 열 수있는 포트가 있는지 확인할 수 있기를 원합니다. 나는이 모든 포트에서 CreateFile()을 호출하는 것만으로도이 작업을 수행 할 수 있습니다. 그러나 실제로 포트를 일시적으로 열거 나 닫기 (DTR/RTS에 영향을 미침)해야합니다.COM 포트를 실제로 열지 않고 열 수 있는지 확인할 수 있습니까?
사용할 수있는 포트의 사용자에게 정확한 목록을 제공하고자합니다. 문제는 DTR/RTS에서 전환을보고 싶지 않은 포트에 하드웨어가 연결되어있을 수 있으므로 현재 사용되지 않는 포트의 DTR/RTS 라인에 영향을 미치고 싶지 않다는 것입니다.
"CreateFile()이 성공할 것인가?"라는 질문을하는 방법이 있습니까? 지정된 COM 포트에 있습니까?
내가 알고있는 단 하나는 GetDefaultCommConfig()이며, API는 간단하지만 아직까지는 성공하지 못했습니다. 트릭이 있습니까? 그것의 바로 하나의 문자열, 구조체에 대한 포인터, 그 뒤에 (구조체의) 채워진 크기 값에 대한 포인터가옵니다. 충분히 단순 해 보이지만 작동시키지 못했습니다. 감사합니다, –
내가 사용하는 코드 스 니펫 ... 잘못된 것이 있으면 큰 소리로 외칩니다. :-) void somefunc (void) { COMMCONFIG cc; DWORD bsize = sizeof (COMMCONFIG); if (GetDefaultCommConfig ("COM1", & cc, & bsize) == 0) { ShowLastError ("GetDefaultCommConfig()"); 반환; } ... } –
죄송합니다.나는 그것이 더 형식화되기를 바랐다. :-( –