페이지

글목록

레이블이 studio인 게시물을 표시합니다. 모든 게시물 표시
레이블이 studio인 게시물을 표시합니다. 모든 게시물 표시

2016년 3월 7일 월요일

[try_term] c#으로 통신 터미날 만들기 #2

지난 번 폼 만들기에 이어서, 마지막에 추가해서 만들었던 폼을 수정해 봤습니다.

테라텀(Tera Term)의 시리얼 포트 설정를 모델로 삼아 폼을 똑같이 만들어 봤습니다.



위의 새로 만든 frmConnection.cs [디자인] 은 도구상자에서 다음과 같은 폼들을 사용해서 만들었습니다.



이제 프로그램을 실행했을 때, 메인 Form 의 메뉴에서 설정->시리얼 포트(S) 를 클릭하면 위의 포트설정 창이 뜨도록 해 보겠습니다. 


먼저 frmMain.cs[디자인] 탭으로 가서, 메뉴의 설정->시리얼포트(S) 를 더블 클릭하합니다.





설정->시리얼포트(S) 를 더블 클릭하면 private void 시리얼포트ToolStripMenuItem_Click() 함수가 자동으로 frmMain.cs 파일에 생깁니다. 자세한 위치는 다음과 같습니다.



frmConnection m_ClassConnection = new frmConnection();
frmConnection 타입의 객체 m_ClassConnection 을 만듭니다.

그리고 나서 private void 시리얼포트ToolStripMenuItem_Click() 함수 안에 윈도우 창을 여는 함수를 넣어 줍니다.
(참고로 현재 문법이 많이 딸려서 설명이 좀 안됩니다. ^^)


(코드)
namespace try_term
{
    public partial class frmMain : Form
    {
        frmConnection m_ClassConnection = new frmConnection();
        public frmMain()
        {
            InitializeComponent();
        }

        private void 시리얼포트ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            m_ClassConnection.ShowDialog();
        }
    }
}

위와 같이 코드를 추가하고, 실행했을 때.. 메뉴의 설정->시리얼 포트를 클릭하니까 시리얼 포트 설정 창이 떴음을 확인했습니다.



그리고, C# 을 오늘 연습하다 한참 해멘 것이 있었습니다.
이 프로그램을 실행하자 마자, 시리얼포트 설정창을 뜨게 해 보려고 했는데...
분명히 제대로 한 것 같은 데 생각대로 안됐었습니다.

그 이유는,  제가 예제 소스만을 보고 frmMain_Load() 함수를 코드를 직접 쳐서 넣었는데,
frmMain_Load() 함수는 컴파일러에 의해서 자동으로 만들어 지는 함수였습니다.


이 함수는 frmMain.cs[디자인] 탭에서 윈도우 창의 대가리를 더블클릭 하면 생성됩니다.



Load 이벤트 함수는, 절대 코드를 예제 보고 쳐 넣으면 안되는 것이네요. 2시간 헤맸네요. ㅜㅜ



이 함수를 Load 이벤트 함수라고도 하는데, 일반 함수가 아닌 특수한 의미의 함수입니다.
폼이 생성될 때, 처음으로 실행되는 함수가 load 이벤트 함수이므로, 이 함수 안에 m_ClassConnection.ShowDialog(); 코드를 넣어 주면 되겠죠? ^^

수정한 프로그램을 실행 시켰더니, 처음에 먼저 시리얼포트 설정 창이 뜨고, 이 참을 닫으면 메인창이 나타났습니다.
그리고 나서 메뉴의 설정->시리얼포트를 클릭하니까, 다시 시리얼 포트 설정 창이 떴습니다.
생각대로 잘 됐음을 확인했습니다.


최종 코드는 다음과 같습니다.



(소스 코드)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
using System.IO;

namespace try_term
{
    public partial class frmMain : Form
    {
        frmConnection m_ClassConnection = new frmConnection();

        public frmMain()
        {
            InitializeComponent();
        }

        private void 시리얼포트ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            m_ClassConnection.ShowDialog();
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            m_ClassConnection.ShowDialog();
        }
    }
}

2016년 3월 5일 토요일

[try_term] c#으로 통신 터미날 만들기 #1

예전부터 c# 책을 사서 출퇴근시 읽곤 했는데,
정리가 안되어 블로그에 글을 쓰면서 자료를 남기고자 합니다.

자료를 정리를 안하다 보니, 매번 처음부터 다시 시작하고 다음 번에 연결해서 프로그램을 만들어보고자 할 때
전혀 생각이 안나는군요.

윈도우 프로그램으로 예전에 Labview 를 주로 쓰다가, c#으로 갈아타려고 했는데 배워야 할 것이 많아서
아직도 거의 기초를 해메고 있습니다.

일단, 펌웨어 테스트시 주로 UART 통신을 많이 하니까 터미날 프로그램을 만들어 보려고 합니다.

다행히 여기저기 참고할 사이트가 많네요.

먼저 비주얼 스투디오를 깔았고, 새로운 프로젝트를 이름은 try_term 으로 만들었습니다.
여기에 MenuStrip SplitContainer,TextBox 를 추가했습니다.

*1번 : SplitContainer, 참조 사이트 링크

나중에 툴팁이라는 것을 사용하기위해 설명이 잘된 사이트를 찾아 보았습니다. (링크)
툴팀의 정의 : Tooltip 컨트롤은 특정 컨트롤에 마우스를 올려 놓으면 간단한 도움말을 보여줄 때 쓰여지는 컨트롤이다.

아, 그리고 이 프로그램을 참고한 사이트(링크)가 있는데, 처음에는 이 프로그램 소스랑 비슷하게 해보고
점점 프로그램을 추가/수정해 나아갈 것입니다. 참 많은 도움이 됩니다.
원 제작자의 디자인은 아래와 같습니다.


그래서 위의 디자인처럼 SplitContainer 를 넣고, 설정을 
Dock : None 으로 전체 프레임에서 떨어뜨려 놓았고, 
Anchor : Bottom,Left,Right 로 하여 전체 프레임을 마우스로 변경해도 왼쪽,오른쪽,아래에 붙어서 같은 비율로 조정됩니다.

다음은 SplitContainer 의 왼쪽과 오른쪽에 TextBox 를 넣고 dock 를 Fill 로 설정하여 전체 크기에 맞게 조정되도록 설정했습니다.


그리고 TextBox 의 우측 위의 > 아이콘을 누르면 MultiLine 으로 만들 수 있습니다.

다음으로 메뉴를 만드는 기능인 MenuStrip 을 왼쪽 도구상자에서 끄집어다 왼쪽 위에다 붙여서 편집 합니다.
#1 설정,시리얼 포트,통신 끊기
#2 전송,파일 보내기,X-modem 전송

다음으로 또 다른 윈도우 폼을 만들어 봅시다. 이 기능은 나중에 메뉴를 선택하면 또 다른 창을 띄우기 위한 용도로 쓰일 예정입니다.
[새로운 폼 만들기]



이름을 frmConnection.cs 로 하고 추가를 눌렀더니 다음과 같이 폼이 새로 만들어 졌습니다.