코딩하는코알라/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)
반응형