VC6.0 MSComm 컨트롤 사용
MSComm 컨트롤의 속성
(친숙해야 할 몇 가지 -commport: 통신 포트 번호를 설정하고 반환합니다. 설정: 데이터 전송 속도, 패리티, 데이터 비트 및 정지 비트를 문자열로 설정하고 반환합니다. PortOpen: 통신 포트 상태를 설정 및 반환하거나 포트를 열고 닫을 수 있습니다. 입력: 수신 버퍼에서 문자를 반환하고 삭제합니다. 출력: 전송 버퍼로 문자열 설정)
1) 통신 속성
Void SetCommPort (짧은 nnew value); Shortgetcommport ();
이 속성은 Windows 가 외부 세계와 통신하는 데 사용하는 연결의 직렬 포트 번호를 설정하고 반환합니다. 디자인 시 nNewValue 는 1 에서 16 사이의 임의의 숫자로 설정할 수 있습니다 (기본값은 1). 그러나 PortOpen 속성을 사용하여 존재하지 않는 포트를 열면 MSComm 컨트롤에서 오류 68 (잘못된 장치) 이 발생합니다.
참고 포트를 열기 전에 CommPort 속성을 설정해야 합니다.
2) 등록 정보를 설정합니다
Void 설정 (lpctstr lpsz new value); Stringgetsettings ();
이 속성은 데이터 전송 속도, 패리티, 데이터 비트 및 정지 비트 매개 변수를 설정하고 반환하는 데 사용됩니다. 포트가 열려 있을 때 값이 올바르지 않으면 MSComm 컨트롤에서 오류 380 (잘못된 속성 값) 을 생성합니다. 여기서 lpszNewValue 는 다음과 같은 형식으로 구성된 네 가지 설정으로 구성된 문자열로 표시됩니다.
BBBB, 박사, 석사
BBBB 는 데이터 전송 속도, P 는 패리티, D 는 데이터 비트, S 는 정지 비트입니다. Value 의 기본값은' 9600, n, 8, 1' 이고, 데이터 전송 속도의 유효한 값은110,300,600, 입니다
패리티 값은 다음 표에 설정된 모든 값이 될 수 있습니다.
점 설명 설정
E- 짝수 검사 (짝수)
M 레이블 검사 (표시)
검사 없음 (없음)
O 홀수 패리티 (홀수)
■ 공간 검사 (공간)
데이터 비트의 수는 4, 5, 6, 7, 8 이 될 수 있습니다.
중지 자릿수는 1, 1.5 및 2 일 수 있습니다.
참고 통신 접속은 통신 당사자의 설정 속성 값이 동일한 경우에만 적용됩니다.
3) 핸드쉐이킹 속성
이 속성은 PC 와 통신 장치 사이에 설정된 트래픽을 제어하는 내부 프로토콜인 하드웨어 핸드쉐이킹 프로토콜을 설정하거나 반환합니다. 속성 값은 다음 테이블 중 하나로 설정할 수 있습니다.
값 설명 설정
ComNone0 기본값, 핸드쉐이킹 프로토콜 없음.
Comxonxoff 1x0n/xoff 핸드쉐이킹
ComRTS 2RTS/CTS 핸드쉐이킹
ComRtsXOnXOff3 RTS/CTS 와 XON/XOFF 는 악수를 할 수 있습니다.
4) 임계값 속성
Void SetRThreshold (짧은 nnew value); Shortgetrthreshold ();
MSComm 컨트롤이 CommEvent 속성을 comEvReceive 로 설정하고 OnComm 을 생성하기 전에 RThreshold 속성에 의해 설정되고 반환되는 문자 수입니다. 여기서 nNewValue 는 OnComm 이벤트가 생성되기 전에 수신할 문자 수를 설명하는 짧은 매개변수입니다.
RThreshold 속성을 0 (기본값) 으로 설정하면 문자가 수신될 때 OnComm 이벤트가 생성되지 않습니다. 그렇지 않으면 수신 버퍼의 바이트 수가 이 값에 도달하거나 초과할 때 OnComm 이벤트가 생성되는 임계값입니다. 예를 들어 RThreshold 가 1 으로 설정된 경우 수신 버퍼에서 수신된 각 문자로 인해 MSComm 컨트롤이 OnComm 이벤트를 생성합니다.
5)CTSHolding 등록 정보
Void setctsholding (bool bne wvalue); Boolgetctsholding ();
속성 설정 값은 다음 표에 나와 있습니다.
점 기능 설명 설정
트루cts 라인이 높아요.
실제 cts 선이 낮습니다.
이 속성은 CTS 회선 상태를 쿼리하여 데이터를 전송할 수 있는지 여부를 결정합니다. CTS 는 모뎀이 연결된 컴퓨터에 보내는 신호로 전송할 수 있음을 나타냅니다. 이 속성은 디자인 타임에 유효하지 않으며 런타임 시 읽기 전용입니다.
CTS 선이 낮은 경우 (CTSHolding =
FALSE) 를 입력하고 시간 초과가 발생하면 MSComm 컨트롤은 CommEvent 속성을 comEventCTSTO 로 설정합니다
시간 초과) 를 입력하고 OnComm 이벤트를 생성합니다. CTS 회선은 RTS/CTS 하드웨어 핸드쉐이킹에 사용됩니다. CTS 회선의 상태를 결정해야 하는 경우 CTSHolding 속성은 수동 쿼리 방법을 제공합니다.
6) 임계값 속성
Void SetSThreshold (짧은 nnew value); Shortgetsthreshold ();
CommEvent 속성을 comEvSend 로 설정하고 OnComm 이벤트를 생성하기 전에 MSComm 컨트롤은 전송 버퍼에 허용되는 최소 문자 수를 설정하고 반환합니다. 여기서 nNewValue 는 OnComm 이벤트가 생성되기 전에 전송 버퍼의 최소 문자 수를 나타내는 짧은 데이터입니다.
Sthreshold 속성을 0 (기본값) 으로 설정하면 데이터 전송 이벤트가 OnComm 이벤트를 생성하지 않습니다. Sthreshold 속성을 0 으로 설정하면 전송 버퍼가 완전히 비어 있을 때 MSComm 컨트롤에서 OnComm 이벤트가 생성됩니다. 전송 버퍼의 문자 수가 값보다 작으면 CommEvent 속성이 comEvSend 로 설정되고 OnComm 이벤트가 생성됩니다. 문자 수가 임계값을 초과하면 comEvSend 이벤트는 한 번만 활성화됩니다. 예를 들어 Sthreshold 가 5 인 경우 comEvSend 는 출력 대기열의 문자 수가 5 에서 4 로 줄어든 경우에만 발생합니다. 출력 대기열의 문자 수가 Sthreshold 를 초과하지 않으면 comEvSend 이벤트가 발생하지 않습니다.
7) 스키마 속성을 입력합니다
Void setinputmode (long nnew value); Long getinputmode ();
액세스 속성은 전송 된 데이터의 유형을 설정하거나 반환하는 데 사용됩니다. 해당 값과 기본 의미는 다음 표에 나와 있습니다.
값 설명 설정
ComInputModeText (기본값) 0 은 Input 속성을 통해 데이터를 텍스트로 검색합니다.
ComInputModeBinary 1 Input 속성을 통해 이진 형식의 데이터 검색.
8) 속성을 입력합니다
Void SetInputLen (짧은 nnew value); Shortgetinputlen ();
이 속성은 입력 속성이 수신 버퍼에서 읽은 문자 수를 설정하고 반환하는 데 사용됩니다. NNewValue 는 입력 속성이 수신 버퍼에서 읽은 문자 수를 설명하는 짧은 값입니다.
InputLen 속성의 기본값은 0 입니다. InputLen 이 0 으로 설정된 경우 Input 을 사용하면 MSComm 컨트롤이 수신 버퍼의 모든 내용을 읽습니다. 수신 버퍼의 입력 문자가 유효하지 않으면 Input 속성은 길이가 0 인 문자열 ("") 을 반환합니다. Input 을 사용하기 전에 사용자는 InBufferCount 속성을 검사하여 버퍼에 필요한 수의 문자가 있는지 확인할 수 있습니다. 이 속성은 출력 형식이 고정 길이 데이터인 시스템에서 데이터를 읽을 때 유용합니다.
9)InBuffersize 속성
Void SetBufferSize (짧은 nnew value); Shortgetinbuffersize ();
InBuffersize 속성은 입력 버퍼의 크기를 설정하거나 반환합니다. 기본값은 1024 바이트입니다.
10)InBufferCount 속성
Void SetInBufferCount (짧은 nnewvalue); 짧은
Getinbuffercount ();
InBufferCount 속성은 입력 버퍼에서 읽기 대기 중인 바이트 수를 반환하는 데 사용되며 속성 값을 0 으로 설정하여 수신 버퍼를 지웁니다.
1 1) 입력 속성
Variantgetinput ();
Input 속성은 수신 버퍼에서 문자열을 제거하고 버퍼에서 수신된 데이터를 변수로 읽도록 지시합니다. 속성 값은 VARIAN 변수입니다. 포트가 열려 있지 않고 런타임 시 읽기 전용인 경우에는 이 속성을 사용할 수 없습니다.
주: InputMode 속성 값이
0 (텍스트 모드) 이면 변수에 문자열 데이터가 포함됩니다. InputMode 속성 값이 1 (이진 모드) 이면 변수에 바이트 배열 데이터가 포함됩니다.
12) 포트 열기 속성
Void set portopen (bool bnewvalue); Boolgetportopen ();
PortOpen 속성은 포트를 열거나 닫는 데 사용됩니다. BNewValue 가 TRUE 로 설정되면 포트를 열 수 있습니다. FALSE 로 설정하면 포트를 닫을 수 있습니다.
일반적으로 포트는 프로그램 시작 시 열리고 프로그램 종료 시 닫힙니다. MSComm 컨트롤은 응용 프로그램이 종료될 때 문자열을 자동으로 끕니다.
입. 포트를 열기 전에 CommPort 속성을 올바른 포트 번호로 조정해야 합니다. 또한 사용자의 직렬 장치는 설정 속성의 설정을 지원해야 합니다. 하드웨어 장치가 설정 속성의 일부 설정을 지원하지 않으면 하드웨어가 제대로 작동하지 않을 수 있습니다.
13)OutBuffersize 속성
Void SetOutBufferSize (짧은 nnewvalue);
OutBuffersize 속성은 전송 버퍼의 크기를 설정하거나 반환합니다. 이 값은 전송 버퍼의 바이트 수를 나타내는 정수 표현식입니다. 기본값은 5 12 바이트입니다. 전송 버퍼 설정이 클수록 응용 프로그램에서 사용할 수 있는 메모리가 줄어듭니다. 그러나 전송 버퍼가 너무 작으면 핸드쉐이킹 프로토콜을 사용하지 않는 한 버퍼가 넘칩니다.
14) 외부 버퍼 카운터 속성
Void SetOutBufferSize (짧은 nnewvalue); 짧은
Getoutbuffersize ();
OutBufferCounter 속성은 전송 버퍼에서 전송 대기 중인 바이트 수를 반환하는 데 사용됩니다. 이 속성을 0 으로 설정하면 전송 버퍼를 비울 수 있습니다.
15) 출력 속성
잘못된 출력 (상수 변수& new value);
Output 속성은 전송 버퍼에 데이터 스트림을 쓰는 데 사용됩니다. 이 속성은 변수입니다. 포트가 열려 있지 않으면 이 속성을 사용할 수 없으며 런타임 시에만 기록됩니다.
참고: Output 속성은 텍스트 데이터나 이진 데이터를 전송할 수 있습니다. 텍스트 데이터를 전송할 때 문자 유형은 다음과 같아야 합니다
데이터를 변수에 넣습니다. 이진 데이터 (즉, 바이트별) 를 전송할 때 바이트 데이터는 변수 변수에 배치됩니다. 일반적으로 ANSI 문자열을 응용 프로그램에 보내는 경우 텍스트로 보낼 수 있습니다. 데이터에 포함된 제어 문자, 빈 문자 등이 포함된 경우 , 바이너리 형태로 전달되어야 합니다.
16)CommEvent 속성
Shortgetcommevent ();
통신 중 오류나 이벤트가 발생하면 OnComm 이벤트가 발생하고 속성 값이 변경됩니다. CommEvent 의 속성 값은 오류 또는 이벤트 유형을 반영하며 통신 설계에서 동일한 작업을 수행할 수 있습니다. 포트가 열려 있지 않고 런타임 시 읽기 전용인 경우에는 이 속성을 사용할 수 없습니다. 통신 오류 및 통신 이벤트에 대한 설정은 다음 두 표에 나와 있습니다.
통신 오류 설정
값 설명 설정
Comeventbreak1001인터럽트 신호를 받았습니다.
ComEventCTSTO 1002CTS 시간 초과
ComEventDSRTO 1003DSR 시간 초과
ComEventFrame 1004 프레임 오류. 하드웨어에서 프레임 오류를 감지하고 양 당사자가 설정한 형식이 일치하지 않을 때 발생합니다.
ComEventOverrun 1006 포트 과속. 한 문자는 다음 문자가 도착하기 전에 하드웨어에서 읽지 않으면 손실됩니다.
ComEventCDTO 1007 데이터 감지 시간 초과.
Comeventrcover 1008 수신 버퍼 오버플로
ComEventRxParity 1009 패리티 오류
Comeventtxfull1010 전송 버퍼 오버플로는 출력 버퍼가 가득 차서 문자를 버퍼로 더 이상 출력할 수 없음을 나타냅니다.
Comeventdcb1011포트 및 dcb (device control block) 를 검색하는 동안 예기치 않은 오류가 발생했습니다.
통신 이벤트 설정
값 설명 설정
ComEvSend 1 이벤트 보내기. 전송 버퍼의 내용이 SThreshold 에서 지정한 값보다 작습니다.
ComEvReceive2 수신 이벤트. 수신 버퍼의 문자 수가 RThreshold 값에 도달하면 버퍼의 데이터가 삭제될 때까지 이 이벤트가 계속 발생합니다. 이 이벤트는 데이터 수신 프로세스를 작성하는 데 사용할 수 있습니다.
ComEvCTS3CTS 행 변경
ComEvDSR4DSR 회선 변경
ComEvCD5CD 줄 변경
전보 6 벨소리 감지
ComEvEOF7 파일이 종료되었습니다. 파일 끝 (ASCII 코드 26) 문자가 수신된 데이터에 나타납니다.
17)DTREnable 속성
Void setdtrenable (bool bne wvalue); Boolgetdtrenable ();
DTREnable 속성은 통신 중 DTR 선이 유효한지 여부를 결정합니다. DTR 은 컴퓨터가 모뎀에 보내는 신호로, 컴퓨터가 데이터 전송을 기다리고 있음을 나타냅니다.
18)RTSEnable 속성
Void setrtsenable (bool bnewvalue); Boolgetrtsenable ();
RTSEnable 등록 정보는 RTS 행이 유효한지 여부를 결정합니다. 일반적으로 컴퓨터는 연결된 모뎀에 RTS 신호를 보내 데이터 전송 허가를 요청합니다.
19) 방어 속성
Void seteofenable (bool bnewvalue); Boolgeteofenable ();
EOFEnable 속성은 MSComm 컨트롤이 가져오는 동안 EOF 문자를 찾을지 여부를 결정합니다. EOF 문자를 찾으면 입력이 중지되고 OnComm 이벤트가 활성화됩니다. 이때 CommEvent 속성은 comEvEOF 로 설정됩니다. 여기서 bNewValue 는 EOF 문자를 찾을 때 OnComm 이벤트를 활성화할지 여부를 결정하는 부울 표현식입니다. BNewValue 가 TRUE 로 설정되면 EOF 문자가 발견되면 OnComm 이벤트가 활성화됩니다. 그렇지 않으면 값이 로 설정됩니다.
FALSE (기본값) EOF 문자가 있을 때 OnComm 이벤트가 활성화되지 않습니다.
주의: EOFEnable 속성이 FALSE 로 설정된 경우 OnComm 컨트롤은 입력 스트림에서 EOF 문자를 찾지 않습니다.
20)CDHolding 속성
Void setcd holding (bool bne wvalue); Boolgetcdholding ();
CD 회선의 상태를 조회하여 현재 전송이 있는지 확인합니다. CD 는 모뎀에서 연결된 컴퓨터로 전송되는 신호로 모뎀이 온라인 상태임을 나타냅니다. 이 속성은 디자인 타임에 유효하지 않으며 런타임 시 읽기 전용입니다. 이 속성의 설정은 bNewValue 가 true 이면 CD 선이 높다는 것입니다. BNewValue 가 false 이면 CD 라인이 낮습니다. CD 동작이 고수준 (CDHolding=TRUE) 이고 시간이 초과되면 MSComm 컨트롤은 CommEvent 속성을 comEventCDTO(CD 시간 초과 오류) 로 설정하고 OnComm 이벤트를 생성합니다.
참고: 게시판과 같은 숙주 응용 프로그램에서 손실된 전송을 캡처하는 것이 특히 중요합니다. 호출자는 언제든지 전화를 끊을 수 있기 때문입니다 (전송 포기). CD 는 수신이라고도 합니다.
라인 신호 검출 (RLSD).
2 1)DSRHolding 등록 정보
Void setdsrholding (bool bne wvalue); Boolgetdsrholding ();
DSR 선의 상태를 확인합니다. DSR 신호는 모뎀에서 연결된 컴퓨터로 전송되어 실행할 준비가 되었음을 나타냅니다. 이 속성은 디자인 타임에 유효하지 않으며 런타임 시 읽기 전용입니다. DSRHolding 등록 정보에서 TRUE 를 반환하면 DSR 선이 높고 FALSE 를 반환하면 DSR 선이 낮습니다. DSR 선이 고수준 (DSRHolding=TRUE) 이고 시간이 초과되면 MSComm 컨트롤은 CommEvent 속성을 comEventDSRTO 로 설정하고 OnComm 이벤트를 생성합니다. DTE (데이터)
이 속성은 터미널 장치) 기계가 DSR/DTR 핸드쉐이킹 루틴을 작성할 때 유용합니다.