728x90
반응형

보낼 명령어를 입력하는 창을 만들자.

TextBox를 위치시키고 속성 창에서 Name는 input_textBox로 변경, Anchor을 Bottom, Left, Right 선택

 

Button을 하나 오른쪽에 위치 시키고 Name을 send_button으로 변경 하자.

 

Anchor을 다음과 같이 Right, Bottom만 선택 하자.

 

Text는 SEND로 변경 해주자. SEND 버튼을 누르면 데이터가 전송 된다.

 

이제 SEND Button을 두번 클릭 하여 코드 창으로 들어가자.

 

아래 화면과 같이 나온다.

 

우선 serial 데이터를 받아서 창에 표시를 해주기 위해 아래처럼 문장 하나를 추가 해주자.

comport.DataReceived += new SerialDataReceivedEventHandler(comport_DataReceived); <= 이것 추가.

쓰레드 충돌을 피해서 데이터를 창에 표시하기 위해 아래와 같이 추가 해주자.

 

send Button까지 모드 코드가 들어가 있다 모두 추가 해주자.

        private void comport_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            this.Invoke(new EventHandler(serial_received)); //쓰레드 충돌을 피하기 위해 Invoke 사용
        }

        private void serial_received(object s, EventArgs e)
        {
            string receivedata = comport.ReadExisting(); //수신된 데이터를 receivedata 버퍼로 읽어오기
            string time = DateTime.Now.ToString("HH:mm:ss.fff");    //현재 시간 만들기.
            display_textbox.AppendText($"RX-{time} : {receivedata}");   //수신 시간과 데이터를 display_textbox에 표시하기.
        }
        private void send_button_Click(object sender, EventArgs e)
        {
            if (comport.IsOpen)
            {
                string inputdata = input_textBox.Text + "\r\n";
                comport.Write(inputdata);   //데이터 보내기
                string time = DateTime.Now.ToString("HH:mm:ss.fff");    //현재 시간 만들기.
                display_textbox.AppendText($"TX-{time} : {inputdata}");   //송신 시간과 데이터를 display_textbox에 표시하기.
                input_textBox.Clear();
            }
        }

 

다음 사진을 보면 TX로 시작 하는것은 보낸 데이터 이고 RX로 시작하는 것은 수신 데이터 이다.

 

 

이상 종료 합니다.

728x90
반응형
728x90
반응형

왼쪽 도구상자에서 TextBox를 가지고 오자.

 

폼에 위치 시킨후 마우스 오른쪽 보튼을 눌러 속성 창을 열어 주자.

 

오른쪽 아래 속성창이 열린것을 확인 할수 있다. 속성창에서 ReadOnly를 찾아서 True로 변경 해주자.

 

다음은 Multiline를 찾아서 True로 변경 해주자.

 

다음은 TextBox크기를 크게 만들어주고 ScrollBars를 Verical로 변경 해주자.

 

TextBox Name을 display_textbox로 변경 하주자.

 

화면을 늘리거나 줄일때에도 변화가 없게 하기 위해 Anchor을 찾아서 오른쪽에 버튼을 누른다.

 

조그만 창이 뜨면 오른쪽 아래처럼 모두다 선택 해주자.

 

실행해서 보면 다음과 같이 나온다.

 

오른쪽 위 최대화를 누르면 다음과 같이 나오는것을 확인 할수 있다.

 

728x90
반응형
728x90
반응형

도구 상자에서 Button 을 하나 가져와서 만든다.

 

아래 화면 처럼 버튼을 위치 시키고 오른쪽 아래 속성창에서 (Name) 항목을 찾아서 open_value로 명칭을 변경하자. 변경 하지 않아도 무관하나 그냥 내가 이해하기 쉬우려고 했다.

 

다음으로는 Text 항목에 가서 Open으로 변경 해줬다. (코드로 변경 해도 무관.)

 

이제 지금까지 만든 Button 위에서 마우스 왼쪽 버튼을 두번 클릭 하자.

 

두번 클릭하면 아래와 같이 코드 창이 열리고 버튼을 클릭 했을때 실행 하는 함수가 나온다.

 

