QSerialPort Class

직렬 포트에 액세스하는 기능을 제공합니다. 더 보기...

Header: #include <QSerialPort>
CMake: find_package(Qt6 REQUIRED COMPONENTS SerialPort)
target_link_libraries(mytarget PRIVATE Qt6::SerialPort)
qmake: QT += serialport
상속합니다: QIODevice

참고: 이 클래스의 모든 함수는 재인용됩니다.

공용 유형

enum BaudRate { Baud1200, Baud2400, Baud4800, Baud9600, Baud19200, …, Baud115200 }
enum DataBits { Data5, Data6, Data7, Data8 }
enum Direction { Input, Output, AllDirections }
flags Directions
enum FlowControl { NoFlowControl, HardwareControl, SoftwareControl }
enum Parity { NoParity, EvenParity, OddParity, SpaceParity, MarkParity }
enum PinoutSignal { NoSignal, DataTerminalReadySignal, DataCarrierDetectSignal, DataSetReadySignal, RingIndicatorSignal, …, SecondaryReceivedDataSignal }
flags PinoutSignals
enum SerialPortError { NoError, DeviceNotFoundError, PermissionError, OpenError, NotOpenError, …, UnknownError }
enum StopBits { OneStop, OneAndHalfStop, TwoStop }

속성

공용 함수

QSerialPort(QObject *parent = nullptr)
QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr)
QSerialPort(const QString &name, QObject *parent = nullptr)
virtual ~QSerialPort()
qint32 baudRate(QSerialPort::Directions directions = AllDirections) const
QBindable<QSerialPort::DataBits> bindableDataBits()
QBindable<QSerialPort::SerialPortError> bindableError() const
QBindable<QSerialPort::FlowControl> bindableFlowControl()
QBindable<bool> bindableIsBreakEnabled()
QBindable<QSerialPort::Parity> bindableParity()
QBindable<QSerialPort::StopBits> bindableStopBits()
bool clear(QSerialPort::Directions directions = AllDirections)
void clearError()
QSerialPort::DataBits dataBits() const
QSerialPort::SerialPortError error() const
QSerialPort::FlowControl flowControl() const
bool flush()
QSerialPort::Handle handle() const
bool isBreakEnabled() const
bool isDataTerminalReady()
bool isRequestToSend()
QSerialPort::Parity parity() const
QSerialPort::PinoutSignals pinoutSignals()
QString portName() const
qint64 readBufferSize() const
bool setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections)
bool setBreakEnabled(bool set = true)
bool setDataBits(QSerialPort::DataBits dataBits)
bool setDataTerminalReady(bool set)
bool setFlowControl(QSerialPort::FlowControl flowControl)
bool setParity(QSerialPort::Parity parity)
void setPort(const QSerialPortInfo &serialPortInfo)
void setPortName(const QString &name)
void setReadBufferSize(qint64 size)
bool setRequestToSend(bool set)
bool setStopBits(QSerialPort::StopBits stopBits)
QSerialPort::StopBits stopBits() const

재구현된 공용 함수

virtual qint64 bytesAvailable() const override
virtual qint64 bytesToWrite() const override
virtual bool canReadLine() const override
virtual void close() override
virtual bool isSequential() const override
virtual bool open(QIODeviceBase::OpenMode mode) override
virtual bool waitForBytesWritten(int msecs = 30000) override
virtual bool waitForReadyRead(int msecs = 30000) override

신호

void baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)
void breakEnabledChanged(bool set)
void dataBitsChanged(QSerialPort::DataBits dataBits)
void dataTerminalReadyChanged(bool set)
void errorOccurred(QSerialPort::SerialPortError error)
void flowControlChanged(QSerialPort::FlowControl flow)
void parityChanged(QSerialPort::Parity parity)
void requestToSendChanged(bool set)
void stopBitsChanged(QSerialPort::StopBits stopBits)

재구현된 보호 함수

virtual qint64 readData(char *data, qint64 maxSize) override
virtual qint64 readLineData(char *data, qint64 maxSize) override
virtual qint64 writeData(const char *data, qint64 maxSize) override

상세 설명

시스템의 모든 직렬 포트를 열거할 수 있는 QSerialPortInfo 헬퍼 클래스를 사용하여 사용 가능한 직렬 포트에 대한 정보를 얻을 수 있습니다. 이는 사용하려는 직렬 포트의 정확한 이름을 얻는 데 유용합니다. setPort () 또는 setPortName() 메서드에 헬퍼 클래스의 객체를 인수로 전달하여 원하는 직렬 장치를 할당할 수 있습니다.

