본문으로 바로가기
반응형

 

메인 클래스에서 참조(상속)하고 있는 시리얼통신을 위한 기본소스(중요)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Threading.Tasks;

namespace TEST_RTU
{
    class cSerialPort
    {

        public SerialPort serialport = new SerialPort();

        //===========================================================//
        /// <summary>
        /// 시리얼 통신 설정 값 설정 메서드
        /// </summary>
        /// <param name="com"></param>
        /// <param name="baudrate"></param>
        /// <param name="parity"></param>
        /// <param name="data"></param>
        /// <param name="stop"></param>
        public void fn_iniPort(string com, int baudrate, string parity, int data, int stop)
        {
            serialport.PortName = com;
            serialport.BaudRate = baudrate;
            if (parity == "N") serialport.Parity = Parity.None;
            else if (parity == "O") serialport.Parity = Parity.Odd;
            else if (parity == "E") serialport.Parity = Parity.Even;

            serialport.DataBits = data;
            if (stop == 1) serialport.StopBits = StopBits.One;
            else if (stop == 2) serialport.StopBits = StopBits.Two;
        }

        //=================================================================//
        /// <summary>
        /// 시리얼 포트 오픈
        /// </summary>
        /// <param name="fn_OnDataReceived"></param>
        /// <returns></returns>
        //=================================================================//
        public int fn_Open(SerialDataReceivedEventHandler fn_OnDataReceived)
        {
            int iret = 0;
            serialport.DataReceived += fn_OnDataReceived;
            try
            {
                iret = 1;
                serialport.Open();
            }
            catch(Exception e)
            {
                iret = -1;
            }
            return iret;
        }

        //=====================================================================//
        //시리얼 포트 연결 종료
        //=====================================================================//
        public void fn_Close(SerialDataReceivedEventHandler fn_OnDataReceived)
        {
            if (serialport.IsOpen)
            {
                serialport.Close();
                serialport.DataReceived -= fn_OnDataReceived ;
            }
        }

        //=====================================================================//
        //데이터 요청
        //=====================================================================//
        public void fn_Send(byte[] buffer, int offset, int count)
        {
            //보낼데이터(버퍼값), 번지수, 데이터 개수)
            serialport.Write(buffer, offset, count);
        } 
    }
}

 

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

 

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

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 Syste..

dodo1054.tistory.com

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

 

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

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

dodo1054.tistory.com

[C#] - C# 모드버스 RTU 시리얼통신 구현하기

[C#] - C# 모드버스 RTU 시리얼통신 구현하기2

[C#] - C# Modbus RTU CRC 구하기

 

반응형