그러면 아래와 같이 코드를 넣어주자.

 

            try
            {
                if (open_button.Text == "Open")
                {
                    comport.PortName = this.Comport_ComboBox.SelectedItem.ToString();   //comport setting
                    comport.BaudRate = int.Parse(this.Baudrate_comboBox.SelectedItem.ToString());   //baudrate setting
                    comport.DataBits = int.Parse(this.Databits_comboBox.SelectedItem.ToString());   //databit setting
                    comport.Parity = (Parity)Enum.Parse(typeof(Parity), Paritybits_comboBox.SelectedItem.ToString());   //paritybits setting
                    comport.StopBits = (StopBits)Enum.Parse(typeof(StopBits), Stopbits_comboBox.SelectedItem.ToString());   //stopbit setting
                    comport.Open(); //comport open
                    open_button.Text = "Close"; //no err시 
                }
                else
                {
                    comport.Close();
                    open_button.Text = "Open";  //text 초기화
                }
            }
            catch
            {
                open_button.Text = "Open";  //text 초기화
                MessageBox.Show("통신에 이상이 있습니다.");
            }

 

위 코드를 붙여 넣고 실행하여 설정을 변경해서 통신 포트를 열거나 닫을수 있게 되었다.

 

시리얼 통신 포트를 USB에 연결하고 프로그램을 실행하면 잡힌 통신 포트가 목록에 추가 되어 있다.

 

 

 

 

 

 

 

 

나머지 사진처럼 통신 포트를 열거나 닫을수 있다.

728x90
반응형
728x90
반응형

Visual Studio를 실행한후에 새 프로젝트 만들기를 클릭한다.

 

모든언어에서 C#선택, 모든 플랫폼에서 Windows 선택후 아래로 스크롤 하면 Windows Forms 앱(.NET Framework) 선택후 다음 클릭

 

프로젝트 이름을 넣고 저장 위치를 선택. 솔루션 및 프로젝트를 같은 디렉터리에 배치를 체크 해준다.

 

프로젝트가 만들어지고 다음과 같이 기본 창이 열린다. 도구 상자가 없다. 표시 해주자.

보기에 도구상자를 클릭하면 도구 상자가 나온다. 또는 (Ctrl+Alt+X 를 누르면 된다.)

 

도구 상자가 나왔다. 혹시 도구 상자에 글씨가 없으면 Form창을 클릭 하고 다시 보면 나올것이다.

 

도구 상자가 사라지지 않게 고정하자. 아래 화면에서 처럼 자동 숨기기 버튼을 한번 눌러 고정 할수 있다.

 

여기까지 하면 다음과 같은 창이 열려 있을것이다.

 

이번에는 디자인에 Form1이라는 이름을 변경 해보자. 우선 속성창이 나오게 하자.

1안. Form1 창을 마우스 왼쪽 버튼으로 한번 클릭후 Alt + Enter 키를 누르면 오른쪽 아래 속성창이 뜬다.

 

2안. 오른쪽 솔루션 탐색기에서 Form1.cs를 마우스 오른쪽 버튼을 누른후 속성을 누르면 속성창이 뜬다.

       (화면에 폼에서 마우스 오른쪽 버튼을 눌러도 됨.)

 

오른쪽 아래 만들어진 속성 창에서 아래로 스크롤 하면 Text 글자 옆에 Form1 이라고 있는데 이글씨를 변경하면 바뀐다.

 

아래와 같이 변경되는것을 확인 할수 있다.

 

이번에는 Serial 통신 프로그램 글자 앞에 Icon을 변경 해보자.

 

먼저 인터넷에서 적당한 Icon 파일을 다운 받자.

https://icon-icons.com/

 

Free Icons PNG, ICO, ICNS and SVG

Are you a designer? Share your work with people all over the world. Start upload

icon-icons.com

 

 

위 사이트에 가서 lan 이라고 검색을 해보자. 검색후 아래 아이콘 두개를 다운 받을것이다.

 

 