포트를 설정한 후에는 open() 메서드를 사용하여 읽기 전용(r/o), 쓰기 전용(w/o) 또는 읽기-쓰기(r/w) 모드로 열 수 있습니다.

참고: 직렬 포트는 항상 독점 액세스 권한으로 열립니다(즉, 다른 프로세스나 스레드가 이미 열린 직렬 포트에 액세스할 수 없음).

close() 메서드를 사용하여 포트를 닫고 I/O 작업을 취소합니다.

성공적으로 열리면 QSerialPort는 포트의 현재 구성을 확인하려고 시도하고 스스로 초기화합니다. setBaudRate (), setDataBits(), setParity(), setStopBits() 및 setFlowControl() 메서드를 사용하여 포트를 원하는 설정으로 재구성할 수 있습니다.

핀아웃 신호와 함께 작동하는 몇 가지 프로퍼티가 있습니다: QSerialPort::dataTerminalReady, QSerialPort::requestToSend. pinoutSignals () 메서드를 사용하여 현재 핀아웃 신호 세트를 쿼리할 수도 있습니다.

포트가 읽기 또는 쓰기 준비가 되었다면 read() 또는 write() 메서드를 사용할 수 있습니다. 또는 readLine() 및 readAll() 편의 메서드를 호출할 수도 있습니다. 모든 데이터를 한 번에 읽지 못하면 나중에 새로 들어오는 데이터가 QSerialPort의 내부 읽기 버퍼에 추가되면서 남은 데이터를 사용할 수 있습니다. setReadBufferSize ()를 사용하여 읽기 버퍼의 크기를 제한할 수 있습니다.

QSerialPort는 특정 신호가 방출될 때까지 호출 스레드를 일시 중단하는 함수 집합을 제공합니다. 이러한 함수는 직렬 포트 차단을 구현하는 데 사용할 수 있습니다:

  • waitForReadyRead()는 새 데이터를 읽을 수 있을 때까지 호출을 차단합니다.
  • waitForBytesWritten()는 직렬 포트에 하나의 페이로드 데이터가 쓰여질 때까지 호출을 차단합니다.

다음 예제를 참조하세요:

qint64 numReadTotal = 0;
char buffer[50];

for (;;) {
    const qint64 numRead  = serial.read(buffer, 50);

    // Do whatever with the array

    numReadTotal += numRead;
    if (numRead == 0 && !serial.waitForReadyRead())
        break;
}

waitForReadyRead()가 false 을 반환하면 연결이 닫혔거나 오류가 발생한 것입니다.

어느 시점에서든 오류가 발생하면 QSerialPort는 errorOccurred() 신호를 보냅니다. error ()를 호출하여 마지막으로 발생한 오류 유형을 찾을 수도 있습니다.

블로킹 직렬 포트를 사용한 프로그래밍은 비 블로킹 직렬 포트를 사용한 프로그래밍과 근본적으로 다릅니다. 블로킹 직렬 포트는 이벤트 루프가 필요하지 않으며 일반적으로 더 간단한 코드로 이어집니다. 그러나 GUI 애플리케이션에서 직렬 포트 차단은 사용자 인터페이스가 멈추는 것을 방지하기 위해 GUI가 아닌 스레드에서만 사용해야 합니다.

이러한 접근 방식에 대한 자세한 내용은 예제 애플리케이션을 참조하세요.

QSerialPort 클래스는 QTextStreamQDataStream 의 스트림 연산자(연산자<<() 및 연산자>>())와 함께 사용할 수도 있습니다. 하지만 주의해야 할 한 가지 문제가 있습니다. 연산자>>() 오버로드 연산자를 사용하여 읽기를 시도하기 전에 충분한 데이터를 사용할 수 있는지 확인해야 합니다.

QSerialPortInfo참조하세요 .

멤버 유형 문서

enum QSerialPort::BaudRate

이 열거형은 통신 장치가 작동하는 전송 속도를 설명합니다.

참고: 이 열거형에는 가장 일반적인 표준 전송 속도만 나열됩니다.

Constant설명
QSerialPort::Baud120012001200 전송 속도.
QSerialPort::Baud240024002400 보드.
QSerialPort::Baud480048004800 baud.
QSerialPort::Baud960096009600 baud.
QSerialPort::Baud192001920019200 baud.
QSerialPort::Baud384003840038400 전송 속도
QSerialPort::Baud576005760057600 baud.
QSerialPort::Baud115200115200115200 baud.

