1. RS-232 시리얼 통신 기본 개념
- 시리얼 인터페이스: 데이터를 한 번에 한 비트씩 직렬로 전송.
- 패러럴 인터페이스: 데이터를 여러 비트씩 병렬로 전송.
- 장단점 비교:
- 시리얼: I/O 라인을 적게 사용, 장거리 전송에 적합.
- 패러럴: 빠른 전송 속도, 라인 소모가 많음.
- 장단점 비교:
2. 주요 신호 정의
신호설명
DCD | 데이터 캐리어 검출, 상대 모뎀 연결 상태 알림. |
RD | 수신 데이터, 상대방 송신 데이터와 연결. |
TD | 송신 데이터, 상대방 수신 데이터와 연결. |
DTR | 데이터 단말기 준비 상태. 컴퓨터가 송수신 준비 완료 알림. |
DSR | 데이터 세트 준비 상태. 모뎀이 송수신 준비 완료 알림. |
RTS | 송신 요청. 컴퓨터가 모뎀에 송신 준비 상태 물음. |
CTS | 송신 허가. 모뎀이 송신 가능 상태임을 컴퓨터에 알림. |
RI | 링 신호. 상대방으로부터 호출 상태를 알림. |
3. 데이터 송수신 과정
- 장치 상태 확인:
- DTR (컴퓨터 준비) → DSR (모뎀 준비).
- 송신 준비 확인:
- RTS (컴퓨터가 송신 준비 요청) → CTS (모뎀이 송신 가능 응답).
- 데이터 송수신:
- TXD (컴퓨터가 데이터 전송) → RXD (모뎀이 데이터 수신).
4. 비동기 및 동기식 통신
- 동기식:
- 송신자와 수신자의 동기화를 위해 별도의 클럭 신호 사용.
- 비동기식:
- 시작 비트와 정지 비트를 사용하여 동기화.
5. 양방향 통신 방식
유형설명예시
전이중 | 쌍방이 동시에 송수신 가능. | 전화 통신 |
반이중 | 한쪽이 송신 중이면 다른 쪽은 대기. | 무전기 (푸시토크) |
6. 주요 설정
- BaudRate:
- 데이터 전송 속도, 단위: bps (bits per second).
예: 9600bps는 초당 9600비트 전송.
- 데이터 전송 속도, 단위: bps (bits per second).
- DataBits:
- 데이터 크기, 일반적으로 8비트.
- Parity:
- 데이터의 정확성을 확인하는 방법 (홀수, 짝수, 없음 등).
- StopBits:
- 데이터 패킷의 끝을 표시하는 비트 개수.
7. C#에서 시리얼 통신 구현
a. 포트 열기 및 닫기
SerialPort SP = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
SP.Open(); // 포트 열기
if (SP.IsOpen)
{
Console.WriteLine("포트가 열렸습니다.");
}
SP.Close(); // 포트 닫기
b. 사용 가능한 포트 탐색
foreach (string comport in SerialPort.GetPortNames())
{
Console.WriteLine($"사용 가능한 포트: {comport}");
}
c. 데이터 송수신
// 데이터 송신
SP.WriteLine("Hello, RS-232");
// 데이터 수신
string receivedData = SP.ReadLine();
Console.WriteLine($"수신된 데이터: {receivedData}");
d. DataReceived 이벤트 처리
SP.DataReceived += new SerialDataReceivedEventHandler(SP_DataReceived);
private void SP_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
this.Invoke(new Action(() =>
{
string receivedData = SP.ReadExisting();
Console.WriteLine($"수신된 데이터: {receivedData}");
}));
}
8. RS-232와 TTL 비교
항목 | TTL | RS-232 |
전압 범위 | 0V~3.3V 또는 5V | -13V~13V |
시작 비트 | 0V | 양전압 |
정지 비트 | 전압 레벨 (3.3V, 5V 등) | 음전압 |
정리
- RS-232 시리얼 통신은 단순한 하드웨어 구현과 긴 전송 거리가 장점입니다.
- C#의 SerialPort 클래스를 활용해 손쉽게 시리얼 통신을 구현할 수 있습니다.
- 데이터 송수신 과정과 설정(속도, 데이터 크기 등)을 정확히 이해하고 적용해야 안정적인 통신이 가능합니다.
'소프트웨어 개발 및 시스템 프로그래밍' 카테고리의 다른 글
소프트웨어 아키텍처란 (0) | 2024.12.14 |
---|---|
공유기, 허브, 라우터의 차이점 (0) | 2024.12.14 |
DLL과 COM: 윈도우 기반 프로그래밍의 핵심 이해 (1) | 2024.12.13 |
랜 케이블(UTP, FTP, STP): 구조와 종류, 랜선 배열의 이해 (0) | 2024.12.13 |
스레드(Thread) vs 프로세스(Process) (0) | 2024.12.13 |