이 페이지에서

QSerialPort Class

직렬 포트에 접근할 수 있는 기능을 제공합니다. 더 보기...

헤더: #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)
void setSettingsRestoredOnClose(bool restore)
bool setStopBits(QSerialPort::StopBits stopBits)
(since 6.10) void setWriteBufferSize(qint64 size)
bool settingsRestoredOnClose() const
QSerialPort::StopBits stopBits() const
(since 6.10) qint64 writeBufferSize() 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)
(since 6.9) void settingsRestoredOnCloseChanged(bool restore)
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 클래스는 QTextStream 및 QDataStream 의 스트림 연산자(operator<<() 및 operator>>())와 함께 사용할 수도 있습니다. 다만 주의해야 할 점이 하나 있습니다. operator>>() 오버로드 연산자를 사용하여 읽기를 시도하기 전에 충분한 데이터가 준비되어 있는지 반드시 확인해야 합니다.

QSerialPortInfo도 참조하십시오 .

멤버 유형 설명서

enum QSerialPort::BaudRate

이 열거형은 통신 장치가 작동하는 보드 속도를 나타냅니다.

참고: 이 열거형에는 가장 일반적인 표준 보드 속도만 나열되어 있습니다.

상수값설명
QSerialPort::Baud120012001200 보.
QSerialPort::Baud240024002400 보.
QSerialPort::Baud480048004800 보.
QSerialPort::Baud960096009600 보.
QSerialPort::Baud192001920019200 보.
QSerialPort::Baud384003840038400 보.
QSerialPort::Baud576005760057600 보드.
QSerialPort::Baud115200115200115200 보드.

QSerialPort::baudRate도 참조하십시오 .

enum QSerialPort::DataBits

이 열거형은 사용되는 데이터 비트 수를 나타냅니다.

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

QSerialPort::dataBits도 참조하십시오 .

enum QSerialPort::Direction
flags QSerialPort::Directions

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

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

상수값설명
QSerialPort::Input1입력 방향.
QSerialPort::Output2출력 방향.
QSerialPort::AllDirectionsInput | Output두 방향으로 동시에.

Directions 유형은 QFlags<Direction>에 대한 typedef입니다. 이 유형은 Direction 값들의 OR 조합을 저장합니다.

enum QSerialPort::FlowControl

이 열거형은 사용되는 흐름 제어 방식을 설명합니다.

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

QSerialPort::flowControl도 참조하십시오 .

enum QSerialPort::Parity

이 열거형은 사용되는 패리티 방식을 설명합니다.

상수값설명
QSerialPort::NoParity0파리티 비트가 전송되지 않습니다. 이것이 가장 일반적인 파리티 설정입니다. 오류 검출은 통신 프로토콜에서 처리합니다.
QSerialPort::EvenParity2패리티 비트를 포함하여 각 문자의 1 비트 수는 항상 짝수입니다.
QSerialPort::OddParity3패리티 비트를 포함하여 각 문자 내의 1 비트 수는 항상 홀수입니다. 이는 각 문자에서 최소 한 번의 상태 전환이 발생하도록 보장합니다.
QSerialPort::SpaceParity4스페이스 패리티. 패리티 비트는 스페이스 신호 상태에서 전송됩니다. 오류 검출 정보를 제공하지 않습니다.
QSerialPort::MarkParity5마크 패리티. 패리티 비트는 항상 마크 신호 상태(논리 1)로 설정됩니다. 오류 검출 정보를 제공하지 않습니다.

QSerialPort::parity도 참조하십시오 .

enum QSerialPort::PinoutSignal
flags QSerialPort::PinoutSignals

이 열거형은 RS-232 핀 배열에서 발생할 수 있는 신호들을 설명합니다.

상수값설명
QSerialPort::NoSignal0x00라인 비활성화
QSerialPort::DataTerminalReadySignal0x04DTR(데이터 터미널 준비).
QSerialPort::DataCarrierDetectSignal0x08DCD(데이터 캐리어 감지).
QSerialPort::DataSetReadySignal0x10DSR (데이터 세트 준비).
QSerialPort::RingIndicatorSignal0x20RNG (링 표시기).
QSerialPort::RequestToSendSignal0x40RTS(전송 요청).
QSerialPort::ClearToSendSignal0x80CTS (전송 가능).
QSerialPort::SecondaryTransmittedDataSignal0x100STD (2차 전송 데이터).
QSerialPort::SecondaryReceivedDataSignal0x200SRD (2차 수신 데이터).

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

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

