본문 바로가기
개인 스터디

시리얼 통신

by 태운콩즙 2024. 10. 10.
728x90
반응형

시리얼 통신(Serial Port)

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

.net 에서 시리얼 포트를 사용하기 위해서는 System.IO.Ports 네임스페이스 안에 SerialPorts 클래스를 이용 하면 된다. SerialPort 클래스를 사용하는 절차는 크게 5단계로 나눈다

  • SerialPort Class 객체 생성
  • (Optional)SerialPort 포트 셋팅
  • 시리얼포트 오픈
  • 시리얼 포트에서 데이터 읽기나 쓰기
  • 시리얼 포트 닫기
// 1. SerialPort 클래스 객체 생성
SerialPort sp = new SerialPort();

// 2. 시리얼 포트 오픈
sp.Open();

// 3. 시리얼 포트에서 한 라인 읽기
string data = sp.ReadLine();

// 4. 시리얼 포트 닫기
sp.Close();

위 상황에서는 SerialPort 객체를 아무 파라미터 없이 생성하면 디폴트 COM 포트 세팅을 사용한다

디폴트 세팅은

(COM1 포트, 9600 BaudRate, 8 DataBits, None Parity, 1 StopBits )

시리얼 포트에서 데이터 읽기

시리얼 포트에서 데이터를 읽어오는 코드는 위의 기본 절차 들을 따르면 된다 일반적을 실무에서 시리얼 포트 통신을 위해서는 비동기 방식을 사용하지만 가장 간단한 예제를 만들기 위해 시리얼 포트를 열고 동기 적으로 데이터 코드를 읽어 오는 형식을 살펴보자 아래 예제는 COM5 포트를 열고 한 라인의 데이터를 읽어 오는 코드이다 이어 코드에는 시리얼 포트에서 읽은 한 라인을 출력하고 COM5 포트를 닫게된다

시리얼 포트에서 데이터를 읽는 메서드는 여러가지가 있다 즉 한 바이트만 읽어오는 ReadByte() 한글자를 읽어오는 ReadChar() 여러 바이트 들을 익어오는 Read() 한 라인을 읽어오는 ReadLine() 등이 있다

using System;
using System.IO.Ports;

namespace SerialApp
{
	class Program
	{
		static void Main(string[] args)
		{
			// 1. SerialPort 클래스 객체 생성
			 SerialPort sp = new SerialPort("COM5");
			 // 2. 시리얼 포트 오픈
			 sp.Open();
			 // 3. 시리얼 포트에서 한 라인 읽기
			 string data = sp.ReadLine();
			 
			 Console.WriteLine(data);
			 
			 // 4. 시리얼 포트 닫기
			 sp.Close();
			 
			 Console.WrireLine("Press Enter to Quit");
			 Console.ReadLine();
		}
	}
}

시리얼 포트에 데이터 쓰기

시리얼 포트에 데이터를 쓰는 코드는 위에 데이터를 읽는 코드와 거의 유사하지만 차이점은 읽기 메서드 대신 쓰기 메서드를 사용한다는 것이다 여기 서는 가장 간단한 예제로 시리얼 포트를 열고 동기 적으로 데이터를 쓰는 코드를 살펴본다 아래 예제는 COM6 포트를 열고 한 라인의 데이터를 쓰고 COM 포트를 닫는 코드이다

시리얼 포트에서 데이터를 쓰는 메서드는 문자열을 Newline 없이 쓰는 Write() 메서드와 한 라인을 쓰는 WriteLine() 등이 있다

using System.IO.Ports;

namespace SerialWrt
{
	class Program
	{
		static void Main(string[] args)
		{
			//1. SerialPort 클래스 객체 생성 (CCM6 포트 사용)
			SerialPort sp = new SerialPort("COM6");
			
			// 2.시리얼 포트 오픈
			sp.Open();
			// 3. 시리얼 포트에서 한 라인 쓰기
			sp.WriteLine("Hello World");
			
			// 4. 시리얼 포트 닫기
			sp.Close();
		}
	}
}

시리얼 포트 세팅 옵션

SerialPort 객체를 생성 할 때 혹은 객체를 생성하고 포트를 오픈 하기 전에 해당 포트에 대한 세팅을 설정 할 수 있다 자주 사용하는 포트 세팅 옵션으로는 포트 명(PortName),BaudRate, 데이터 비트(DataBits), 패러티(Parity),스톱비트(StopBits)등이 있는데 BaudRate ,DateBits ,Parity ,StopBits 등의 세팅 들은 시리얼 통신을 하는 양쪽 포트에서 동일하게 설정해야 한다

아래 예제는 SerialPort 객체를 생성한 후, 여러 포트 셋팅 옵션들을 지정하는 예이다. 많은 경우 디폴트 포트 셋팅 옵션을 많이 사용하므로 이러한 옵션들은 필요할 때만 설정하면 된다.

// 1. SerialPort 클래스 객체 생성
SerialPort sp = new SerialPort();

// 2. SerialPort 포트 셋팅 설정
sp.PortName = "COM6";
sp.BaudRate = 9600;
sp.DataBits = 8;
sp.Parity = Parity.None;
sp.StopBits = StopBits.One;

// 3. 시리얼포트 오픈
sp.Open();
728x90
반응형

'개인 스터디' 카테고리의 다른 글

TCP 클라이언트  (0) 2024.10.11
Win Sock 과 .NET 클래스  (1) 2024.10.11
Delegate 에서 Event  (0) 2024.10.07
Spring MVC 웹서버 구동 방식  (0) 2024.02.05
스프링 프레임워크의 방식  (2) 2024.02.04