직렬 통신(RS-232) 김성환 기계설계 자동화 공학부 비주얼베이직의 기초사항을 공부합니다.
목 표 목표 : PC의 주요통신 방식 중 직렬통신에 대하여 살펴보고 VB에서 프로그래밍하는 방법을 학습한다. 주요내용 1. 주요통신 방법 2. 직렬통신의 주요특징 3. 직렬통신 관련 고려사항 4. VB에서의 프로그래밍 방법
직렬과 병렬 통신방법 병렬전송(Parallel) 직렬전송(Serial) 직렬통신의 장단점 단방향 : Centronics 양방향: PCI BUS, SCSI, GP-IB IDE, PCMCIA 직렬전송(Serial) 비동기(Asynchronous) : Start-bit/ Stop bit 이용 동기 (Synchronous) : SYN, STX, DATA…, ETX 직렬통신의 장단점 전선수가 적어서 염가이고 설치 간편 장거리 전송 가능. (전압을 올려도 선간 간섭에 강하기 때문) 단점 전송속도가 느리다. 개선방안: USB, Ethernet, IEEE1394 등 고속 1 일반적으로 디지털 데이터 전송방법은 병렬과 직렬 전송방법이 있다. 병렬은 디지털 데이터 한 word가 워드의 비트 수 만큼의 전선으로 나란하게 출력된다. 병렬전송은 데이터가 한 개의 전선으로 직렬로 줄줄이 나가는 것이다. 그러므로 이 경우는 어디서부터 데이터 워드의 시작인지를 규정해야만 한다. 이를 위하여 두 가지의 전송방법이 있는데 이것이 바로 동기/비동기이다.
RS-232 통신 1 1 RS-232C 의 전기적 특징 수신 송신 RS-232 Cross Cable 전압 범위 불평형 전송 15V 5 2.5 송신 수신 -5 -2.5 1 1 -15V RS-232는 –5 ~ -15 는 1 이고 +5 ~ +15는 0으로 디지털데이터를 전송하고 수신할 때는 -2.5 이하 1 +2.5 이상을 0으로 잡아서 전로의 전압강하의 영향을 조금이라도 줄이고자 했다. Rx, Tx 단 모두 불평형 전송이라 그림 과 같이 그라운드의 노이즈 성분과 라인의 잡음성분이 서로 달라 노이즈에 민감한 문제점이 있다. Rx Tx 1 1 RS-232 Cross Cable 9 9
RS-232 파형 Start bit: 시작을 표시 Stop bit: 프레임의 끝을 표시 Parity bit: 데이터 내의 1의 갯수가 홀수인지 짝수인지 표시 Data bits: 데이터의 비트수 Baud Rate: 1초에 들어가는 비트수 (bps) 비트폭=1/ Baud Rate sec I love... I love... l o v e 일반적으로 디지털 데이터 전송방법은 병렬과 직렬 전송방법이 있다. 병렬은 디지털 데이터 한 word가 워드의 비트 수 만큼의 전선으로 나란하게 출력된다. 병렬전송은 데이터가 한 개의 전선으로 직렬로 줄줄이 나가는 것이다. 그러므로 이 경우는 어디서부터 데이터 워드의 시작인지를 규정해야만 한다. 이를 위하여 두 가지의 전송방법이 있는데 이것이 바로 동기/비동기이다. Sart 1 2 3 4 5 6 7 P Stop 시간 1
RS-232 실용회로 5Volt 전원만가지고 RS-232C 의 +/-15로 구동시켜주는 회로 Maxim사의 MAX232A Charge pump type 앞에서 설명한 것과 같은 RS-232의 전압레벨을 만족하는 드라이버들이 많이 나와 있는데 회로도는 Maxim사의 MAX232A칩을 이용한 회로이다. PC_TX, PC_RX 단이 TTL 레벨이고 TXD, RXD 단이 RS-232C단이므로 착오 없기를 바란다.
VB의 직렬통신 방법 요약 Control: Microsoft Comm. Control 이용. 설정: Settings, InbufferCount의 속성 이용. 송신 수신: Input, Output 속성 이용하여 Event: On_Comm Event 제공 (Interrupt형식) “Polling으로도 가능” 기타: RThreshold, InputLength 등 속성 학습 항상 문자로 전송 (8Bit data 전송 별도 고려) 숫자 1236 을 전송하는 방법 3가지 4바이트 이용 : [“1”] – [“2”] – [“3”] – [“6”] 4바이트 이용 : [“0”] – [“4”] – [“D”] – [“4”] 2바이트 이용 : [4] – [212]
프로그래밍 방법 구성요소에서 MS Comm Control 추가 Form Load Event에서 설정
주요 설정 Control 의 이름을 MSC로 하자 COM1 포트를 사용함. MSC.CommPort = 1 Baud Rate 9600, No Parity, 8bit, 1 Stop bit MSC.Settings = “9600,n,8,1“ 입력 시 1문자씩 입력 MSC.InputLen = 1 한 개의 데이터가 들어와도 OnComm 이벤트 발생 MSC.RThreshold = 1 이제 포트를 연다. MSC.PortOpen = True
송신 송신하고자 하는 문자는 그대로 송신하고자 하는 숫자는 Chr함수 이용 MSC.Output =“H” MSC.Output =“ABC” 송신하고자 하는 숫자는 Chr함수 이용 MSC.Output =Chr(13) MSC.Output =Chr(13) & Chr(1)
수신: Polling 1 문자 수신 여러 문자 수신 Do Until MSC.InBufferCount>0 Loop DoEvents Loop A= MSC.Input ‘ n= Asc(A) 여러 문자 수신 Do Until MSC.InBufferCount>4 A= MSC.Input ‘ InputLength=5 일때
수신: Event 1 문자 수신 여러 문자 수신 Private Sub MSC_OnComm() End Sub if MSC.InBufferCount>0 Then A= MSC.Input Text1=A End if End Sub 여러 문자 수신 if MSC.InBufferCount>4 Then A= MSC.Input ‘ InputLength=5 일때