아이콘을 클릭하면 아래와 같이 나온다. 이창에서 ICO를 선택하고 Download ICO를 클릭 해주자. 다른 하나도 동일하게 다운 로드 해주자.

 

오른쪽 아래 속성창에서 아래로 내리면 Icon 글자가 나올것이다. 아래 화면처럼 글자 옆에 ... 버튼을 눌러주자.

 

창이 열리면 다운 받았던 아이콘 파일을 선택 후 열기 버튼을 눌러주자.

 

앞에 아이콘이 변경 된것을 알수 있다.

 

일반적으로 Serial 통신을 위해서는 설정 해야 하는것이 있다.

통신포트, Baud Rate, Data Bits, Parity Bits, Stop Bits 가 있다.

이것을 설정 할수 있도록 만들어 보자.

 

먼저 통신포트 설정 부분을 해보자.

이제 통신 설정 부분을 진행 하자.왼쪽 도구상자에 보면 ComboBox가 있다. 클릭한후에 오른쪽 폼에 그려 주자.

 

ComboBox를 놓았으면 ComboBox를 한번 클릭후 오른쪽 아래 속성창에서 Text란에 Comport라고 입력 해주자.

그러면 ComboBox안에 Comport라고 나올것이다. 프로그램을 실행 하면 Comport라고 나올것이다. 궁금하면 F5를 눌러 실행 해보자.

 

다음은 ComboBox를 클릭후 오른쪽 아래 속성 창에서 (Name)를 찾아보면 comboBox1 이라고 적혀 있을것이다.

comboBox1은 프로그램시 사용하는 고유 이름이다. 이해하기 쉽게 하기 위해 변경 Comport_ComboBox라고 변경 해주자.

 

다음은 통신 속도 Baud Rate 설정 창을 만들어 보자.

도구상자에서 ComboBox를 클릭하여 위와 같이 동일하게 하나 더 만들어 주자.

만든후 속성창에 Text에는 보통 많이 사용하는 값을 써 놓자.

 

다음 속성창에 (Name)칸에는 Baudrate_comboBox라고 넣어주자.

위와 동일하게 Data Bits, Parity Bits, Stop Bits를 만들어 주자.

(Name)에는Data Bits는 Databits_comboBox, Parity Bits는 Paritybits _comboBox , Stop Bits는 Stopbits_comboBox라고 넣어주자.

위와 같이 임의로 만들었으나 이것이 각각 무엇을 뜻하는지 사용자가 알기 어렵다.

그래서 이름을 붙여주자.

왼쪽 도구 상자에서 Label을 클릭하여 Form에 그려주자.

 

label1 글자를 마우스로 선택후 오른쪽 아래 속성창에 Text 에서 통신 포트로 변경 해보자.

여기까지 되었다면 통신 속도, 데이터, 패리티, 정지 까지 만들기 위해 label을 4개 더 만들고 Text를 변경하여 만들자.

만든후에는 마우스로 해당 개체를 누른후 이동하여 정당한 위치에 놓도록 하자.

F5 키를 눌러 실행해보면 아래와 같이 나오는데 아래에 데이터는 아무것도 없다. 추가 해주어야 한다.

프로그램을 중지 하자. 실행창에 오른쪽 X를 누르거나 Visual Studio 창에 빨간 정지 버튼을 누르거나 Visual Studio 창이 선택 된 상태에서 키보드 Shift + F5키를 눌러 정지 하자.

ComboBox에 데이터를 추가 해주자. 개별적으로 속성 창에서 추가 해주는 방법이 있으나 프로그램에서 추가를 하겠다.

Form을 더블 클릭 해주자.

위에서 마우스로 더블 클릭 하면 아래와 같이 프로그램 창이 열리고 Form1_Load로 이동한다.

 

프로그램에서 아래와 같이 입력하면 통신 속도가 입력이 됨. 

 

통신 포트 만 빼고 데이터, 패리티, 정지를 모두 넣어주자.

 

