1mscomm.vbx 통신 제어 설명
mscomm.vbx 통신 컨트롤은 VB 도구 상자에서 양식 양식에 직접 추가할 수 있으며 통신에 사용할 수 있습니다. 도구 상자에 해당 컨트롤이 없으면 도구의 사용자 정의 컨트롤을 사용하여 Windows 시스템 하위 디렉터리의 mscomm.vbx를 vb 도구 상자에 추가합니다.
1.1 통신 방법
mscomm.vbx에는 다양한 통신 소프트웨어의 개발 및 설계 문제를 처리하고 해결하는 두 가지 방법이 있습니다.
1. 이벤트 중심. 이는 C/C로 Windows 소프트웨어를 작성할 때의 윈도우 콜백 기능과 유사하며 문제를 처리하는 강력한 방법입니다. 실제 작업에서 우리는 통신에서 많은 관련 이벤트를 처리해야 하는 경우가 많습니다. 예를 들어 라인 데이터가 로컬 끝에 도착하거나 CD 라인 및 rts 신호 라인의 상태가 변경되면 해당 이벤트를 사용하여 다음을 수행해야 합니다. 이 컨트롤은 통신 오류 및 기타 문제의 감지 및 처리를 포함하는 oncomm 이벤트가 구현되는 데 사용됩니다. commevent 값은 가장 최근의 통신 이벤트 또는 오류 숫자 코드를 반환합니다. 통신 제어의 자세한 오류 및 이벤트 예는 다음과 같습니다.
mscomm-er-break가 1개의 중단 신호를 받았습니다.
mscomm-er-cdtocd 신호 시간 초과
…
mscomm-ev-cdcd 신호 변경
…
2. 문의방법. commevent의 값을 읽고 발생하는 오류나 이벤트를 처리하는 것은 프로그래머의 책임입니다. 일반적으로 간단한 애플리케이션 디자인에서는 이 접근 방식을 채택할 수 있습니다.
1.2 통신제어의 속성
통신제어를 이용하여 통신프로그램을 구성하는데 있어 가장 중요한 것은 통신제어의 속성을 정확하게 이해하고 설정하는 것입니다. mscomm.vbx는 다음과 같은 통신 제어에 대한 27가지 속성을 제공합니다.
commport: 통신 포트 번호를 설정하거나 반환합니다.
설정: 전송 속도, 패리티, 데이터 비트 및 정지 비트 등 문자열 형식으로 데이터 통신 형식을 설정하거나 반환합니다.
portopen: 통신 포트 상태를 설정하거나 반환합니다(통신 포트 열기 및 닫기 포함).
…
3. 예시
이 프로그램의 응용 배경은 1개의 산업용 컴퓨터(마스터 스테이션)와 32개의 마이크로 컨트롤러(변전소) 간의 통신 문제를 해결하는 dcc95 전기 집진기 자동 모니터링 시스템 소프트웨어입니다. 마스터 스테이션과 변전소 간의 버스 네트워크 구조는 RS-485 통신 표준을 채택하고 질의응답 방식으로 데이터 통신을 수행합니다. 32개의 변전소가 마스터 스테이션에 통신 명령(다운링크 명령)을 전송하므로 마스터 스테이션은 변전소가 보낸 해당 응답 명령(업링크 명령)을 수신한 후 계속해서 다운링크 명령을 보냅니다. 시스템 기능의 요구 사항에 따라 마스터 스테이션은 두 가지 유형의 명령을 보내야 합니다. (1) 타이머에 의해 트리거되고 ls 사이클마다 한 번씩 전송되는 동기 명령. 연산자 해당 명령버튼을 움직여서 발생하며 비주기적으로 전송됩니다. 자동 감시 시스템 소프트웨어는 메인 스테이션에 설치되며, 통신 프로그램도 자동 감시 시스템 소프트웨어의 일부로 메인 스테이션에 설치됩니다.
이 문서에는 통신 프로그램을 디버깅할 때 테스트하기 위한 기본 데모 프로그램 목록만 나열되어 있습니다. 테스트 중에는 한 대의 PC가 메인 스테이션으로 사용되었고, 다른 PC는 32개 변전소의 작업을 시뮬레이션했습니다. 두 대의 PC는 RS232c 직렬 포트 통신을 사용했습니다. 기본 스테이션의 통신 데모 프로그램 형식(형식)에 통신 제어 1개, 타이머 제어 2개 및 명령 버튼 제어 1개를 추가합니다. 통신 제어(mscomm1)는 직렬 포트에 액세스하고 주기적인 타이머 제어를 위해 사용됩니다. periodic)은 매 초마다 각 변전소에 주기적 명령을 보내도록 마스터 스테이션을 제어하는 데 사용됩니다. 명령 버튼 제어(비주기적 명령)와 비주기적 타이머 제어(비주기적)는 비주기적 명령을 보내는 데 사용됩니다. 데이터 전송은 이벤트 중심 통신을 사용합니다. rtreshlod 속성은 다양한 전송 명령에 따라 설정되므로 oncomm 이벤트가 데이터를 수신하게 됩니다.
2.1 양식의 각 컨트롤에 대한 초기화 절차
통신 직렬 포트의 작동 매개변수를 설정하고, 주기 타이머의 인터럽트 간격을 ls로 설정하고, 비주기 타이머의 인터럽트 간격을 0.5s로 설정합니다.
하위 폼-로드()
mscomm1.commport=2'com2 직렬 포트 선택
mscomm1.settings="9600,n8,1"'전송 속도 9600, 패리티 비트 없음, 8 데이터 비트 및 1 정지 비트
mscomm1.inputlen=0'input은 수신 버퍼의 전체 내용을 읽습니다.
mscomm1.inbuffersize=1024'수신 버퍼의 바이트 길이 설정
mscomm1.portopen=true'통신 포트를 엽니다
mscomm1.inbuffercount=0'전송 버퍼 데이터 지우기
mscomm1.outbuffercount=0'수신 버퍼 데이터 지우기
periodic.inteval=100'원격 측정 명령이 ls마다 한 번씩 전송되도록 ls 타이밍 간격을 설정합니다.
non periodic.inteval=500'시간 간격을 0.5초로 설정하고 명령 버튼 활성화 여부를 쿼리하여 주기적 명령 전송 여부를 결정합니다.
command-PRessed=false'명령 버튼이 비활성화되었습니다.
while-주기적=false'주기적인 명령 데이터 전송이 아직 시작되지 않았습니다
while-non periodic=false'비주기적 명령 데이터 전송이 아직 시작되지 않았습니다
엔드 서브
2.2 비주기적 명령 전송 프로그램
명령 버튼 상태와 주기 명령 데이터 전송 상태에 따라 비주기 타이머의 인터럽트 프로그램에서 비주기 명령이 전송됩니다.
비주기적인 명령 클릭()
command-pressed=true'명령 버튼 활성화
엔드 서브
비주기적인 타이머()
ifduring-주기=true또는명령-눌림=false
thenexitsub' 주기 명령 데이터 전송이 종료되지 않았거나 명령 버튼이 활성화된 경우 비주기 명령을 보내는 프로그램을 종료하세요.
command-pressed=false'Command 버튼이 비활성 상태로 돌아갑니다.
Callsenddata(비주기적 명령)'비주기적 명령 보내기
mscomm1.rthreshold=r-nonperiodic-byte'비주기적 명령을 보낸 후 마스터 스테이션이 설정된 바이트 수를 수신한 후 oncomm 이벤트를 트리거하도록 rthreshold 속성을 설정합니다.
엔드 서브
2.3주기적인 타이머 프로그램
주기적 타이머의 인터럽트 프로그램에서 주기적 명령을 보냅니다.
하위 주기 타이머()
ifduring-non periodic=truethenexitsub'비주기 명령 데이터 전송이 아직 종료되지 않은 경우 비주기 명령 전송 프로그램을 종료합니다.
while-periodic=true'는 주기적인 명령 데이터 전송 상태를 진행 중으로 설정합니다.
Callsenddata(주기적 명령)'주기적 명령 보내기
mscomm1.rthreshold=r- periodic-byte'주기적인 명령을 보낸 후 마스터 스테이션은 r-remot-edata-byte 바이트를 수신하여 oncomm 이벤트를 트리거할 수 있습니다.
엔드 서브
2.4온컴 이벤트 프로그램
rthreshold 속성 설정 값에 따라 해당 바이트 문자가 수신 버퍼에 수신되면 oncomm 이벤트가 트리거되고 인터럽트 프로그램에서 데이터가 수신됩니다.
submscomm1-oncomm()
selectcasemscomm1.commevent'여기에 다양한 오류나 이벤트를 처리하는 코드를 삽입할 수 있습니다.
Casemscomm-ev-수신
receivestring$=mscomm1.input
selectcasemscomm1.rthreshold
Caser-Periodic-Byte'주기 명령의 응답 데이터
calldisposedata(주기적 명령)'수신된 데이터를 처리합니다.
while periodic=false'는 주기적인 명령 데이터 전송 상태를 종료로 설정합니다.
Caser-비주기적-바이트'비주기적 명령 응답 데이터
calldisposedata(비주기적 명령)'수신된 데이터를 처리합니다.
while-non periodic=false'는 비주기적 명령 데이터 전송 상태를 종료로 설정합니다.
최종 선택
최종 선택
엔드 서브
vb 버전의 지속적인 업그레이드를 통해 vb는 가장 빠르고 사용하기 쉬우며 강력한 응용 프로그램 개발 도구가 될 것이며 기업 수준의 클라이언트/서버 응용 프로그램 소프트웨어 개발을 위한 첫 번째 선택 도구 중 하나가 될 것입니다. ->