C# 테크닉 - 시리얼 통신 ( RS232 )
# 통신 채널이나 컴퓨터 버스를 거쳐 하나의 비트 단위로 연속적으로 데이터를 전송하는 과정
> 시간으로 나누어 차례대로 전송
> 전송 방식은 동기/비동기 방식으로 나뉜다.
- 동기 방식 : 데이터 신호와는 별도로 동기신호를 보낸다.
- 비동기 방식 : 데이터 신호만 보내고 각각의 방식에 따라 데이터 비트를 찾는다.
# 소스 코드
using System;
using System.IO.Ports;
SerialPort m_port = new SerialPort();
string m_strQueueMessage;
public bool OpenPort(string port, int baud = 9600)
{
m_port.PortName = port; // default : COM1
m_port.BaudRate = baud; // default : 38400
m_port.DataBits = 8; // default : 8
m_port.StopBits = StopBits.One; // default : StopBits.One
m_port.Parity = Parity.None; // default : Parity.None
m_port.ReadTimeout = 1000; // default : 500ms
m_port.WriteTimeout = 1000; // default : 500ms
m_port.DataReceived += new SerialDataReceivedEventHandler(RecvData);
m_port.Open();
return m_port.IsOpen;
}
public void ClosePort()
{
m_port.Close();
}
public void SendData(string msg)
{
m_port.Write(msg);
}
public void RecvData(Object sender, SerialDataReceivedEventArgs e)
{
string recv_data = m_port.ReadExisting();
m_strQueueMessage += recv_data;
if (0 < recv_data.Length)
{
// 수신 이벤트를 발생시킨다.
}
}