enum QSerialPort::SerialPortError

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

상수상수값설명
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

이 열거형은 사용되는 정지 비트의 수를 나타냅니다.

상수값설명
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 속성 설정과는 다소 이례적인 방식입니다. 그러나 이 속성은 커널 및 하드웨어와의 상호 작용을 통해 설정되므로 특별한 사용 사례에 해당합니다. 따라서 두 시나리오를 서로 완전히 비교할 수는 없습니다.

액세스 함수:

bool isBreakEnabled() const
bool setBreakEnabled(bool set = true)

Notifier 신호:

void breakEnabledChanged(bool set)

[bindable] dataBits : DataBits

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

이 속성은 프레임 내의 데이터 비트를 저장합니다.

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

참고: 포트 열기 전에 설정이 이루어진경우 , 포트 열기가 성공한 직후 QSerialPort::open() 메서드에서 실제 시리얼 포트 설정이 자동으로 수행됩니다.

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

액세스 함수:

QSerialPort::DataBits dataBits() const
bool setDataBits(QSerialPort::DataBits dataBits)

알림 신호:

void dataBitsChanged(QSerialPort::DataBits dataBits)

dataTerminalReady : bool

이 속성은 회선 신호 DTR의 상태(높음 또는 낮음)를 저장합니다.

성공 시 ` true `를 반환하고, 그렇지 않은 경우 ` false `를 반환합니다. 플래그가 ` true `인 경우 DTR 신호는 High로 설정되며, 그렇지 않은 경우 Low로 설정됩니다.

참고: 이 속성을 설정하거나 가져오기 전에 직렬포트가 열려 있어야 합니다. 그렇지 않으면 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 로 설정됩니다.

액세스 함수:

QSerialPort::SerialPortError error() const
void clearError()

Notifier 시그널:

void errorOccurred(QSerialPort::SerialPortError error)

[bindable] flowControl : FlowControl

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

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

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

참고: 포트 열기 전에 설정이 이루어진경우 , 포트 열기가 성공한 직후 QSerialPort::open() 메서드에서 실제 시리얼 포트 설정이 자동으로 수행됩니다.

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

액세스 함수:

QSerialPort::FlowControl flowControl() const
bool setFlowControl(QSerialPort::FlowControl flowControl)

알림 신호:

void flowControlChanged(QSerialPort::FlowControl flow)

[bindable] parity : Parity

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

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

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

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

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

경고: 일부 UNIX 운영 체제(예: macOS) 는 CMSPAR 플래그를 지원하지 않습니다. 이러한 시스템에서는 Mark or Space 패리티 설정이 지원되지 않습니다.

액세스 함수:

QSerialPort::Parity parity() const
bool setParity(QSerialPort::Parity parity)

알림 신호:

void parityChanged(QSerialPort::Parity parity)

requestToSend : bool

이 속성은 라인 신호 RTS의 상태(높음 또는 낮음)를 저장합니다.

성공 시 ` true `을 반환하고, 그렇지 않은 경우 ` false `을 반환합니다. 플래그가 ` true `인 경우 RTS 신호는 High로 설정되고, 그렇지 않은 경우 Low로 설정됩니다.

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

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

액세스 함수:

bool isRequestToSend()
bool setRequestToSend(bool set)

알림 신호:

void requestToSendChanged(bool set)

pinoutSignals()도 참조하십시오 .

[since 6.9] settingsRestoredOnClose : bool

이 속성은 닫을 때 포트 매개변수를 복원할지 여부를 정의합니다.

포트가 열리면, 클래스는 사용자가 정의한 매개변수를 적용하기 전에 해당 매개변수를 캐시에 저장합니다.

이 속성이 ' true'인 경우, 시리얼 포트는 포트를 닫기 전에 캐시된 매개변수를 복원하려고 시도하며, 그렇지 않은 경우 캐시된 매개변수는 버려집니다.

기본값은 true 입니다.