QSerialPort::baudRate참조하십시오 .

enum QSerialPort::DataBits

이 열거형은 사용된 데이터 비트 수를 설명합니다.

Constant설명
QSerialPort::Data55각 문자의 데이터 비트 수는 5입니다. 보돗 코드에 사용됩니다. 일반적으로 텔레프린터와 같은 구형 장비에서만 의미가 있습니다.
QSerialPort::Data66각 문자의 데이터 비트 수는 6입니다. 거의 사용되지 않습니다.
QSerialPort::Data77각 문자의 데이터 비트 수는 7입니다. 트루 ASCII에 사용됩니다. 일반적으로 텔레프린터와 같은 구형 장비에서만 의미가 있습니다.
QSerialPort::Data88각 문자의 데이터 비트 수는 8입니다. 이 크기는 바이트의 크기와 일치하므로 대부분의 데이터에 사용됩니다. 최신 애플리케이션에서 거의 보편적으로 사용됩니다.

QSerialPort::dataBits참조하세요 .

열거형 QSerialPort::방향
플래그 QSerialPort::방향

이 열거형은 데이터 전송의 가능한 방향을 설명합니다.

참고: 이 열거형은 일부 운영 체제(예: POSIX 계열)에서 각 방향에 대해 장치의 전송 속도를 개별적으로 설정하는 데 사용됩니다.

Constant설명
QSerialPort::Input1입력 방향.
QSerialPort::Output2출력 방향.
QSerialPort::AllDirectionsInput | Output동시에 두 방향.

방향 유형은 QFlags<방향>에 대한 타입 정의입니다. 방향 값의 OR 조합을 저장합니다.

enum QSerialPort::FlowControl

이 열거형은 사용된 흐름 제어를 설명합니다.

Constant설명
QSerialPort::NoFlowControl0흐름 제어 없음.
QSerialPort::HardwareControl1하드웨어 흐름 제어(RTS/CTS).
QSerialPort::SoftwareControl2소프트웨어 흐름 제어(XON/XOFF).

QSerialPort::flowControl참조하세요 .

enum QSerialPort::Parity

이 열거형은 사용된 패리티 체계를 설명합니다.

Constant설명
QSerialPort::NoParity0전송된 패리티 비트가 없습니다. 가장 일반적인 패리티 설정입니다. 오류 감지는 통신 프로토콜에서 처리합니다.
QSerialPort::EvenParity2패리티 비트를 포함한 각 문자의 1비트 수는 항상 짝수입니다.
QSerialPort::OddParity3패리티 비트를 포함한 각 문자의 1비트 수는 항상 홀수입니다. 각 문자에서 적어도 하나의 상태 전환이 발생하도록 보장합니다.
QSerialPort::SpaceParity4스페이스 패리티. 패리티 비트는 스페이스 신호 상태로 전송됩니다. 오류 감지 정보는 제공하지 않습니다.
QSerialPort::MarkParity5마크 패리티. 패리티 비트는 항상 마크 신호 조건(논리 1)으로 설정됩니다. 오류 감지 정보는 제공하지 않습니다.

QSerialPort::parity참조하세요 .

열거형 QSerialPort::핀아웃 시그널
플래그 QSerialPort::핀아웃 시그널

이 열거형은 가능한 RS-232 핀아웃 신호를 설명합니다.

상수설명
QSerialPort::NoSignal0x00활성 라인 없음
QSerialPort::DataTerminalReadySignal0x04DTR(데이터 터미널 준비).
QSerialPort::DataCarrierDetectSignal0x08DCD(데이터 캐리어 감지).
QSerialPort::DataSetReadySignal0x10DSR(데이터 세트 준비).
QSerialPort::RingIndicatorSignal0x20RNG(링 표시기).
QSerialPort::RequestToSendSignal0x40RTS(전송 요청).
QSerialPort::ClearToSendSignal0x80CTS(클리어 투 센드).
QSerialPort::SecondaryTransmittedDataSignal0x100STD (보조 전송 데이터).
QSerialPort::SecondaryReceivedDataSignal0x200SRD(보조 수신 데이터).

PinoutSignals 유형은 QFlags<PinoutSignal>에 대한 타입 정의입니다. PinoutSignal 값의 OR 조합을 저장합니다.

pinoutSignals(), QSerialPort::dataTerminalReady, 및 QSerialPort::requestToSend참조하십시오 .

enum QSerialPort::SerialPortError

이 열거형은 QSerialPort::error 속성에 포함될 수 있는 오류를 설명합니다.

