본문 바로가기
application.hack

Com Port Cleaner (시리얼포트 정리기)

by 조브 2020. 6. 18.

 

 

이번에는 지난번 포스트에서 사용한 devcon.exe를 편하게 사용하기 위한

 

 

간단한 GUI 프로그램을 만들어 보도록 하겠습니다.

 

 

저는 윈도우 10 64bit에서 Visual Studio 2019로 작업하였습니다.

 

 

 

 

devcon.exe 설치 및 사용법에 대해서는 아래 포스트를 참고해주세요.

 

 

https://dream-hacker.tistory.com/36

 

숨겨진 COM Port 삭제

컴퓨터와 다양한 장치(Arduino, Virtual COM Port)를 시리얼 포트로 연결하다 보면, 아래와 같이 COM Port번호가 두자리수를 훌쩍 넘어가게 됩니다. 조금 지저분해보여도 쓰는데, 사용에 지장이 없다면 문

dream-hacker.tistory.com

 

 

Visual Studio을 켜고 C# Windows form app 프로젝트를 하나 만듭니다.

 

 

디자이너를 통해 아래와 같이 디자인해 줍니다.

 

 

 

 

폼이 로드될때 COM Port를 모두 읽어 들여, listView에 표시해주고,

 

 

Clear 버튼을 누르면 해당 포트를 모두 지워 줍니다.

 

 

프로젝트에 devcon파일을 추가하고, 출력 디렉토리에 복사되게 해 주었습니다.

 

 

 

 

 

C#에서 외부 프로세스를 실행하기 위해서는 Process 클래스를 사용합니다.

아래와 같이 사용합니다.

 

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;

표준출력을 가져오기 위해서 StartInfo.RedirectStandardOutput 값을 true로 합니다.
그러기 위해 쉘을 사용하지 않기 위해 StartInfo.UseShellExecute 설정값이 false로 설정이 우선 되어야 합니다.
외부 윈도우를 만들지 않기 위해 StartInfo.CreateNoWindow 값을 true로 설정하였습니다.

 

 

 

 

 

실행할 파일 이름, 즉 devcon.exe를 경로 포함하여 StartInfo.FileName 설정값에 씁니다.

p.StartInfo.FileName = dir + "\x64\devcon.exe";

 

 

 

 

이때 실행하는 운영체제가 32비트인지 64비트인지를 확인하여 운영체제에 맞는 exe파일을 사용할 수 있게 해 줍니다.

if (Environment.Is64BitOperatingSystem)
{
    p.StartInfo.FileName = dir + "\\x64\\devcon.exe";
}
else
{
    p.StartInfo.FileName = dir + "\\x86\\devcon.exe";
}

 

 

 

 

명령줄 인수는 StartInfo.Arguments 에 설정합니다. (포트를 검색할 때는 findall, 지울 때는 remove)

p.StartInfo.Arguments = "findall =ports";

 

 

 

 

 

프로세스를 시작합니다.
ReadToEnd 메서드로 표준 출력을 모두 읽어 스트링으로 저장하고
프로세스가 끝날 때까지 기다려줍니다.

p.Start();
comPortListString = p.StandardOutput.ReadToEnd();
p.WaitForExit();

 

 

완성입니다.

 

 

 

프로젝트 파일과 실행파일은 아래에서 다운로드해 주세요.

 

 

프로젝트 파일

ComPortCleaner.zip
0.20MB

 

실행파일

ComPortCleaner.exe.zip
0.05MB

댓글