중국시가넷 - 메시지 플랫폼 - QT 에서 직렬 데이터를 읽는 방법

QT 에서 직렬 데이터를 읽는 방법

먼저 파일을 다운로드합니다

파일 다운로드 주소:

제가 스크린에 올린 것도 다운로드 할 수 있습니다.

둘째, 문서 내용 소개

1. 다운로드한 파일은 qextserialport-1.2 win-alpha 이며, 압축을 풀면 다음과 같습니다.

(명확한 큰 그림을 보려면 그림을 클릭하십시오)

다음은 별도로 설명합니다.

(1)doc 폴더의 파일 내용은 QextSerialPort 클래스 및 QextBaseType 에 대한 간단한 설명이며 메모장 프로그램을 사용하여 열 수 있습니다.

(2) 샘플 폴더에는 몇 가지 샘플 프로그램이 있습니다. 소스 코드를 볼 수 있지만, 실행하고 싶다면 많은 문제가 있을 수 있습니다.

(3)html 폴더는 QextSerialPort 클래스의 사용 문서입니다.

④ 나머지 서류가 뒤 따른다. 여기서 qextserialenumerator.cpp 및 qextserialenumerator.h 파일이 지정됩니다.

QextSerialEnumerator 클래스는 플랫폼에서 사용 가능한 직렬 포트 정보를 가져오는 데 사용됩니다. 하지만 이 클래스는 별로 유용하지도 않고, 우리의 중점도 아니기 때문에 아래에 있습니다.

나는 더 이상 소개하지 않을 것이다.

(5)QextSerialBase. CPP 및 qextserialbase.h 파일은 qextserialbase 를 정의합니다.

클래스, win_qextserialport.cpp 및 win_qextserialport.h 파일은 win_qextserialport 를 정의합니다.

클래스에서 posix_qextserialport.cpp 및 posix_qextserialport.h 파일은 하나를 정의합니다.

Posix_QextSerialPort 클래스, qextserialport.cpp 및 qextserialport.h 파일은 하나를 정의합니다.

QextSerialPort 클래스. 이 QextSerialPort 클래스는 위에서 언급 한 클래스입니다. 이 모든 클래스의 하위 클래스이자 가장 높은 추상화입니다. 플랫폼 기능을 차단합니다.

따라서 모든 플랫폼에서 사용할 수 있습니다.

2. 몇 가지 수업 소개.

다음은 이러한 클래스에 대한 차트입니다.

QIODevice 클래스에서 상속된 것을 볼 수 있으므로 이 클래스의 일부 함수를 직접 사용할 수도 있습니다. 그림에는 QextBaseType 클래스도 있는데, 실제로는 하나의 태그일 뿐이다.

구체적인 내용은 거의 없습니다. Win_QextSerialPort 또는 Posix_QextSerialPort 를 나타내는 데 사용됩니다.

QextSerialPort 클래스는 조건부 컴파일을 사용하므로 QextSerialPort 클래스는 에서 사용할 수 있습니다.

Win_QextSerialPort 클래스는 Posix_QextSerialPort 클래스에서 상속될 수도 있으므로 QextBaseType 으로 표시됩니다. 지금 이 순간

Qextserialport.h 파일에서 볼 수 있습니다. 또한 QextSerialPort 클래스는 실제로 프로그램 간 플랫폼 컴파일을 용이하게 하기 위해 다양한 용도로 사용될 수 있습니다

플랫폼에서는 조건에 따라 서로 다른 클래스를 컴파일하고 상속합니다. 그래서 추상적인 것일 뿐, 몇 개의 구성자를 제공하며, 구체적인 내용은 없다. Qextserialport.h 파일에서 다음을 수행합니다.

조건부 컴파일은 다음과 같습니다.

#ifdef_TTY_POSIX_

# include "POSIX _ qextserialport.h"

# qextbasetypeposix _ qextserialport 정의

# 그렇지 않으면

# "win_qextserialport.h" 포함

# QextBaseTypeWin_QextSerialPort 정의

#endif

따라서 실제로 이 클래스를 사용할 필요가 없습니다. Win_QextSerialPort 또는 Posix_QextSerialPort 만 사용하면 됩니다. 물론, 만약

이 클래스를 사용하여 동일한 소스 프로그램을 구현하려는 경우 Windows 및 Linux 에서 직접 컴파일하고 실행할 수 있으므로 Linux 아래의 여기에 추가해야 합니다.

#define _TTY_POSIX_. 프로그램을 더 명확하게 하기 위해서, 우리는 여기서 이 클래스를 사용하지 않기 때문에, 우리는 여기서 그것을 소개하지 않는다.

QextSerialBase 클래스는 QIODevice 클래스에서 상속되며, qextserialbase 클래스는 직렬 포트를 조작하는 데 필요한 변수와 함수를 제공합니다

Win_QextSerialPort 및 Posix_QextSerialPort 는 QextSerialBase 에서 상속됩니다.

클래스, Win_QextSerialPort 클래스는 Windows 플랫폼에서 직렬 포트를 조작하는 일부 기능을 추가하고 Posix_QextSerialPort 클래스는 추가합니다.

리눅스 플랫폼에서 직렬 포트를 조작하는 일부 기능. 따라서 Windows 에서는 Win_QextSerialPort 클래스를 사용하고 Linux 에서는 이를 사용합니다.

Posix_QextSerialPort 클래스.

3.QextSerialBase 클래스에는 열거 변수 QueryMode 도 포함됩니다.

Polling 과 EventDriven 의 두 가지 값이 있습니다.

。 QueryMode 는 직렬 포트를 읽는 방식이며 쿼리 모드, 폴링 모드 및 이벤트 중심 모드라고 합니다.

이벤트 중심 방법은 이벤트를 사용하여 직렬 포트 읽기를 처리하는 것입니다. 데이터가 도착하면 readyRead () 신호가 전송되며 직렬 포트 데이터를 읽기 위해 연결할 수 있습니다. 이벤트 중심 모드에서 직렬 포트의 읽기 및 쓰기는 비동기적이며 읽기 및 쓰기 함수를 호출하면 즉시 반환되며 호출 스레드가 고정되지 않습니다.

그러나 폴링 방법은 다릅니다. 읽기 및 쓰기 기능은 동시에 실행되므로 신호가 이 모드에서 작동하지 않으며 일부 기능은 구현되지 않습니다. 그러나, 이 모델의 지출은 매우 적다. 직렬 데이터를 읽으려면 자체 타이머를 설정해야 합니다.

위 두 모드는 Windows 에서는 지원되지만 Linux 에서는 폴링 모드만 지원됩니다.

셋째, 요약.

마지막으로, 이 클래스를 사용하여 Qt 에서 직렬 프로그램을 작성하는데, 플랫폼에 따라 네 개의 파일만 사용하면 됩니다.