MSComm 컨트롤은 직렬 포트를 통한 데이터 송신과 수신을 가능하게 하여 통신관련 프로그램을 쉽게 만들 수 있도록 해줍니다.
MSComm 컨트롤을 사용하려면 [구성요소] 대화상자에서 'Microsoft Comm Control 6.0'를 추가해야 합니다. [구성요소] 대화상자에서 선택한 화면은 다음과 같습니다.
▶ 자주 사용하는 속성
속 성 |
설 명 |
CommPort |
통신 포트 번호를 반환하거나 설정한다. 값이 1이면 com1을 의미합니다. |
PortOpen |
통신 포트의 상태를 반환하거나 설정합니다. 또한 포트를 열거나 닫는다. True 포트가 열려 있고 False 포트가 닫혀 있다. |
Input |
수신 버퍼에서 문자를 반환하거나 삭제한다. |
Output |
문자열을 전송 버퍼에 기록한다. |
Break |
True 중단 신호 상태를 설정하고 False 중단 신호 상태를 해제한다. |
CDHolding |
반송파 검출(CD) 회선의 상태를 쿼리하여 반송파가 존재하는 지의 여부를 결정한다. CD는 모뎀에서 모뎀이 온라인인 지를 나타내기 위해 연결된 컴퓨터로 보내는 신호이다. True이면 CD 회선이 높고 False CD 회선이 낮다. |
CommID |
통신 장치를 구분하는 핸들을 반환한다. |
InBufferCount |
수신 버퍼에서 기다리고 있는 문자의 수를 반환한다. |
InBufferSize |
수신 버퍼의 크기를 바이트 단위로 반환하거나 설정한다. |
EOFEnable |
EOFEnable 속성은 입력 도중 MSComm 컨트롤이 EOF를 찾을지 결정한다. EOF 문자를 발견하면 입력이 중지되고 CommEvent 속성이 comEvEOF로 설정되면서 OnComm 이벤트가 발생한다. |
InputLen |
Input 속성이 수신 버퍼에서 읽는 문자의 수를 반환하거나 설정한다. |
InputMode |
Input 속성에서 검색하는 데이터 형식을 반환하거나 설정한다. |
NullDiscard |
널(Null) 문자가 포트에서 수신 버퍼로 전송되는지의 여부를 결정한다. True이면 널 문자가 포트에서 수신 버퍼로 전송되지 않고False이면 널 문자가 포트에서 수신 버퍼로 전송된다. |
ParityReplace |
패리티 오류가 발생했을 때 데이터 스트림에서 유효하지 않은 문자를 대체하는 문자를 반환하거나 설정한다. |
OutBufferCount |
전송 버퍼에서 기다리는 중인 문자의 수를 반환한다. |
OutBufferSize |
전송 버퍼의 크기를 바이트 단위로 반환하거나 설정한다. |
RThreshold |
CommEvent속성을 'comEvReceive'로 설정하고 OnComm 이벤트를 발생시키기 전에 수신할 문자의 개수를 반환하거나 설정한다. |
RTSEnable |
RTS(전송 요청) 회선을 활성화 시킬지를 결정한다. 데이터 전송에 대한 허가를 요청하는 RTS 신호는 컴퓨터에서 모뎀으로 보내진다. True이면 RTS 회선 활성화하고 False이면 RTS 회선 해제한다. |
SThreshold |
CommEvent 속성을 'comEvSend'로 설정하고 OnComm 이벤트를 발생시키기 전에 전송 버퍼에서 허용 가능한 최소 문자 개수를 반환하거나 설정한다. |
Handshaking 속성은 하드웨어 초기 접속 신호 프로토콜을 반환하거나 설정합니다. '0-ComNone'이 초기값으로 되어 있습니다.
마스크 |
설 명 |
0-ComNone |
초기 접속 신호 없음 |
1-ComXOnXOff |
XON/XOFF 초기 접속 신호 |
2-ComRTS |
RTS/CTS (전송 요청/전송 취소) 초기 접속 신호 |
3-ComRTSXOnXOff |
RTS와 XON/XOFF 초기 접속 신호 |
▶ Settings 속성
Settings속성은 전송 속도, 패리티, 데이터 비트, 정지 비트를 문자열로 반환하거나 설정합니다.
MSComm1.Settings = "BBBB,P,D,S" |
여기서 'BBBB'는 전송 속도, 'P'는 패리티, 'D'는 데이터 비트 수 그리고 'S'는 정지 비트 수입니다.
전송속도(BBBB) |
페리티(P) |
데이터비트수(D) |
정지비트(S) |
110 |
E 짝수 |
4 |
1(초기 값) |
300 |
M 표시 |
5 |
1.5 |
600 |
N 없음(초기 값) |
6 |
2 |
1200 |
O 홀수 |
7 |
|
2400 |
S 공간 |
8(초기 값) |
|
9600(초기값) |
|||
14400 |
|||
19200 |
|||
38400 |
|||
56000 |
|||
128000 |
|||
256000 |
사용하는 구성요소는 한 개의 문자열로 처리하고 구분은 콤마(,)를 사용합니다. 사용 예는 다음과 같습니다.
MSComm1.Settings = "9600,N,8,1" |
포트가 열릴 때 Settings속성에 넣는 값이 유효하지 않은 경우, '속성 값이 잘못되었습니다.'라는 에러 메시지가 화면에 나타납니다. 오류번호는 380입니다.
▶ CommEvent 속성
CommEvent 속성은 가장 최근의 통신 이벤트나 오류를 반환합니다. 통신 오류와 통신 이벤트는 다음과 같습니다.
종 류 |
속성 값 |
번 호 |
설 명 |
통신 이벤트 |
ComEvSend |
1 |
전송 버퍼에 송신한계 숫자보다 적은 수의 문자가 있다. |
ComEvReceive |
2 |
수신한계 숫자만큼의 문자 수신. 이 이벤트는 사용자가 Input 속성을 사용하여 데이터를 수신 버퍼에서 제거할 때까지 계속 발생한다. | |
ComEvCTS |
3 |
전송 취소 회선에서 변경한다. | |
ComEvDSR |
4 |
DSR 회선에서 변경. 이 이벤트는 DSR이 1에서 0으로 변경될 때만 발생한다. | |
ComEvCD |
5 |
CD 회선에서 변경 | |
ComEvRing |
6 |
호출음 검출한다. UARTs(보편적 비동기 수신기/송신기)중에 이 이벤트를 지원하지 않는 것도 있다. | |
ComEvEOF |
7 |
수신된 파일 끝 문자(ASCII 문자 26) | |
오류 |
ComBreak |
1001 |
중단 신호가 수신되었다. |
ComCTSTO |
1002 |
전송 취소 시간 초과(CTS)했다. 문자 전송 시도 중 전송 취소 회선이 시스템 지정 시간보다 낮을 때 발생한다. | |
ComDSRTO |
1003 |
데이터 설정 준비(DSR) 시간 초과되었다. 문자 전송 시도 중 DSR 회선이 시스템 지정 시간보다 낮을 때 발생한다. | |
ComEventFrame |
1004 |
하드웨어가 프레이밍 오류를 발생했다. | |
ComEventOverrun |
1006 |
포트 오버런. 다음 문자를 읽기 전에, 이전의 문자를 하드웨어에서 읽지 않아서 문자가 손실되었다. | |
ComEventCDTO |
1007 |
반송파 검출(CD) 시간 초과. 문자 전송 시도 중 CD 회선이 시스템 지정 시간보다 낮다. | |
ComEventRxOver |
1008 |
수신 버퍼에 여유 공간이 없어 초과했다. | |
ComRxParity |
1009 |
패리티 오류이다. | |
ComEventTxFull |
1010 |
문자를 저장하려는 도중에 전송 버퍼가 꽉 찼다. | |
ComEventDCB |
1011 |
포트에 대한 장치 컨트롤 블록(DSB) 검색 중 예기치 못한 오류가 발생했다. |
2차 출처 : http://www.sjsoft.kr/html/hlp_MsComm.htm
원출처 : http://www.kbtech777.com/lecture/prog/vb/03control/commcont/commcont.htm
참고 : 마이크로소프트 MSDN - MSComm Control
'호구지책 > 기타' 카테고리의 다른 글
[윈도우] System Service Exception (0) | 2016.12.19 |
---|---|
[OS] Windows XP USB로 설치 (0) | 2016.11.04 |
[VB6] MSComm delay issue (0) | 2016.10.13 |
[VB6] MSComm 예제 (0) | 2016.10.12 |
[기타] 택배 운송장 조회 URL (0) | 2016.08.04 |
[리눅스] jar 파일 실행시 오류 (0) | 2016.06.09 |
[리눅스] 심볼릭 링크 (0) | 2016.06.07 |
[하드웨어] RAID 설정 (0) | 2016.05.30 |
댓글