본문 바로가기

잡다한이야기

VS2008 MFC를 이용한 시리얼 통신 프로그램 만들기(1)

반응형

Visual Studio 2008 을 이용해 시리얼 통신 프로그램을 만드는 과정을 몇 회에 걸쳐 올릴까 합니다.

딱히 vs2008을 선택한 이유는 .. 지금 컴퓨터에 설치된 것이 이것 밖에 없어서 입니다 ;

일단 vs2008은 설치가 돼 있다는 가정 하에 진행 합니다.


1. 프로젝트 생성 하기

1.jpg

File-new-project 를 선택해 새로운 프로젝트를 생성 합니다.


2.jpg

- MFC Application 을 선택 하고 프로젝트 이름과 생성 장소를 선택 해 줍니다.

- ok 버튼을 누르면 다른 화면이 한번 더 나오는데 그냥 next 를 눌러 줍니다.


3.jpg

- 어플리케이션 타입을 다이얼로그 베이스를 선택 합니다.

- 다른 형태도 많지만 개인적으로 다이얼로그 베이스가 편한것 같습니다

- 다른 설정을 할려면 next 를 누르고 하면 되지만, finish 를 눌러 완료 합니다.


4.jpg

- 프로젝트 생성이 완료되면 cloass view, Resource view, solution explorer 를 볼 수 있도록 띄워 놓습니다.

( 매뉴의 view 에서 선택 할 수 있습니다.)

- 일단 생성된 serial 이라는 프로젝트에 기본적으로 클래스와 다이얼로그, 그리고 해당 파일들이 생성 되는 것을

볼 수 있습니다.


2. 다이얼로그 컨트롤 배치 및 변수 등록 하기

5.jpg

- 기본적으로 다이얼로그 베이스 프로젝트를 생성하면 두 개의 다이얼로그가 생성되는데, 여기서 IDD_ABOUTBOX 는 그냥 프로그램 정보를 보여주기 위한 다이얼로그니 특별히 수정할 일이 없습니다.

- 생성한 프로젝트 이름으로된 다이얼로그를 더블클릭 해서 보면 위 그림처럼 기본적으로 버튼두개 들어간

다이얼로그가 생성 됩니다.

- 버튼과 가운데 있는 Static 문자열을 그냥 지워 버리고, 툴박스에서 이것저것 마우스로 드래그 해서 배치 합니다.


6.jpg

- 배치된 컨트롤

맨 윗줄 : Static Text , Combo Box, Static Text, Combo Box, Button, Button

중간 : Edit Control

맨 아래: Edit Control , Button


* Static text 속성 변경

7.jpg

- Static Text 컨트롤을 마우스로 선택하고, 마우스 오른쪽 버튼을 누르면 Properties 가 나오는데 이걸 선택 하면

관련 속성들을 변경 할 수 있습니다. 여기서 Caption 만 바꿔 줍니다.

- Caption 을 COM port 로 바꿔 주고. 그 옆에 옆에 있는 Static Text 도 마찬가지로 caption 만

“Baud rate” 로 바꿔 줍니다.


* COMBO box 속성 변경

8.jpg

 

- COMBO BOX 도 오른족 마우스를 눌러 PROPERTIES 선택 선택 하고, TYPE 을 반드시 “Drop List” 로 변경 해 줍니다.

1) TYPE : Drop List

2) ID : IDC_COMBO_COMPORT

- ID 는 자신이 구분이 가능하게 하면 되지만 한눈에 알아 볼 수 있게 좀 길지만 구별이 가능 하도록 지었습니다.

 


* COMBO box 맴버 변수 등록 ( 컨트롤 변수 등록 )

9.jpg

- 콤보박스 컨트롤에서 오른쪽 마우스버튼을 눌러 add variable 을 선택 해 줍니다.


10.jpg

 

- Category 를 Control 로 선택 하고 (디폴트로 선택됨) Control Id 가 아까 속성 변경 할 때 등록한 ID 가

