본문으로 바로가기
반응형

 

 

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;

namespace TEST_RTU
{
    public partial class Form1 : Form
    {
        //통신 연결 클래스
        MainConnect MainCon = new MainConnect();
        cThreadingTimer ThreadTimer = new cThreadingTimer();

        int OpenCheck = 0;
        public Form1()
        {
            InitializeComponent();
            RtuConnection();
            timer1.Enabled = true;
            timer2.Enabled = true;
        }


        //=========================================================
        //시리얼포트 연결을 위한 설정 
        //=========================================================
        private void SeriportSetUp()
        { 
            //설정 값은 (각 통신 장비마다 다름)//
             MainCon.fn_iniPort("COM1", 9600, "N", 8, 1);
        }

        //========================================================
        //프로그램 동작시 장치정보(셋업)에 따라 시리얼포트 연결 
        //========================================================
        private void RtuConnection()
        {
            try
            {
                SeriportSetUp();
                MainCon.SerialPort_Open();
                if (MainCon.serialport.IsOpen == true)
                {
                    OpenCheck = 1;
                    ThreadTimer.fn_start(MainCon.CallbackData, 2000, 1000);
                }
                else
                {
                    SeriportSetUp();
                    MainCon.SerialPort_Open();
                }
            }catch (Exception e)
            {
                e.Message.ToString();
            }
        }
        /* ****************** 송수신 데이터 확인 메서드 **********************
         * ****************** Hex 변환 값 뿌려주기 ********************
         * *******************************************************************/
        private void fn_TestData()
        {
            if (OpenCheck == 1)
            {
                for (int i = 0; i < 8; i++) textBox1.Text += fn_SendToHex(i).ToString() + " ";
                for (int i = 0; i < 126; i++) textBox2.Text += fn_ReadToHex(i).ToString() + " "; 
            }
        }

        /* ****************** 송신 버퍼 값을 Hex 값으로 변환하여 확인 *********************/
        /**********************************************************************************/
        private string fn_SendToHex(int startx)
        {
            string str;
            str = string.Format("{0:X2}", MainConnect.Sendbuff[startx]);
            return str;
        }

        /* *************** 수신(리드) 버퍼 값을 Hex 값으로 변환하여 확인 ****************/
        /********************************************************************************/
        private string fn_ReadToHex(int startx)
        {
            string str;
            str = string.Format("{0:X2}", MainConnect
                .CopyReadBuff[startx]);
            return str;
        }

        // 1초 타이머 함수 
        // fn_TestData IN Timer 
        private void timer1_Tick(object sender, EventArgs e)
        {
            fn_TestData();
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            textBox1.Text = "";
            textBox2.Text = "";
        }
    }
}

[C#] - C# 모드버스 RTU 시리얼통신 구현하기2 (주석 추가, 소스 공개)

 

C# 모드버스 RTU 시리얼통신 구현하기2 (주석 추가, 소스 공개)

안녕하세요 모드버스 시리얼 통신에 대해 소스 요청이 많아 테스트로 작성한 코드입니다. 블로그에 기존에 작성된 소스를 기반으로 작성했으며 클래스를 상속하여 오버라이딩한 부분도 같습니

dodo1054.tistory.com

[C#] - C# 모드버스 RTU 시리얼통신 구현하기 (주석 추가, 소스 공개)

 

C# 모드버스 RTU 시리얼통신 구현하기(주석 추가, 소스 공개)

메인 클래스에서 참조(상속)하고 있는 시리얼통신을 위한 기본소스(중요) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO.Ports; using System.Threadi..

dodo1054.tistory.com

[C#] - C# 모드버스 RTU 시리얼통신 구현 소스 파일 첨부

 

C# 모드버스 RTU 시리얼통신 구현 소스 파일 첨부

>>> 구성요소 <<< MainConnect.cs Form.cs <공용으로 쓰는 lib> cConversion.cs (데이터 컨버전 클래스) cLog.cs (로그 생성 클래스) cModbusRTU.cs (CRC 생성) cSerialProt.cs (통신 함수) ~ 기타 ~ (2개)

dodo1054.tistory.com

 

반응형