블로그 이미지
따시쿵

calendar

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

Notice

2015. 3. 10. 10:49 C# with SerialPort

프로그램 설명


인스턴스 메시지 기능으로 통신하는 프로그램입니다.


사용한 시리얼포트는 COM3(write), COM4(read) 이며, 설정 화면은 아래와 같습니다.




실행 후




메시지 전송 후







프로그램 작성


        public Form1()
        {
            InitializeComponent();
        }

        private static string RxString = string.Empty;

        #region initButton click method
        private void initButton_Click(object sender, EventArgs e)
        {
            try
            {
                // 시리얼 포트가 열려 있는지 확인
                if (!serialPortWrite.IsOpen && !serialPortRead.IsOpen)
                {
                    // 메시지 출력
                    richTextBoxCom4.Text = serialPortWrite.PortName + " Ready!!!" + Environment.NewLine;
                    richTextBoxCom4.AppendText(serialPortRead.PortName + " Ready!!!" + Environment.NewLine);

                    // 포트 오픈
                    serialPortRead.Open();
                    serialPortWrite.Open();

                    // 버튼 비활성화
                    initButton.Enabled = false;
                }
                else
                {
                    richTextBoxCom4.Text = "Port isn't opened";
                }
            }
            catch(UnauthorizedAccessException ex)
            {
                MessageBox.Show(ex.Message, "Error");
            }
        }
        #endregion

        #region Form1_FormClosing method
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (serialPortWrite.IsOpen)
                serialPortWrite.Close();

            if (serialPortRead.IsOpen)
                serialPortRead.Close();
        }
        #endregion

        #region serialPortRead DataReceived method
        private void serialPortRead_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            try
            {
                RxString = serialPortRead.ReadExisting();
                this.Invoke(new EventHandler(DisplayText));
            }
            catch (TimeoutException ex) { }
        }
        #endregion

        #region Displaytext
        private void DisplayText(object sender, EventArgs e)
        {
            richTextBoxCom4.AppendText(RxString);
        }
        #endregion

        #region sendButton click method
        private void sendButton_Click(object sender, EventArgs e)
        {
            serialPortWrite.Write(richTextBoxCom3.Text + Environment.NewLine);
        }
        #endregion

        #region richTextBoxCom3 KeyPress method
        private void richTextBoxCom3_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(!serialPortWrite.IsOpen || !instanceMS.Checked)
                return;

            char[] buffer = new char[1];
            buffer[0] = e.KeyChar;

            serialPortWrite.Write(buffer, 0, buffer.Length);
        }
        #endregion

        #region clearButton click method
        private void clearButton_Click(object sender, EventArgs e)
        {
            richTextBoxCom3.Text = "";
            richTextBoxCom4.Text = "";
        }
        #endregion

 

 

소스 파일 :

serialPortTest2.zip

 


'C# with SerialPort' 카테고리의 다른 글

[Program C#] 시리얼포트로 읽기/쓰기 - 기본  (0) 2015.03.09
posted by 따시쿵