코딩하는코알라/C#

[C#] 시리얼 통신이란

룰루랄라코알라 2023. 8. 3. 07:50

시리얼 포트 (Serial Port, 직렬 포트)는 한 번에 하나의 비트 단위로 정보를 주고 받을 수 있는 직렬 통신의 물리적 인터페이스로서 다양한 주변 기기와의 통신에 사용한다.
시리얼 포트는 일반적으로 RS-232 표준을 따르는 하드웨어로서 모뎀이나 직렬 마우스, 바코드 리더, 디지탈 측정 장비 등 다양한 주변 기기를 시리얼 포트에 연결하여 사용할 수 있다.

 

주요 속성 

  • PortName: 연결할 시리얼 포트 이름 (예: COM1, COM2 등).
  • BaudRate: 통신 속도 (bps 단위).
  • Parity: 패리티 비트 설정 (None, Odd, Even 등).
  • DataBits: 데이터 비트의 수 (보통 7 또는 8).
  • StopBits: 스톱 비트의 수 (One, Two 등).
  • Handshake: 흐름 제어 설정 (None, Xon/Xoff, Hardware 등).

데이터 읽기 및 쓰기

  • Write: 데이터를 시리얼 포트로 보냅니다.
  • Read: 시리얼 포트로부터 데이터를 읽어옵니다.

이벤트

  • DataReceived: 시리얼 포트로부터 데이터를 받았을 때 발생하는 이벤트.
  • ErrorReceived: 시리얼 포트 통신 중 오류가 발생했을 때 발생하는 이벤트.
  • PinChanged: 시리얼 포트의 핀 상태가 바뀌었을 때 발생하는 이벤트.

 

using System;
using System.IO.Ports;

class SerialCommunication
{
    static SerialPort serialPort;

    public static void Main()
    {
        serialPort = new SerialPort();

        // 시리얼 포트 설정
        serialPort.PortName = "COM3";
        serialPort.BaudRate = 9600;
        serialPort.Parity = Parity.None;
        serialPort.DataBits = 8;
        serialPort.StopBits = StopBits.One;
        serialPort.Handshake = Handshake.None;

        // 이벤트 핸들러 등록
        serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

        serialPort.Open(); // 포트 열기

        // 데이터 쓰기 (예: 문자열 "Hello" 보내기)
        serialPort.WriteLine("Hello");

        Console.WriteLine("Press any key to continue...");
        Console.ReadKey();

        serialPort.Close(); // 포트 닫기
    }

    private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        string indata = sp.ReadExisting(); // 데이터 읽기
        Console.WriteLine("Data Received:");
        Console.WriteLine(indata);
    }
}

 

DataReceived 이벤트를 사용하여 데이터를 비동기적으로 읽고 자동으로 데이터를 처리해준다. 

 

 

 

 

주로 많이 사용 하는 통신 프로토콜

 

 

 PLC는 제조 회사에서 많은 프로토콜에 맞게 보내줘야 한다. 

EX) 

반응형