Constant설명
QSerialPort::NoError0오류가 발생하지 않았습니다.
QSerialPort::DeviceNotFoundError1존재하지 않는 장치를 열려고 시도하는 동안 오류가 발생했습니다.
QSerialPort::PermissionError2다른 프로세스에 의해 이미 열린 장치를 열려고 시도하는 동안 오류가 발생했거나 사용자에게 열 수 있는 권한 및 자격 증명이 충분하지 않습니다.
QSerialPort::OpenError3이 개체에서 이미 열려 있는 장치를 열려고 하는 동안 오류가 발생했습니다.
QSerialPort::NotOpenError10이 오류는 장치가 열려 있어야만 성공적으로 수행할 수 있는 작업이 실행될 때 발생합니다. 이 값은 QtSerialPort 5.2에서 도입되었습니다.
QSerialPort::WriteError4데이터를 쓰는 동안 I/O 오류가 발생했습니다.
QSerialPort::ReadError5데이터를 읽는 동안 I/O 오류가 발생했습니다.
QSerialPort::ResourceError6장치가 예기치 않게 시스템에서 제거되는 등 리소스를 사용할 수 없게 된 경우 I/O 오류가 발생했습니다.
QSerialPort::UnsupportedOperationError7요청된 장치 작동이 실행 중인 운영 체제에서 지원되지 않거나 금지되어 있습니다.
QSerialPort::TimeoutError9시간 초과 오류가 발생했습니다. 이 값은 QtSerialPort 5.2에서 도입되었습니다.
QSerialPort::UnknownError8알 수 없는 오류가 발생했습니다.

QSerialPort::error참조하세요 .

enum QSerialPort::StopBits

이 열거형은 사용된 정지 비트 수를 설명합니다.

Constant설명
QSerialPort::OneStop11 스톱 비트.
QSerialPort::OneAndHalfStop31.5 스톱 비트. Windows 플랫폼에만 해당합니다.
QSerialPort::TwoStop22 정지 비트.

QSerialPort::stopBits참조하세요 .

속성 문서

baudRate : qint32

이 속성은 원하는 방향의 데이터 전송 속도를 보유합니다.

설정이 성공했거나 포트를 열기 전에 설정된 경우 true, 그렇지 않으면 false 을 반환하고 QSerialPort::error 속성 값에 액세스하여 얻을 수 있는 오류 코드를 설정합니다. 전송 속도를 설정하려면 QSerialPort::BaudRate 열거형 또는 양수 qint32 값을 사용합니다.

참고: 포트를 열기 전에 설정하면 포트가 성공적으로 열린 직후 QSerialPort::open() 메서드에서 실제 직렬 포트 설정이 자동으로 수행됩니다.

경고: AllDirections 플래그 설정은 모든 플랫폼에서 지원됩니다. Windows에서는 이 모드만 지원합니다.

경고: Windows에서 모든 방향에서 동일한 전송 속도를 반환합니다.

기본값은 Baud9600, 즉 초당 9600비트입니다.

기능에 액세스합니다:

qint32 baudRate(QSerialPort::Directions directions = AllDirections) const
bool setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections)

알림 신호:

void baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)

[bindable] breakEnabled : bool

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 전송 라인의 중단 상태를 유지합니다.

성공하면 true, 그렇지 않으면 false 을 반환합니다. 플래그가 true 이면 전송 라인이 중단 상태이고, 그렇지 않으면 비 중단 상태입니다.

참고: 이 속성을 설정하거나 가져오기 전에 직렬 포트가 열려 있어야 하며, 그렇지 않으면 false 을 반환하고 NotOpenError 오류 코드를 설정합니다. 이것은 클래스의 일반적인 Qt 프로퍼티 설정과 달리 약간 특이합니다. 하지만 커널 및 하드웨어와의 상호 작용을 통해 프로퍼티가 설정되므로 특별한 사용 사례입니다. 따라서 두 시나리오를 서로 완전히 비교할 수는 없습니다.

[bindable] dataBits : DataBits

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 프레임에 데이터 비트를 보유합니다.

설정이 성공했거나 포트를 열기 전에 설정된 경우 true, 그렇지 않으면 false 을 반환하고 QSerialPort::error 속성 값에 액세스하여 얻을 수 있는 오류 코드를 설정합니다.

참고: 포트를 열기 전에 설정한 경우 실제 직렬 포트 설정은 포트 개방이 성공한 직후 QSerialPort::open() 메서드에서 자동으로 수행됩니다.

기본값은 Data8, 즉 8개의 데이터 비트입니다.