모두 입력 했다. 복붙을 위해 아래 복사 할수 있게 넣어 놓는다.

 

            Baudrate_comboBox.Items.Clear();        //통신 속도 콤보 박스 데이터 삭제 (안해도 됨)
            Baudrate_comboBox.Items.Add("2400");    //Select Index = 0
            Baudrate_comboBox.Items.Add("4800");    //Select Index = 1
            Baudrate_comboBox.Items.Add("9600");    //Select Index = 2
            Baudrate_comboBox.Items.Add("14400");   //Select Index = 3
            Baudrate_comboBox.Items.Add("19200");   //Select Index = 4
            Baudrate_comboBox.Items.Add("28800");   //Select Index = 5
            Baudrate_comboBox.Items.Add("56000");   //Select Index = 6
            Baudrate_comboBox.Items.Add("57600");   //Select Index = 7
            Baudrate_comboBox.Items.Add("115200");  //Select Index = 8
            Baudrate_comboBox.Items.Add("230400");  //Select Index = 9
            Baudrate_comboBox.SelectedIndex = 8;    //115200 선택, 폼에서 입력 해서 안해줘도 무방함.
            Databits_comboBox.Items.Clear();        //데이터 비트 콤보 박스 데이터 삭제 (안해도 됨)
            Databits_comboBox.Items.Add("5");       //Select Index = 0
            Databits_comboBox.Items.Add("6");       //Select Index = 1
            Databits_comboBox.Items.Add("7");       //Select Index = 2
            Databits_comboBox.Items.Add("8");       //Select Index = 3
            Databits_comboBox.SelectedIndex = 3;    //8bit 선택, 폼에서 입력해서 안해줘도 무방함.
            Paritybits_comboBox.Items.Clear();      //패리티 비트 콤보 박스 데이터 삭제 (안해도 됨)
            Paritybits_comboBox.Items.Add("Even");  //Select Index = 0
            Paritybits_comboBox.Items.Add("Mark");  //Select Index = 1
            Paritybits_comboBox.Items.Add("None");  //Select Index = 2
            Paritybits_comboBox.Items.Add("Odd");   //Select Index = 3
            Paritybits_comboBox.Items.Add("Space"); //Select Index = 4
            Paritybits_comboBox.SelectedIndex = 2;  //None 선택, 폼에서 입력해서 안해줘도 무방함.
            Stopbits_comboBox.Items.Clear();        //스톱 비트 콤보 박스 데이터 삭제 (안해도 됨)
            Stopbits_comboBox.Items.Add("1");       //Select Index = 0
            Stopbits_comboBox.Items.Add("1.5");     //Select Index = 1
            Stopbits_comboBox.Items.Add("2");       //Select Index = 2
            Stopbits_comboBox.SelectedIndex = 0;    //1선택, 폼에서 입력해서 안해줘도 무방함.

 

다음은 통신 포트를 추가 하도록 하겠다.

위에 방법으로 넣을수도 있지만 그렇게 하면 어떤것이 있는것인지 알수 없기에 검색해서 있는것만 표시 하도록 하겠다.

먼저 시리얼 통신을 위해 변수 선언을 해준다. 아래 사진에 위치에 SerialPort comport = new SerialPort(); 를 입력 해준다.

 

위에 입력했던 아래부분에 다음과 같이 입력 해준다.

            foreach (string serial_port_list in System.IO.Ports.SerialPort.GetPortNames())
            {
                try
                {
                    comport.PortName = serial_port_list;
                    comport.Open();
                    if (comport.IsOpen)
                    {
                        this.Comport_ComboBox.Items.Add(serial_port_list);
                        comport.Close();
                    }
                }
                catch { }
            }

 

다음 Comport Serial 장비를 PC에 연결하고 프로그램을 실행 해보자. 아래 그림을 보면 COM4로 장비가 하나 잡혀 있는것을 확인 할수 있다.

728x90
반응형
728x90
반응형

도구 -> NuGet 패키지 관리자 -> 솔루션용 NuGet 패키지 관리 클릭

찾아보기에서 Microsoft.office 입력후 검색누르면 Microsoft.Office.Interop.Excel이 나옴

Microsoft.Office.Interop.Excel 클릭하고 오른쪽에 프로젝트 체크후 설치 누르면 됨.

728x90
반응형

+ Recent posts