강좌 & 팁
Visual Studio 2008 을 이용해 시리얼 통신 프로그램을 만드는 과정을 몇 회에 걸쳐 올릴까 합니다.
딱히 vs2008을 선택한 이유는 .. 지금 컴퓨터에 설치된 것이 이것 밖에 없어서 입니다 ;
일단 vs2008은 설치가 돼 있다는 가정 하에 진행 합니다.
1. 프로젝트 생성 하기
File-new-project 를 선택해 새로운 프로젝트를 생성 합니다.
- MFC Application 을 선택 하고 프로젝트 이름과 생성 장소를 선택 해 줍니다.
- ok 버튼을 누르면 다른 화면이 한번 더 나오는데 그냥 next 를 눌러 줍니다.
- 어플리케이션 타입을 다이얼로그 베이스를 선택 합니다.
- 다른 형태도 많지만 개인적으로 다이얼로그 베이스가 편한것 같습니다
- 다른 설정을 할려면 next 를 누르고 하면 되지만, finish 를 눌러 완료 합니다.
- 프로젝트 생성이 완료되면 cloass view, Resource view, solution explorer 를 볼 수 있도록 띄워 놓습니다.
( 매뉴의 view 에서 선택 할 수 있습니다.)
- 일단 생성된 serial 이라는 프로젝트에 기본적으로 클래스와 다이얼로그, 그리고 해당 파일들이 생성 되는 것을
볼 수 있습니다.
2. 다이얼로그 컨트롤 배치 및 변수 등록 하기
- 기본적으로 다이얼로그 베이스 프로젝트를 생성하면 두 개의 다이얼로그가 생성되는데, 여기서 IDD_ABOUTBOX 는 그냥 프로그램 정보를 보여주기 위한 다이얼로그니 특별히 수정할 일이 없습니다.
- 생성한 프로젝트 이름으로된 다이얼로그를 더블클릭 해서 보면 위 그림처럼 기본적으로 버튼두개 들어간
다이얼로그가 생성 됩니다.
- 버튼과 가운데 있는 Static 문자열을 그냥 지워 버리고, 툴박스에서 이것저것 마우스로 드래그 해서 배치 합니다.
- 배치된 컨트롤
맨 윗줄 : Static Text , Combo Box, Static Text, Combo Box, Button, Button
중간 : Edit Control
맨 아래: Edit Control , Button
* Static text 속성 변경
- Static Text 컨트롤을 마우스로 선택하고, 마우스 오른쪽 버튼을 누르면 Properties 가 나오는데 이걸 선택 하면
관련 속성들을 변경 할 수 있습니다. 여기서 Caption 만 바꿔 줍니다.
- Caption 을 COM port 로 바꿔 주고. 그 옆에 옆에 있는 Static Text 도 마찬가지로 caption 만
“Baud rate” 로 바꿔 줍니다.
* COMBO box 속성 변경
- COMBO BOX 도 오른족 마우스를 눌러 PROPERTIES 선택 선택 하고, TYPE 을 반드시 “Drop List” 로 변경 해 줍니다.
1) TYPE : Drop List
2) ID : IDC_COMBO_COMPORT
- ID 는 자신이 구분이 가능하게 하면 되지만 한눈에 알아 볼 수 있게 좀 길지만 구별이 가능 하도록 지었습니다.
* COMBO box 맴버 변수 등록 ( 컨트롤 변수 등록 )
- 콤보박스 컨트롤에서 오른쪽 마우스버튼을 눌러 add variable 을 선택 해 줍니다.
- Category 를 Control 로 선택 하고 (디폴트로 선택됨) Control Id 가 아까 속성 변경 할 때 등록한 ID 가
맞는지 확인합니다.
- Variable name 을 적당히 지어 줍니다.
- Finish 를 누르면 맴버 변수가 등록 됩니다.
- 등록된 맴버 변수는 class view 의 CserialDlg 클래스를 선택해 보면 확인 할 수 있으며, solution explorer 에서도 serialDlg.h 와 serialDlg.cpp 파일에서 볼 수 있습니다.
- 보레이트 선택용 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 으로 하는 차이가 있습니다.
- 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 속성 변경 및 변수 등록
- 속성중 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
* 컴파일 해보기
- 여기까지 해놓고 살짝 컴파일을 해보고 ( ALT+CTRL+F7) F5 를 눌러 디버깅 모드로 실행해 보면 위 그림과 같이
필요한 컨트롤들이 다 배치되어 마치 그럴싸? 한 프로그램이 된것 같습니다.
이제 실제 구현을 위한 부분만 남았으며 다음시간에 이어서 하겠습니다.
참고로 이상태에서 엔터나 esc 버튼을 누르면 종료되는 문제가 있습니다. 이 문제를 엔터 버그라고 하고, 관련된 글은
본포럼을 찾아보시면 있습니다.
강사님 따라 시리얼 통신 프로그램을 시작 해볼까 합니다
좋은 강의 감사드려요!!