이번에는 지난번 포스트에서 사용한 devcon.exe를 편하게 사용하기 위한
간단한 GUI 프로그램을 만들어 보도록 하겠습니다.
저는 윈도우 10 64bit에서 Visual Studio 2019로 작업하였습니다.
devcon.exe 설치 및 사용법에 대해서는 아래 포스트를 참고해주세요.
https://dream-hacker.tistory.com/36
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();
완성입니다.
프로젝트 파일과 실행파일은 아래에서 다운로드해 주세요.
프로젝트 파일
실행파일
'application.hack' 카테고리의 다른 글
PWM으로 DC-DC 컨버 모듈 출력제어 (0) | 2022.01.21 |
---|---|
C# 폼간 데이터 전송 방법 정리 (3) | 2021.03.12 |
ASCIIFlow Infinity ; 아스키 플로우 인피니티 (아스키 블록 다이어그램) (0) | 2020.06.09 |
SpaceSniffer ; 하드 디스크 공간 그래픽 확인 (0) | 2020.06.01 |
Carnac ; 키보드 입력 화면 표시 프로그램 (1) | 2020.05.30 |