참고: 이 속성은 일부 운영 체제에서는 효과가 없을 수 있습니다. 예를 들어, macOS는 포트가 닫힐 때 항상 기본 직렬 포트 설정을 복원하는 것으로 보입니다.

이 열거형은 Qt 6.9에서 도입되었습니다.

액세스 함수:

bool settingsRestoredOnClose() const
void setSettingsRestoredOnClose(bool restore)

Notifier 신호:

void settingsRestoredOnCloseChanged(bool restore)

[bindable] stopBits : StopBits

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

이 속성은 프레임의 스톱 비트 수를 저장합니다.

설정이 성공하거나 포트를 열기 전에 설정된 경우, ` true`를 반환합니다. 그렇지 않은 경우 ` false `를 반환하고, ` QSerialPort::error ` 속성의 값에 접근하여 확인할 수 있는 오류 코드를 설정합니다.

참고: 포트 열기 전에 설정이 이루어진경우 , 포트 열기가 성공한 직후 QSerialPort::open() 메서드에서 실제 시리얼 포트 설정이 자동으로 수행됩니다.

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

액세스 함수:

QSerialPort::StopBits stopBits() const
bool setStopBits(QSerialPort::StopBits stopBits)

알림 신호:

void stopBitsChanged(QSerialPort::StopBits stopBits)

멤버 함수 설명서

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

지정된 parent 를 사용하여 새로운 시리얼 포트 객체를 생성합니다.

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

지정된 parent 을 사용하여, 지정된 헬퍼 클래스 serialPortInfo 로 표현되는 시리얼 포트를 나타내는 새로운 시리얼 포트 객체를 생성합니다.

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

지정된 ` parent `를 사용하여, 지정된 ` name`를 가진 시리얼 포트를 나타내는 새로운 시리얼 포트 객체를 생성합니다.

이름은 특정 형식을 따라야 합니다. 자세한 내용은 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의 상태(High 또는 Low)가 변경된 후에 발신됩니다. 라인 신호 DTR의 새로운 상태(High 또는 Low)는 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 를 반환하고 포트를 자동으로 닫습니다.

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

참고: 역사적인이유로 , 열기에 성공하면 errorOccurred() 신호가 NoError 오류 코드와 함께 발생합니다. 이 동작은 하위 호환성을 유지하기 위해 그대로 보존됩니다.

QIODeviceBase::OpenMode 및 setPort()도 참조하십시오 .

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

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

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

QSerialPort::parity도 참조하십시오 .

QSerialPort::PinoutSignals QSerialPort::pinoutSignals()

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

이 결과를 바탕으로, QSerialPort::PinoutSignals 에서 원하는 열거형 값을 마스크로 사용하여 "AND" 연산을 적용함으로써 원하는 신호의 상태를 추출할 수 있습니다.

참고: 이 메서드는 시스템 호출을 수행하므로 라인 신호 상태가 올바르게 반환됩니다. 이는 기본 운영 체제가 변경 사항에 대한 적절한 알림을 제공하지 못할 때 필요합니다.

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

QSerialPort::dataTerminalReady 및 QSerialPort::requestToSend항목도 참조하십시오 .

QString QSerialPort::portName() const

setPort() 함수를 통해 설정되었거나 QSerialPort 생성자에 전달된 이름을 반환합니다. 이 이름은 짧은 형태로, 즉 기기의 내부 변수 시스템 위치에서 추출되어 변환된 것입니다. 변환 알고리즘은 플랫폼에 따라 다릅니다:

플랫폼간략한 설명
Windows시스템 위치에서 접두사 "\\.\" 또는 "//./"를 제거하고 나머지 문자열을 반환합니다.
유닉스, 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(char *data, qint64 maxSize) 함수를 재구현합니다.

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

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

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

이 신호는 라인 신호 RTS의 상태(High 또는 Low)가 변경된 후에 발신됩니다. 라인 신호 RTS의 새로운 상태(High 또는 Low)는 set 로 전달됩니다.

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

QSerialPort::requestToSend항목도 참조하십시오 .

void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)

serialPortInfo 시리얼 포트 정보 인스턴스에 저장된 포트를 설정합니다.

portName() 및 QSerialPortInfo도 참조하십시오 .

void QSerialPort::setPortName(const QString &name)

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

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

