loading

프로그래밍/C#

C# 가상 시리얼 포트를 이용한 테스트 프로그램 개발(VSPE, 하이퍼터미널)

침착곰 2021. 4. 17. 15:03
반응형

안녕하세요

C# 윈폼에서 가상 시리얼 포트를 이용한 테스트 프로그램을 개발해봤습니다

개발 전에 VSPE, 하이퍼터미널이 필요합니다

 

목차

VSPE 다운로드 및 설치
하이퍼터미널 다운로드 및 환경설정
시리얼통신 프로그램 코드 설명
결과 화면

 


VSPE 다운로드 및 설치

 

첫 번째 준비물인 VSPE는 하단의 경로를 참고하여 다운로드합니다

crazykim2.tistory.com/365

 

가상 시리얼 포트 프로그램(VSPE) 다운로드

안녕하세요 가상 시리얼 포트 프로그램(VSPE)의 다운로드 방법에 대해서 알아보겠습니다 시리얼 통신 관련 프로그램을 개발하면서 노트북에 시리얼 포트없이 테스트를 하는 방법을 찾다가 가상

crazykim2.tistory.com

 

두 번째 준비물인 하이퍼터미널은 아래의 첨부파일을 다운로드하여 실행합니다

HyperTerminal_Kor.zip
0.17MB

 

여기까지 필요한 프로그램은 모두 다운로드하였습니다

 

 

먼저 VSPE를 세팅해보겠습니다

설치된 VSPE를 실행합니다

상단의 시리얼포트에 햇빛(?) 이 표시된 아이콘을 선택합니다

 

아이콘을 클릭하면 하단의 단계로 넘어갑니다

Device type을 클릭하면 다양한 Device가 나타납니다

그 중에서 Connector를 선택합니다

기본적으로 VSPE를 실행하면 Connector로 세팅이 되어있습니다

아마 처음 실행하시는 분은 바로 다음버튼을 눌러서 다음 단계로 넘어가시면 됩니다 ㅎ

 

다음 단계에서는 가상으로 사용할 포트번호를 선택합니다

저는 COM1를 선택하겠습니다

포트선택까지 끝마쳤으면 마침을 눌러 가상 시리얼포트를 생성합시다

 

환경설정이 끝이 나면 처음 실행한 화면으로 돌아옵니다

돌아온 화면이 Title에 포트번호 Device에 Connector, Status가 Ready로 나타난다면 정상적으로 환경설정이 끝난 것입니다

여기까지 VSPE의 환경설정이었습니다

 

 
 

하이퍼터미널 다운로드 및 환경설정

 

다음단계로 하이퍼터미널의 환경설정에 대해서 알아보겠습니다

위의 zip파일을 다운로드하여 압축을 풀어 hypertrm.exe 파일을 실행합니다

처음 파일을 실행하면 연결 설명 팝업이 나타납니다

팝업에서 연결에 사용할 이름을 입력합니다

저는 Test로 입력하겠습니다

입력이 완료되면 확인버튼을 클릭합니다

 

다음 단계에서는 연결 대상을 선택합니다

연결 대상은 좀 전에 VSPE에서 열어두었던 COM1을 선택합니다

연결 대상까지 선택을 하였으면 확인버튼을 클릭하여 다음 단계로 넘어갑니다

 

연결 대상까지 선택했다면 시리얼통신의 포트 설정을 해줍니다

기본 설정을 그대로 사용합니다

확인 버튼을 클릭하여 하이퍼터미널 세팅을 완료합시다

 

여기까지 세팅하였다면 시리얼통신 환경설정이 끝이 났습니다

 


 

 

시리얼통신 프로그램 코드 설명

 

이어서 간단한 시리얼통신 송신 프로그램을 개발해보겠습니다

프로그램 Visual Studio 2017로 개발하였습니다

테스트 프로그램이므로 간단하게 디자인해줍니다