dataTerminalReady : bool

이 프로퍼티는 회선 신호 DTR의 상태(높음 또는 낮음)를 보유합니다.

성공하면 true, 그렇지 않으면 false 을 반환합니다. 플래그가 true 이면 DTR 신호가 높음으로 설정되고, 그렇지 않으면 낮음으로 설정됩니다.

참고: 이 속성을 설정하거나 가져오기 전에 직렬 포트가 열려 있어야 하며, 그렇지 않으면 false 이 반환되고 오류 코드가 NotOpenError 으로 설정됩니다.

기능에 액세스합니다:

bool isDataTerminalReady()
bool setDataTerminalReady(bool set)

알림 신호:

void dataTerminalReadyChanged(bool set)

pinoutSignals()도 참조하세요 .

[bindable read-only] error : SerialPortError

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 직렬 포트의 오류 상태를 보유합니다.

I/O 장치 상태는 오류 코드를 반환합니다. 예를 들어 open()가 false 을 반환하거나 읽기/쓰기 작업에서 -1 을 반환하는 경우 이 속성을 사용하여 작업 실패의 원인을 파악할 수 있습니다.

오류 코드는 clearError()를 호출한 후 기본값인 QSerialPort::NoError 으로 설정됩니다.

[bindable] flowControl : FlowControl

참고: 이 프로퍼티는 QProperty 바인딩을 지원합니다.

이 속성은 원하는 흐름 제어 모드를 보유합니다.

설정이 성공하거나 포트를 열기 전에 설정된 경우 true, 그렇지 않으면 false 을 반환하고 QSerialPort::error 속성 값에 액세스하여 얻을 수 있는 오류 코드를 설정합니다.

참고: 설정이 포트를 열기 전에 설정된 경우, 실제 직렬 포트 설정은 포트 개방이 성공한 직후 QSerialPort::open() 메서드에서 자동으로 수행됩니다.

기본값은 NoFlowControl, 즉 흐름 제어가 없는 상태입니다.

[bindable] parity : Parity

참고: 이 속성은 QProperty 바인딩을 지원합니다.

이 속성은 패리티 검사 모드를 유지합니다.

설정이 성공했거나 포트를 열기 전에 설정된 경우 true, 그렇지 않으면 false 을 반환하고 QSerialPort::error 속성 값에 액세스하여 얻을 수 있는 오류 코드를 설정합니다.

참고: 포트를 열기 전에 설정한 경우, 실제 직렬 포트 설정은 포트 개방이 성공한 직후 QSerialPort::open() 메서드에서 자동으로 수행됩니다.

기본값은 NoParity, 즉 패리티가 없는 값입니다.

requestToSend : bool

이 프로퍼티는 회선 신호 RTS의 상태(높음 또는 낮음)를 보유합니다.

성공하면 true, 그렇지 않으면 false 을 반환합니다. 플래그가 true 이면 RTS 신호가 높음으로 설정되고, 그렇지 않으면 낮음으로 설정됩니다.

참고: 이 속성을 설정하거나 가져오기 전에 직렬 포트가 열려 있어야 하며, 그렇지 않으면 false 이 반환되고 오류 코드가 NotOpenError 으로 설정됩니다.

참고: HardwareControl 모드에서 RTS 신호를 제어하려고 하면 드라이버에 의해 신호가 자동으로 제어되므로 오류 코드가 UnsupportedOperationError 으로 설정되어 실패합니다.

기능 액세스:

bool isRequestToSend()
bool setRequestToSend(bool set)

알림 신호:

void requestToSendChanged(bool set)

pinoutSignals()도 참조하세요 .

[bindable] stopBits : StopBits

참고: 이 프로퍼티는 QProperty 바인딩을 지원합니다.

이 속성은 프레임의 정지 비트 수를 보유합니다.

설정이 성공했거나 포트를 열기 전에 설정된 경우 true, 그렇지 않으면 false 을 반환하고 QSerialPort::error 속성 값에 액세스하여 얻을 수 있는 오류 코드를 설정합니다.

참고: 설정이 포트를 열기 전에 설정된 경우 실제 직렬 포트 설정은 포트 개방이 성공한 직후 QSerialPort::open() 메서드에서 자동으로 수행됩니다.

기본값은 OneStop, 즉 1스톱 비트입니다.

멤버 함수 문서

[explicit] QSerialPort::QSerialPort(QObject *parent = nullptr)

주어진 parent 으로 새 직렬 포트 객체를 생성합니다.

[explicit] QSerialPort::QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr)