참고: 이 함수를 사용하면 ` list of available ports`에 포함되지 않은 포트를 설정하거나, 이름 문자열을 사용하여 ` QSerialPortInfo ` 인스턴스를 생성했을 때 ` null ` 객체가 반환되는 포트를 설정할 수 있습니다. 이러한 조건이 필요하지 않은 경우, 이름이 유효한 ` QSerialPortInfo ` 객체를 반환하는지 확인한 후 대신 ` setPort()`를 사용하십시오.

portName() 및 QSerialPortInfo도 참조하십시오 .

void QSerialPort::setReadBufferSize(qint64 size)

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

버퍼 크기가 특정 크기로 제한된 경우, ` QSerialPort `는 이 크기 이상의 데이터를 버퍼링하지 않습니다. 버퍼 크기를 ` 0 `로 설정하는 특수한 경우, 읽기 버퍼에 제한이 없어 들어오는 모든 데이터가 버퍼링됩니다. 이것이 기본값입니다.

이 옵션은 데이터가 특정 시점에만 읽히는 경우(예: 실시간 스트리밍 애플리케이션)나, 시리얼 포트가 과도한 데이터 수신으로 인해 애플리케이션의 메모리가 부족해지는 것을 방지해야 하는 경우에 유용합니다.

음수 값을 전달하면 내부 버퍼가 비활성화되어 사실상 모든 읽기 작업이 차단됩니다.

readBufferSize() 및 read()도 참조하십시오 .

[since 6.10] void QSerialPort::setWriteBufferSize(qint64 size)

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

직렬 포트를 통한 데이터 전송은 상대적으로 느리기 때문에, 실제로는 write()가 호출되더라도 데이터가 즉시 전송되지는 않습니다. 데이터는 먼저 중간 버퍼에 저장된 후, 나중에 청크 단위로 기록됩니다.

따라서 데이터를 너무 많이 쓰거나, 기본 시리얼 포트가 처리할 수 있는 속도보다 빠르게 쓰면 내부 버퍼가 커질 수 있습니다. 이는 결국, 특히 메모리 자원이 부족한 장치에서 애플리케이션의 메모리 부족 현상을 유발할 수 있습니다.

이 메서드를 사용하면 내부 버퍼의 크기를 특정 크기로 제한할 수 있습니다. 다음 쓰기 시도가 버퍼 용량을 초과하면, ` write()` 메서드는 버퍼에 실제로 저장된 바이트 수를 반환합니다. ` bytesWritten()` 신호를 수신한 후, 또는 ` waitForBytesWritten()` 메서드가 ` true`를 반환한 후에 나머지 바이트에 대한 쓰기 시도를 반복하는 것은 사용자의 책임입니다.

이 메서드에 ` 0 `를 전달하면 쓰기 버퍼에 제한이 없으며, ` write()`에 전달된 모든 데이터가 버퍼에 저장됨을 의미합니다. 이것이 기본값입니다.

음수 값을 전달하면 0 를 전달한 것과 동일한 효과가 나타납니다.

이 함수는 Qt 6.10에서 도입되었습니다.

writeBufferSize() 및 write()도 참조하십시오 .

[signal, since 6.9] void QSerialPort::settingsRestoredOnCloseChanged(bool restore)

이 신호는 settingsRestoredOnClose 속성이 변경된 후 발생합니다. restore 매개변수에는 해당 속성의 새로운 값이 포함됩니다.

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

이 함수는 Qt 6.9에서 도입되었습니다.

QSerialPort::settingsRestoredOnClose도 참조하십시오 .

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

이 신호는 프레임의 스톱 비트 수가 변경된 후에 전송됩니다. 프레임의 새로운 스톱 비트 수는 ` stopBits`로 전달됩니다.

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

QSerialPort::stopBits도 참조하십시오 .

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

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

이 함수는 시리얼 포트에 최소 한 바이트가 쓰여지고 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()도 참조하십시오 .

[since 6.10] qint64 QSerialPort::writeBufferSize() const

내부 쓰기 버퍼의 크기를 반환합니다.

0 (기본값)의 쓰기 버퍼 크기는 버퍼에 크기 제한이 없음을 의미합니다.

이 함수는 Qt 6.10에서 도입되었습니다.

setWriteBufferSize() 및 write()도 참조하십시오 .

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

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

© 2026 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.