차례대로 설명하면 포트번호를 입력할 텍스트박스를 추가합니다

하단에는 포트를 열고 닫을 버튼 두개를 만들었습니다

이어서 시리얼통신 테스트문자열을 보낼 텍스트박스와 버튼을 추가해줬습니다

 

시리얼통신을 열어주는 포트 열기 소스입니다

시리얼포트는 전역변수로 선언하여 사용해줍시다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 시리얼포트 전역변수
SerialPort sPort;   
 
// 포트열기 버튼 클릭 이벤트
private void btnOpen_Click(object sender, EventArgs e)
{
    // 포트를 세팅
    sPort = new SerialPort();
    sPort.PortName = txtSerial.Text;
 
    // 포트가 열려있는 경우 메시지 출력
    if(sPort.IsOpen == true)
    {
        MessageBox.Show("이미 포트가 오픈되어있습니다.");
    }
    // Port Open
    else
    { 
        sPort.Open();
    }
}
cs

 

시리얼통신 닫는 포트 닫기 소스입니다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 포트닫기 버튼 클릭 이벤트
private void btnClose_Click(object sender, EventArgs e)
{
    // Port Close
    if (sPort.IsOpen == true)
    {
        sPort.Close();
    }
    // 포트가 닫혀있는 경우 메시지 출력
    else
    {
        MessageBox.Show("열려있는 포트가 없습니다.");
    }
}
cs

 

마지막으로 시리얼통신에 COM1에 데이터를 송신하는 소스입니다

1
2
3
4
5
6
7
// 전송 버튼 클릭 이벤트
private void btnSend_Click(object sender, EventArgs e)
{
    // 시리얼통신 데이터를 전송한다
    byte[] strByte = UTF8Encoding.Default.GetBytes(this.txtSend.Text);            
    sPort.Write(strByte, 0, strByte.Length);
}
cs

 

여기까지 작성하면 시리얼통신 테스트 프로그램도 모두 개발하였습니다

전체 소스입니다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace SerialTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        // 시리얼포트 전역변수
        SerialPort sPort;
 
        // 포트열기 버튼 클릭 이벤트
        private void btnOpen_Click(object sender, EventArgs e)
        {
            // 포트를 세팅
            sPort = new SerialPort();
            sPort.PortName = txtSerial.Text;
 
            // 포트가 열려있는 경우 메시지 출력
            if (sPort.IsOpen == true)
            {
                MessageBox.Show("이미 포트가 오픈되어있습니다.");
            }
            // Port Open
            else
            {
                sPort.Open();
            }
        }
 
        // 포트닫기 버튼 클릭 이벤트
        private void btnClose_Click(object sender, EventArgs e)
        {
            // Port Close
            if (sPort.IsOpen == true)
            {
                sPort.Close();
            }
            // 포트가 닫혀있는 경우 메시지 출력
            else
            {
                MessageBox.Show("열려있는 포트가 없습니다.");
            }
        }
 
        // 전송 버튼 클릭 이벤트
        private void btnSend_Click(object sender, EventArgs e)
        {
            // 시리얼통신 데이터를 전송한다
            byte[] strByte = UTF8Encoding.Default.GetBytes(this.txtSend.Text);
            sPort.Write(strByte, 0, strByte.Length);
        }
    }
}
 
cs

 


 

 

결과 화면

 

프로그램의 최종 개발 완료화면입니다

프로그램에서 포트를 COM1로 선택하고 테스트 데이터를 전송합니다

 

전송을 하면 하이퍼터미널에서 TEST 문자열 받은 것을 확인할 수 있습니다

 

위의 프로그램을 개발한 소스입니다

시리얼통신 테스트 프로그램을 만드는데 참고하셨으면 좋겠습니다 :)

SerialTest.zip
0.25MB

 

여기까지 가상 시리얼통신과 하이퍼터미널을 사용 시리얼통신 테스트 프로그램을 만들어봤습니다 ㅎ

반응형
그리드형