지정된 헬퍼 클래스 serialPortInfo 를 사용하여 지정된 직렬 포트를 나타내는 parent 로 새 직렬 포트 객체를 생성합니다.

[explicit] QSerialPort::QSerialPort(const QString &name, QObject *parent = nullptr)

지정된 name 으로 직렬 포트를 나타내기 위해 지정된 parent 을 사용하여 새 직렬 포트 객체를 생성합니다.

이름은 특정 형식을 가져야 합니다( setPort() 메서드를 참조하세요).

[virtual noexcept] QSerialPort::~QSerialPort()

필요한 경우 직렬 포트를 닫은 다음 개체를 삭제합니다.

[signal] void QSerialPort::baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)

이 신호는 전송 속도가 변경된 후에 방출됩니다. 새 전송 속도는 baudRate 로, 방향은 directions 으로 전달됩니다.

참고: 속성에 대한 알림 신호 baudRate.

QSerialPort::baudRate도 참조하세요 .

[override virtual] qint64 QSerialPort::bytesAvailable() const

재구현합니다: QIODevice::bytesAvailable() const.

읽기를 기다리는 수신 바이트 수를 반환합니다.

bytesToWrite() 및 read()도 참조하세요 .

[override virtual] qint64 QSerialPort::bytesToWrite() const

재구현합니다: QIODevice::bytesToWrite() const.

쓰기를 기다리는 바이트 수를 반환합니다. 바이트는 제어가 이벤트 루프로 돌아가거나 flush()가 호출될 때 기록됩니다.

bytesAvailable() 및 flush()도 참조하세요 .

[override virtual] bool QSerialPort::canReadLine() const

재구현합니다: QIODevice::canReadLine() const.

직렬 포트에서 데이터 한 줄을 읽을 수 있으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

readLine()도 참조하세요 .

bool QSerialPort::clear(QSerialPort::Directions directions = AllDirections)

주어진 지시에 따라 출력 또는 입력 버퍼에서 모든 문자를 삭제합니다 directions. 여기에는 내부 클래스 버퍼와 UART(드라이버) 버퍼를 지우는 것도 포함됩니다. 또한 보류 중인 읽기 또는 쓰기 작업을 종료합니다. 성공하면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

참고: 버퍼링된 데이터를 지우기 전에 직렬 포트가 열려 있어야 하며, 그렇지 않으면 false 을 반환하고 NotOpenError 오류 코드를 설정합니다.

[override virtual] void QSerialPort::close()

다시 구현합니다: QIODevice::close().

참고: 직렬 포트는 닫으려고 시도하기 전에 열려 있어야 하며, 그렇지 않으면 NotOpenError 오류 코드가 설정됩니다.

QIODevice::close()도 참조하세요 .

[signal] void QSerialPort::dataBitsChanged(QSerialPort::DataBits dataBits)

이 신호는 프레임의 데이터 비트가 변경된 후에 방출됩니다. 프레임의 새 데이터 비트는 dataBits 로 전달됩니다.

참고: 속성 dataBits 에 대한 알림 신호입니다.

QSerialPort::dataBits도 참조하세요 .

[signal] void QSerialPort::dataTerminalReadyChanged(bool set)

이 신호는 회선 신호 DTR의 상태(높음 또는 낮음)가 변경된 후에 방출됩니다. 회선 신호 DTR의 새로운 상태(높음 또는 낮음)는 set 로 전달됩니다.

참고: 속성 dataTerminalReady 에 대한 알림 신호입니다.

QSerialPort::dataTerminalReady도 참조하세요 .

[signal] void QSerialPort::errorOccurred(QSerialPort::SerialPortError error)

이 신호는 직렬 포트에 오류가 발생할 때 발생합니다. 지정된 error 은 발생한 오류의 유형을 설명합니다.

참고: 속성에 대한 알림 신호 error.

QSerialPort::error도 참조하세요 .

[signal] void QSerialPort::flowControlChanged(QSerialPort::FlowControl flow)

이 신호는 플로우 제어 모드가 변경된 후에 전송됩니다. 새 플로우 제어 모드는 flow 로 전달됩니다.

참고: 속성에 대한 알림 신호 flowControl.

QSerialPort::flowControl도 참조하세요 .

bool QSerialPort::flush()

이 함수는 내부 쓰기 버퍼에서 기본 직렬 포트에 차단 없이 가능한 한 많이 씁니다. 데이터가 기록된 경우 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