맞는지 확인합니다.

- Variable name 을 적당히 지어 줍니다.

- Finish 를 누르면 맴버 변수가 등록 됩니다.

- 등록된 맴버 변수는 class view 의 CserialDlg 클래스를 선택해 보면 확인 할 수 있으며, solution explorer 에서도 serialDlg.h 와 serialDlg.cpp 파일에서 볼 수 있습니다.

 



11.jpg

 

- 보레이트 선택용 COMBO BOX 도 위와 같이 속성에서 TYPE 을 변경 하고, ID 를 설정 한 후 맴버 변수를 등록 합니다.

1) TYPE : Drop List

2) ID : IDC_COMBO_BAUDRATE

3) Variable name : m_combo_baudrate_list

 



* COMBO BOX 맴버 변수 등록 (데이터 변수)

 

여기서 데이터 변수라고 쓴 이유는 CString 으로 선언된 변수에 이런저런 값을 넣어서 사용 하기 때문입니다.

Combo box 에서 선택한 값을 저장하기 위한 변수입니다.

방법은 컨트롤변수와 같지만 카테고리를 value 로 선택하고, vriable type 을 CString 으로 하는 차이가 있습니다.

 

12.jpg

- Com port 선택 콤보박스의 변수명 : m_str_comport

- Baud rate 선택 콤보박스의 변수명 : m_str_baudrate


* BUTTON 속성 변경 및 ID 등록

- 버튼은 특별히 변수를 등록할 필요는 없으며, 속성중 CAPTION 을 바꾸고, ID 만 등록 하면 됩니다.

- 첫 번째 버튼 ( 시리얼 포트의 OPEN 및 CLOSE 를 하나의 버튼으로 처리할 예정)

CAPTION : OPEN

ID : IDC_BT_CONNECT

- 두 번쨰 버튼 ( 수신된 화면 클리어 기능으로 사용 예정)

CAPTION : CLEAR

ID : IDC_BT_CLEAR

- 오른쪽 아래 세 번쨰 버튼 ( 시리얼 포트로 데이터를 전송 할떄 사용할 예정)

CAPTION : SEND

ID : IDC_BT_SEND


* 가운데 큰 EDIT BOX 속성 변경 및 변수 등록

13.jpg

 

- 속성중 AUTO HScroll , Vertical Scroll, Multiline 을 모두 True 로 변경 합니다.

ID : IDC_EDIT_RCV_VIEW

Variable name : m_edit_rcv_view / Category : Control

 



 

* 맨아래 한줄짜리 EDIT BOX 속성 변경 및 변수 등록

- 전송할 글자를 쓸 EDIT BOX 인데. 멀티라인도 필요 없고, 스크롤도 필요 없으니 그냥 속성은 냅두고, ID 만 등록 합니다.

ID : IDC_EDIT_SEND_DATA

Variable name : m_edit_send_data / Category : Control

 


* 컴파일 해보기

14.jpg

- 여기까지 해놓고 살짝 컴파일을 해보고 ( ALT+CTRL+F7) F5 를 눌러 디버깅 모드로 실행해 보면 위 그림과 같이

필요한 컨트롤들이 다 배치되어 마치 그럴싸? 한 프로그램이 된것 같습니다.


이제 실제 구현을 위한 부분만 남았으며 다음시간에 이어서 하겠습니다.

참고로 이상태에서 엔터나 esc 버튼을 누르면 종료되는 문제가 있습니다. 이 문제를 엔터 버그라고 하고, 관련된 글은

본포럼을 찾아보시면 있습니다.

 

 

http://forum.falinux.com/zbxe/index.php?_filter=search&mid=lecture_tip&search_target=user_name&search_keyword=%EC%84%A0%EC%84%B1%ED%83%9C&page=4&document_srl=571672

 

원본은 위의 글이며 참조하시기 바랍니다.

 

반응형