버퍼링된 데이터를 직렬 포트로 즉시 전송하려면 이 함수를 호출하세요. 성공적으로 기록되는 바이트 수는 운영 체제에 따라 다릅니다. 대부분의 경우 이 함수는 이벤트 루프에 제어권이 반환되면 QSerialPort 클래스가 자동으로 데이터 전송을 시작하므로 호출할 필요가 없습니다. 이벤트 루프가 없는 경우 waitForBytesWritten()를 대신 호출하세요.

참고: 버퍼링된 데이터를 플러시하기 전에 직렬 포트가 열려 있어야 하며, 그렇지 않으면 false 을 반환하고 NotOpenError 오류 코드를 설정합니다.

write() 및 waitForBytesWritten()도 참조하세요 .

QSerialPort::Handle QSerialPort::handle() const

플랫폼이 지원되고 직렬 포트가 열려 있으면 기본 직렬 포트 핸들을 반환하고, 그렇지 않으면 -1 을 반환합니다.

경고: 이 함수는 전문가 전용이므로 사용자 책임하에 사용하십시오. 또한 이 함수는 마이너 Qt 릴리스 간 호환성을 약속하지 않습니다.

[override virtual] bool QSerialPort::isSequential() const

재구현합니다: QIODevice::isSequential() const.

항상 true 를 반환합니다. 직렬 포트는 순차적 장치입니다.

[override virtual] bool QSerialPort::open(QIODeviceBase::OpenMode mode)

다시 구현합니다: QIODevice::open(QIODeviceBase::OpenMode 모드).

OpenMode mode 를 사용하여 직렬 포트를 연 다음 성공하면 true 을 반환하고, 그렇지 않으면 false 을 반환하고 error() 메서드를 호출하여 얻을 수 있는 오류 코드를 설정합니다.

이 메서드는 포트를 여는 데 성공했지만 포트 설정을 성공적으로 설정할 수 없는 경우 false 을 반환합니다. 이 경우 포트가 잘못된 설정으로 남아 있지 않도록 포트가 자동으로 닫힙니다.

경고: modeQIODeviceBase::ReadOnly, QIODeviceBase::WriteOnly 또는 QIODeviceBase::ReadWrite 이어야 합니다. 다른 모드는 지원되지 않습니다.

참고: 과거의 이유로 인해 성공적으로 열리면 errorOccurred() 신호가 NoError 오류 코드와 함께 전송됩니다. 이 동작은 이전 버전과의 호환성을 유지하기 위해 유지됩니다.

QIODeviceBase::OpenModesetPort()도 참조하세요 .

[signal] void QSerialPort::parityChanged(QSerialPort::Parity parity)

이 신호는 패리티 검사 모드가 변경된 후에 전송됩니다. 새 패리티 검사 모드는 parity 로 전달됩니다.

참고: 속성에 대한 알림 신호 parity.

QSerialPort::parity도 참조하세요 .

QSerialPort::PinoutSignals QSerialPort::pinoutSignals()

라인 신호의 상태를 비트맵 형식으로 반환합니다.

이 결과에서 마스크 "AND"를 적용하여 원하는 신호의 상태를 할당할 수 있으며, 여기서 마스크는 QSerialPort::PinoutSignals 에서 원하는 열거 값입니다.

참고: 이 메서드는 시스템 호출을 수행하므로 회선 신호 상태가 제대로 반환되는지 확인합니다. 이는 기본 운영 체제에서 변경 사항에 대한 적절한 알림을 제공할 수 없는 경우에 필요합니다.

참고: 핀아웃 신호를 가져오기 전에 직렬 포트가 열려 있어야 하며, 그렇지 않으면 NoSignal 을 반환하고 NotOpenError 오류 코드를 설정합니다.

QSerialPort::dataTerminalReadyQSerialPort::requestToSend참조하세요 .

QString QSerialPort::portName() const

setPort()에 의해 설정되거나 QSerialPort 생성자에 전달된 이름을 반환합니다. 이 이름은 장치의 내부 변수 시스템 위치에서 추출하여 변환하는 짧은 이름입니다. 변환 알고리즘은 플랫폼별로 다릅니다:

플랫폼간단한 설명
Windows시스템 위치에서 접두사 "\\.\" 또는 "//./"를 제거하고 나머지 문자열을 반환합니다.
Unix, BSD시스템 위치에서 접두사 "/dev/"를 제거하고 나머지 문자열을 반환합니다.

setPortName(), setPort() 및 QSerialPortInfo::portName()도 참조하세요 .

qint64 QSerialPort::readBufferSize() const

내부 읽기 버퍼의 크기를 반환합니다. 이는 클라이언트가 read() 또는 readAll() 메서드를 호출하기 전에 수신할 수 있는 데이터의 양을 제한합니다.

읽기 버퍼 크기가 0 (기본값)인 경우 버퍼에 크기 제한이 없으므로 데이터가 손실되지 않습니다.

setReadBufferSize() 및 read()도 참조하세요 .

[override virtual protected] qint64 QSerialPort::readData(char *data, qint64 maxSize)

다시 구현합니다: QIODevice::readData(문자 *데이터, qint64 maxSize).

[override virtual protected] qint64 QSerialPort::readLineData(char *data, qint64 maxSize)

다시 구현합니다: QIODevice::readLineData(문자 *데이터, qint64 maxSize).

[signal] void QSerialPort::requestToSendChanged(bool set)

이 신호는 회선 신호 RTS의 상태(높음 또는 낮음)가 변경된 후에 방출됩니다. 회선 신호 RTS의 새로운 상태(높음 또는 낮음)는 set 로 전달됩니다.

참고: 속성 requestToSend 에 대한 알림 신호입니다.

QSerialPort::requestToSend도 참조하세요 .

void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)

직렬 포트 정보 인스턴스에 저장된 포트를 설정합니다 serialPortInfo.

portName() 및 QSerialPortInfo도 참조하세요 .

void QSerialPort::setPortName(const QString &name)

직렬 포트의 name 을 설정합니다.

직렬 포트의 이름은 필요한 경우 짧은 이름이나 긴 시스템 위치로 전달할 수 있습니다.

portName() 및 QSerialPortInfo참조하세요 .

void QSerialPort::setReadBufferSize(qint64 size)

QSerialPort 의 내부 읽기 버퍼 크기를 size 바이트로 설정합니다.

버퍼 크기가 특정 크기로 제한되어 있으면 QSerialPort 이 크기 이상의 데이터는 버퍼링되지 않습니다. 버퍼 크기가 0 인 특수한 경우는 읽기 버퍼가 무제한이며 들어오는 모든 데이터가 버퍼링된다는 의미입니다. 이것이 기본값입니다.

이 옵션은 실시간 스트리밍 애플리케이션과 같이 특정 시점에만 데이터를 읽거나 직렬 포트가 너무 많은 데이터를 수신하지 않도록 보호해야 하는 경우(예: 애플리케이션의 메모리가 부족해질 수 있는 경우)에 유용합니다.

readBufferSize() 및 read()도 참조하세요 .

[signal] void QSerialPort::stopBitsChanged(QSerialPort::StopBits stopBits)

이 신호는 프레임의 정지 비트 수가 변경된 후에 방출됩니다. 프레임의 새로운 정지 비트 수는 stopBits 로 전달됩니다.

참고: 속성 stopBits 에 대한 알림 신호입니다.

QSerialPort::stopBits도 참조하세요 .

[override virtual] bool QSerialPort::waitForBytesWritten(int msecs = 30000)

다시 구현합니다: QIODevice::waitForBytesWritten(int msecs).

이 함수는 직렬 포트에 최소 1바이트가 쓰여지고 bytesWritten() 신호가 전송될 때까지 차단합니다. 이 함수는 msecs 밀리초 후에 시간 초과되며, 기본 시간 초과 시간은 30000밀리초입니다. msecs 가 -1이면 이 함수는 시간 초과되지 않습니다.

bytesWritten() 신호가 전송되면 true 을 반환하고, 그렇지 않으면 false (오류가 발생했거나 작업이 시간 초과된 경우)을 반환합니다.

[override virtual] bool QSerialPort::waitForReadyRead(int msecs = 30000)

다시 구현합니다: QIODevice::waitForReadyRead(int msecs).

이 함수는 새 데이터를 읽을 수 있고 readyRead() 신호가 전송될 때까지 차단합니다. 이 함수는 msecs 밀리초 후에 시간 초과되며, 기본 시간 초과 시간은 30000밀리초입니다. msecs 이 -1이면 이 함수는 시간 초과되지 않습니다.

readyRead() 신호가 전송되고 읽을 수 있는 새 데이터가 있으면 true 을 반환하고, 그렇지 않으면 false (오류가 발생했거나 작업이 시간 초과된 경우)을 반환합니다.

waitForBytesWritten()도 참조하세요 .

[override virtual protected] qint64 QSerialPort::writeData(const char *data, qint64 maxSize)

재구현합니다: QIODevice::writeData(const char *data, qint64 maxSize).

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.