QSerialPort Class
Proporciona funciones para acceder a los puertos serie. Más...
| Cabecera: | #include <QSerialPort> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialPort)target_link_libraries(mytarget PRIVATE Qt6::SerialPort) |
| qmake: | QT += serialport |
| Hereda: | QIODevice |
Nota: Todas las funciones de esta clase son reentrantes.
Tipos Públicos
| 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 } |
Propiedades
|
|
Funciones públicas
| 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 |
Funciones públicas reimplementadas
| 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 |
Señales
| 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) |
Funciones protegidas reimplementadas
| 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 |
Descripción Detallada
Puede obtener información sobre los puertos serie disponibles utilizando la clase de ayuda QSerialPortInfo, que permite una enumeración de todos los puertos serie del sistema. Esto es útil para obtener el nombre correcto del puerto serie que desea utilizar. Puede pasar un objeto de la clase helper como argumento a los métodos setPort() o setPortName() para asignar el dispositivo serie deseado.
Después de configurar el puerto, puede abrirlo en modo de sólo lectura (r/o), sólo escritura (w/o), o lectura-escritura (r/w) utilizando el método open().
Nota: El puerto serie siempre se abre con acceso exclusivo (es decir, ningún otro proceso o hilo puede acceder a un puerto serie ya abierto).
Usa el método close() para cerrar el puerto y cancelar las operaciones de E/S.
Habiéndose abierto exitosamente, QSerialPort intenta determinar la configuración actual del puerto y se inicializa a si mismo. Puedes reconfigurar el puerto a la configuración deseada usando los métodos setBaudRate(), setDataBits(), setParity(), setStopBits(), y setFlowControl().
Hay un par de propiedades para trabajar con las señales pinout a saber: QSerialPort::dataTerminalReady, QSerialPort::requestToSend. También es posible utilizar el método pinoutSignals() para consultar el conjunto actual de señales pinout.
Una vez que sepas que los puertos están listos para leer o escribir, puedes utilizar los métodos read() o write(). Alternativamente también se pueden invocar los métodos de conveniencia readLine() y readAll(). Si no se leen todos los datos a la vez, los datos restantes estarán disponibles para mas tarde cuando los nuevos datos entrantes se añadan al buffer de lectura interno del QSerialPort. Puedes limitar el tamaño del buffer de lectura usando setReadBufferSize().
QSerialPort provee un conjunto de funciones que suspenden la llamada hasta que ciertas señales son emitidas. Estas funciones pueden ser usadas para implementar puertos serie de bloqueo:
- waitForReadyRead() bloquea llamadas hasta que nuevos datos estén disponibles para lectura.
- waitForBytesWritten() bloquea las llamadas hasta que una carga de datos ha sido escrita en el puerto serie.
Véase el siguiente ejemplo:
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; }
Si waitForReadyRead() devuelve false, la conexión se ha cerrado o se ha producido un error.
Si se produce un error en cualquier momento, QSerialPort emitirá la señal errorOccurred(). También puedes llamar a error() para encontrar el tipo de error que ocurrió por última vez.
Programar con un puerto serie bloqueante es radicalmente diferente a programar con un puerto serie no bloqueante. Un puerto serie bloqueante no requiere un bucle de eventos y típicamente conduce a un código más simple. Sin embargo, en una aplicación GUI, un puerto serie bloqueante sólo debería ser usado en hilos no-GUI, para evitar congelar la interfaz de usuario.
Para más detalles sobre estos enfoques, consulte las aplicaciones de ejemplo.
La clase QSerialPort también puede usarse con los operadores de flujo de QTextStream y QDataStream(operator<<() y operator>>()). Hay un problema a tener en cuenta, sin embargo: asegúrate de que hay suficientes datos disponibles antes de intentar leer usando el operador sobrecargado operator>>().
Véase también QSerialPortInfo.
Documentación de tipos de miembros
enum QSerialPort::BaudRate
Este enum describe la velocidad en baudios con la que funciona el dispositivo de comunicación.
Nota: Sólo las velocidades en baudios estándar más comunes se enumeran en este enum.
| Constante | Valor | Descripción |
|---|---|---|
QSerialPort::Baud1200 | 1200 | 1200 baudios. |
QSerialPort::Baud2400 | 2400 | 2400 baudios. |
QSerialPort::Baud4800 | 4800 | 4800 baudios. |
QSerialPort::Baud9600 | 9600 | 9600 baudios. |
QSerialPort::Baud19200 | 19200 | 19200 baudios. |
QSerialPort::Baud38400 | 38400 | 38400 baudios. |
QSerialPort::Baud57600 | 57600 | 57600 baudios. |
QSerialPort::Baud115200 | 115200 | 115200 baudios. |
Véase también QSerialPort::baudRate.
enum QSerialPort::DataBits
Este enum describe el número de bits de datos utilizados.
| Constante | Valor | Descripción |
|---|---|---|
QSerialPort::Data5 | 5 | El número de bits de datos en cada carácter es 5. Se utiliza para el código Baudot. Generalmente sólo tiene sentido con equipos antiguos como teleimpresoras. |
QSerialPort::Data6 | 6 | El número de bits de datos en cada carácter es 6. Se utiliza raramente. |
QSerialPort::Data7 | 7 | El número de bits de datos en cada carácter es 7. Se utiliza para ASCII verdadero. Generalmente sólo tiene sentido con equipos antiguos como las teleimpresoras. |
QSerialPort::Data8 | 8 | El número de bits de datos en cada carácter es 8. Se utiliza para la mayoría de tipos de datos, ya que este tamaño coincide con el de un byte. Su uso es casi universal en las aplicaciones más recientes. |
Véase también QSerialPort::dataBits.
enum QSerialPort::Dirección
flags QSerialPort::Direcciones
Este enum describe las posibles direcciones de la transmisión de datos.
Nota: Esta enumeración se usa para configurar la velocidad en baudios del dispositivo separadamente para cada dirección en algunos sistemas operativos (por ejemplo, POSIX-like).
| Constante | Valor | Descripción |
|---|---|---|
QSerialPort::Input | 1 | Dirección de entrada. |
QSerialPort::Output | 2 | Dirección de salida. |
QSerialPort::AllDirections | Input | Output | Simultáneamente en dos direcciones. |
El tipo Directions es un typedef para QFlags<Direction>. Almacena una combinación OR de valores de Dirección.
enum QSerialPort::FlowControl
Este enum describe el control de flujo utilizado.
| Constante | Valor | Descripción |
|---|---|---|
QSerialPort::NoFlowControl | 0 | Sin control de flujo. |
QSerialPort::HardwareControl | 1 | Control de flujo por hardware (RTS/CTS). |
QSerialPort::SoftwareControl | 2 | Control de flujo por software (XON/XOFF). |
Véase también QSerialPort::flowControl.
enum QSerialPort::Parity
Este enum describe el esquema de paridad utilizado.
| Constante | Valor | Descripción |
|---|---|---|
QSerialPort::NoParity | 0 | No se envía ningún bit de paridad. Esta es la configuración de paridad más común. La detección de errores es gestionada por el protocolo de comunicación. |
QSerialPort::EvenParity | 2 | El número de bits de 1 en cada carácter, incluido el bit de paridad, es siempre par. |
QSerialPort::OddParity | 3 | El número de bits de 1 en cada carácter, incluido el bit de paridad, es siempre impar. Garantiza que se produzca al menos una transición de estado en cada carácter. |
QSerialPort::SpaceParity | 4 | Paridad espacial. El bit de paridad se envía en la condición de señal de espacio. No proporciona información de detección de errores. |
QSerialPort::MarkParity | 5 | Paridad de marca. El bit de paridad se pone siempre en la condición de señal de marca (1 lógico). No proporciona información de detección de errores. |
Véase también QSerialPort::parity.
enum QSerialPort::PinoutSignal
flags QSerialPort::PinoutSignals
Este enum describe las posibles señales de pinout RS-232.
| Constante | Valor | Descripción |
|---|---|---|
QSerialPort::NoSignal | 0x00 | Ninguna línea activa |
QSerialPort::DataTerminalReadySignal | 0x04 | DTR (Terminal de datos listo). |
QSerialPort::DataCarrierDetectSignal | 0x08 | DCD (Detección de portadora de datos). |
QSerialPort::DataSetReadySignal | 0x10 | DSR (Data Set Ready). |
QSerialPort::RingIndicatorSignal | 0x20 | RNG (Ring Indicator). |
QSerialPort::RequestToSendSignal | 0x40 | RTS (solicitud de envío). |
QSerialPort::ClearToSendSignal | 0x80 | CTS (Despejar para enviar). |
QSerialPort::SecondaryTransmittedDataSignal | 0x100 | STD (Datos secundarios transmitidos). |
QSerialPort::SecondaryReceivedDataSignal | 0x200 | SRD (Datos secundarios recibidos). |
El tipo PinoutSignals es un typedef para QFlags<PinoutSignal>. Almacena una combinación OR de valores PinoutSignal.
Véase también pinoutSignals(), QSerialPort::dataTerminalReady, y QSerialPort::requestToSend.
enum QSerialPort::SerialPortError
Este enum describe los errores que puede contener la propiedad QSerialPort::error.
| Constante | Valor | Descripción |
|---|---|---|
QSerialPort::NoError | 0 | No se ha producido ningún error. |
QSerialPort::DeviceNotFoundError | 1 | Se ha producido un error al intentar abrir un dispositivo no existente. |
QSerialPort::PermissionError | 2 | Se ha producido un error al intentar abrir un dispositivo ya abierto por otro proceso o por un usuario que no tiene suficientes permisos y credenciales para abrirlo. |
QSerialPort::OpenError | 3 | Se ha producido un error al intentar abrir un dispositivo ya abierto en este objeto. |
QSerialPort::NotOpenError | 10 | Este error se produce cuando se ejecuta una operación que sólo puede realizarse con éxito si el dispositivo está abierto. Este valor se introdujo en QtSerialPort 5.2. |
QSerialPort::WriteError | 4 | Se ha producido un error de E/S al escribir los datos. |
QSerialPort::ReadError | 5 | Se ha producido un error de E/S al leer los datos. |
QSerialPort::ResourceError | 6 | Se ha producido un error de E/S cuando un recurso deja de estar disponible, por ejemplo, cuando el dispositivo se retira inesperadamente del sistema. |
QSerialPort::UnsupportedOperationError | 7 | La operación de dispositivo solicitada no está soportada o está prohibida por el sistema operativo en ejecución. |
QSerialPort::TimeoutError | 9 | Se ha producido un error de tiempo de espera. Este valor se introdujo en QtSerialPort 5.2. |
QSerialPort::UnknownError | 8 | Se ha producido un error no identificado. |
Véase también QSerialPort::error.
enum QSerialPort::StopBits
Este enum describe el número de bits de parada utilizados.
| Constante | Valor | Descripción |
|---|---|---|
QSerialPort::OneStop | 1 | 1 bit de parada. |
QSerialPort::OneAndHalfStop | 3 | 1.5 bits de parada. Sólo para la plataforma Windows. |
QSerialPort::TwoStop | 2 | 2 bits de parada. |
Véase también QSerialPort::stopBits.
Documentación de propiedades
baudRate : qint32
Esta propiedad contiene la velocidad de transmisión de datos para la dirección deseada.
Si la configuración se realiza correctamente o se establece antes de abrir el puerto, devuelve true; en caso contrario devuelve false y establece un código de error que puede obtenerse accediendo al valor de la propiedad QSerialPort::error. Para establecer la velocidad en baudios, utilice la enumeración QSerialPort::BaudRate o cualquier valor qint32 positivo.
Nota: Si la configuración se establece antes de abrir el puerto, la configuración real del puerto serie se realiza automáticamente en el método QSerialPort::open() justo después de que la apertura del puerto tenga éxito.
Advertencia: Establecer la bandera AllDirections es soportado en todas las plataformas. Windows sólo soporta este modo.
Advertencia: Devuelve igual velocidad en baudios en cualquier dirección en Windows.
El valor por defecto es Baud9600, es decir, 9600 bits por segundo.
Funciones de acceso:
| qint32 | baudRate(QSerialPort::Directions directions = AllDirections) const |
| bool | setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections) |
Señal de notificador:
| void | baudRateChanged(qint32 baudRate, QSerialPort::Directions directions) |
[bindable] breakEnabled : bool
Nota: Esta propiedad admite enlaces QProperty.
Esta propiedad mantiene el estado de la línea de transmisión en break
Devuelve true en caso de éxito, false en caso contrario. Si la bandera es true entonces la línea de transmisión está en estado de ruptura; en caso contrario está en estado de no ruptura.
Nota: El puerto serie tiene que estar abierto antes de intentar establecer u obtener esta propiedad; en caso contrario devuelve false y establece el código de error NotOpenError. Esto es un poco inusual en comparación con la configuración regular de propiedades Qt de una clase. Sin embargo, este es un caso de uso especial ya que la propiedad se establece a través de la interacción con el kernel y el hardware. Por lo tanto, los dos escenarios no se pueden comparar completamente entre sí.
Funciones de acceso:
| bool | isBreakEnabled() const |
| bool | setBreakEnabled(bool set = true) |
Señal de notificador:
| void | breakEnabledChanged(bool set) |
[bindable] dataBits : DataBits
Nota: Esta propiedad admite enlaces QProperty.
Esta propiedad contiene los bits de datos de una trama
Si la configuración es correcta o se establece antes de abrir el puerto, devuelve true; en caso contrario devuelve false y establece un código de error que puede obtenerse accediendo al valor de la propiedad QSerialPort::error.
Nota: Si la configuración se establece antes de abrir el puerto, la configuración real del puerto serie se realiza automáticamente en el método QSerialPort::open() justo después de que la apertura del puerto tenga éxito.
El valor por defecto es Data8, es decir, 8 bits de datos.
Funciones de acceso:
| QSerialPort::DataBits | dataBits() const |
| bool | setDataBits(QSerialPort::DataBits dataBits) |
Señal notificadora:
| void | dataBitsChanged(QSerialPort::DataBits dataBits) |
dataTerminalReady : bool
Esta propiedad contiene el estado (alto o bajo) de la señal de línea DTR
Devuelve true en caso de éxito, false en caso contrario. Si la bandera es true entonces la señal DTR se pone en alto; en caso contrario en bajo.
Nota: El puerto serie tiene que estar abierto antes de intentar establecer u obtener esta propiedad; en caso contrario se devuelve false y el código de error se establece en NotOpenError.
Funciones de acceso:
| bool | isDataTerminalReady() |
| bool | setDataTerminalReady(bool set) |
Señal de notificador:
| void | dataTerminalReadyChanged(bool set) |
Véase también pinoutSignals().
[bindable read-only] error : SerialPortError
Nota: Esta propiedad soporta QProperty bindings.
Esta propiedad contiene el estado de error del puerto serie
El estado del dispositivo de E/S devuelve un código de error. Por ejemplo, si open() devuelve false, o una operación de lectura/escritura devuelve -1, esta propiedad puede utilizarse para averiguar la razón por la que falló la operación.
El código de error se establece en el valor por defecto QSerialPort::NoError después de una llamada a clearError()
Funciones de acceso:
| QSerialPort::SerialPortError | error() const |
| void | clearError() |
Señal de notificador:
| void | errorOccurred(QSerialPort::SerialPortError error) |
[bindable] flowControl : FlowControl
Nota: Esta propiedad soporta QProperty bindings.
Esta propiedad contiene el modo de control de flujo deseado
Si la configuración es correcta o se establece antes de abrir el puerto, devuelve true; en caso contrario devuelve false y establece un código de error que puede obtenerse accediendo al valor de la propiedad QSerialPort::error.
Nota: Si la configuración se establece antes de abrir el puerto, la configuración real del puerto serie se realiza automáticamente en el método QSerialPort::open() justo después de que la apertura del puerto tenga éxito.
El valor por defecto es NoFlowControl, es decir, sin control de flujo.
Funciones de acceso:
| QSerialPort::FlowControl | flowControl() const |
| bool | setFlowControl(QSerialPort::FlowControl flowControl) |
Señal notificadora:
| void | flowControlChanged(QSerialPort::FlowControl flow) |
[bindable] parity : Parity
Nota: Esta propiedad soporta enlaces QProperty.
Esta propiedad contiene el modo de comprobación de paridad
Si la configuración es correcta o se establece antes de abrir el puerto, devuelve true; en caso contrario devuelve false y establece un código de error que puede obtenerse accediendo al valor de la propiedad QSerialPort::error.
Nota: Si la configuración se establece antes de abrir el puerto, la configuración real del puerto serie se realiza automáticamente en el método QSerialPort::open() justo después de que la apertura del puerto tenga éxito.
El valor por defecto es NoParity, es decir, sin paridad.
Atención: Algunos sistemas operativos UNIX (por ejemplo, macOS) no soportan la bandera CMSPAR. En estos sistemas, no es posible establecer la paridad Mark or Space.
Funciones de acceso:
| QSerialPort::Parity | parity() const |
| bool | setParity(QSerialPort::Parity parity) |
Señal de notificador:
| void | parityChanged(QSerialPort::Parity parity) |
requestToSend : bool
Esta propiedad contiene el estado (alto o bajo) de la señal de línea RTS
Devuelve true en caso de éxito, false en caso contrario. Si la bandera es true entonces la señal RTS se pone en alto; si no, en bajo.
Nota: El puerto serie tiene que estar abierto antes de intentar establecer u obtener esta propiedad; de lo contrario se devuelve false y el código de error se establece en NotOpenError.
Nota: Un intento de controlar la señal RTS en el modo HardwareControl fallará con el código de error UnsupportedOperationError, porque la señal es controlada automáticamente por el controlador.
Funciones de acceso:
| bool | isRequestToSend() |
| bool | setRequestToSend(bool set) |
Señal notificadora:
| void | requestToSendChanged(bool set) |
Véase también pinoutSignals().
[since 6.9] settingsRestoredOnClose : bool
Esta propiedad define si los parámetros del puerto deben ser restaurados al cerrarse o no
Después de abrir el puerto, la clase almacena en caché sus parámetros antes de aplicar los parámetros definidos por el usuario.
Si la propiedad es true, el puerto serie intenta restaurar los parámetros almacenados en caché antes de cerrar el puerto; en caso contrario, los parámetros almacenados en caché se descartan.
El valor por defecto es true.
Nota: Esta propiedad puede no tener efecto en algunos sistemas operativos. Por ejemplo, macOS parece restaurar siempre la configuración por defecto del puerto serie cuando se cierra el puerto.
Esta propiedad se introdujo en Qt 6.9.
Funciones de acceso:
| bool | settingsRestoredOnClose() const |
| void | setSettingsRestoredOnClose(bool restore) |
Señal de notificador:
| void | settingsRestoredOnCloseChanged(bool restore) |
[bindable] stopBits : StopBits
Nota: Esta propiedad soporta QProperty bindings.
Esta propiedad contiene el número de bits de parada en una trama.
Si la configuración es correcta o se establece antes de abrir el puerto, devuelve true; en caso contrario devuelve false y establece un código de error que puede obtenerse accediendo al valor de la propiedad QSerialPort::error.
Nota: Si la configuración se establece antes de abrir el puerto, la configuración real del puerto serie se realiza automáticamente en el método QSerialPort::open() justo después de que la apertura del puerto tenga éxito.
El valor por defecto es OneStop, es decir, 1 bit de parada.
Funciones de acceso:
| QSerialPort::StopBits | stopBits() const |
| bool | setStopBits(QSerialPort::StopBits stopBits) |
Notificador de señal:
| void | stopBitsChanged(QSerialPort::StopBits stopBits) |
Documentación de la función miembro
[explicit] QSerialPort::QSerialPort(QObject *parent = nullptr)
Construye un nuevo objeto de puerto serie con la dirección parent.
[explicit] QSerialPort::QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr)
Construye un nuevo objeto de puerto serie con el parent dado para representar el puerto serie con la clase de ayuda especificada serialPortInfo.
[explicit] QSerialPort::QSerialPort(const QString &name, QObject *parent = nullptr)
Construye un nuevo objeto puerto serie con el parent dado para representar el puerto serie con el name especificado.
El nombre debe tener un formato específico; véase el método setPort().
[virtual noexcept] QSerialPort::~QSerialPort()
Cierra el puerto serie, si es necesario, y luego destruye el objeto.
[signal] void QSerialPort::baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)
Esta señal se emite después de cambiar la velocidad en baudios. La nueva tasa de baudios se pasa como baudRate y las direcciones como directions.
Nota: Señal notificadora para la propiedad baudRate.
Véase también QSerialPort::baudRate.
[override virtual] qint64 QSerialPort::bytesAvailable() const
Reimplementa: QIODevice::bytesAvailable() const.
Devuelve el número de bytes entrantes que están esperando ser leídos.
Véase también bytesToWrite() y read().
[override virtual] qint64 QSerialPort::bytesToWrite() const
Reimplementa: QIODevice::bytesToWrite() const.
Devuelve el número de bytes que están esperando a ser escritos. Los bytes se escriben cuando el control vuelve al bucle de eventos o cuando se llama a flush().
Véase también bytesAvailable() y flush().
[override virtual] bool QSerialPort::canReadLine() const
Reimplementa: QIODevice::canReadLine() const.
Devuelve true si se puede leer una línea de datos del puerto serie; en caso contrario devuelve false.
Véase también readLine().
bool QSerialPort::clear(QSerialPort::Directions directions = AllDirections)
Descarta todos los caracteres del búfer de salida o de entrada, dependiendo de las direcciones dadas directions. Esto incluye borrar los buffers internos de clase y los buffers UART (driver). También termina las operaciones de lectura o escritura pendientes. Si tiene éxito, devuelve true; en caso contrario devuelve false.
Nota: El puerto serie tiene que estar abierto antes de intentar borrar cualquier dato almacenado en el buffer; de lo contrario devuelve false y establece el código de error NotOpenError.
[override virtual] void QSerialPort::close()
Reimplementa: QIODevice::close().
Nota: El puerto serie tiene que estar abierto antes de intentar cerrarlo; de lo contrario, establece el código de error NotOpenError.
Véase también QIODevice::close().
[signal] void QSerialPort::dataBitsChanged(QSerialPort::DataBits dataBits)
Esta señal se emite después de cambiar los bits de datos de una trama. Los nuevos bits de datos de una trama se pasan como dataBits.
Nota: Señal notificadora de la propiedad dataBits.
Véase también QSerialPort::dataBits.
[signal] void QSerialPort::dataTerminalReadyChanged(bool set)
Esta señal se emite después de cambiar el estado (alto o bajo) de la señal de línea DTR. El nuevo estado (alto o bajo) de la señal de línea DTR se pasa como set.
Nota: Señal notificadora de la propiedad dataTerminalReady.
Véase también QSerialPort::dataTerminalReady.
[signal] void QSerialPort::errorOccurred(QSerialPort::SerialPortError error)
Esta señal se emite cuando se produce un error en el puerto serie. El error especificado describe el tipo de error que se ha producido.
Nota: Señal notificadora de la propiedad error.
Véase también QSerialPort::error.
[signal] void QSerialPort::flowControlChanged(QSerialPort::FlowControl flow)
Esta señal se emite después de cambiar el modo de control de flujo. El nuevo modo de control de flujo se pasa como flow.
Nota: Señal notificadora de la propiedad flowControl.
Véase también QSerialPort::flowControl.
bool QSerialPort::flush()
Esta función escribe tanto como sea posible desde el búfer de escritura interno al puerto serie subyacente sin bloquearse. Si se ha escrito algún dato, esta función devuelve true; en caso contrario devuelve false.
Llame a esta función para enviar los datos almacenados inmediatamente al puerto serie. El número de bytes escritos con éxito depende del sistema operativo. En la mayoría de los casos, esta función no necesita ser llamada, porque la clase QSerialPort comenzará a enviar los datos automáticamente una vez que el control es devuelto al bucle de eventos. En ausencia de un bucle de eventos, llame a waitForBytesWritten() en su lugar.
Nota: El puerto serie tiene que estar abierto antes de intentar vaciar cualquier dato almacenado en el buffer; de lo contrario devuelve false y establece el código de error NotOpenError.
Véase también write() y waitForBytesWritten().
QSerialPort::Handle QSerialPort::handle() const
Si la plataforma está soportada y el puerto serie está abierto, devuelve el manejador nativo del puerto serie; en caso contrario devuelve -1.
Advertencia: Esta función es sólo para uso experto; utilícela bajo su propia responsabilidad. Además, esta función no promete compatibilidad entre versiones menores de Qt.
[override virtual] bool QSerialPort::isSequential() const
Reimplementa: QIODevice::isSequential() const.
Devuelve siempre true. El puerto serie es un dispositivo secuencial.
[override virtual] bool QSerialPort::open(QIODeviceBase::OpenMode mode)
Reimplementa: QIODevice::open(QIODeviceBase::OpenMode mode).
Abre el puerto serie utilizando OpenMode mode, y devuelve true si tiene éxito; en caso contrario devuelve false y establece un código de error que puede obtenerse llamando al método error().
Si se abre el puerto, pero falla la configuración de los parámetros de puerto deseados, el método devuelve false y cierra el puerto automáticamente.
Atención: El mode tiene que ser QIODeviceBase::ReadOnly, QIODeviceBase::WriteOnly, o QIODeviceBase::ReadWrite. No se admiten otros modos.
Nota: Debido a razones históricas, tras una apertura exitosa se emite la señal errorOccurred() con el código de error NoError. Este comportamiento se conserva para mantener la compatibilidad con versiones anteriores.
Véase también QIODeviceBase::OpenMode y setPort().
[signal] void QSerialPort::parityChanged(QSerialPort::Parity parity)
Esta señal se emite después de cambiar el modo de comprobación de paridad. El nuevo modo de comprobación de paridad se pasa como parity.
Nota: Señal notificadora para la propiedad parity.
Véase también QSerialPort::parity.
QSerialPort::PinoutSignals QSerialPort::pinoutSignals()
Devuelve el estado de las señales de línea en un formato de mapa de bits.
A partir de este resultado, es posible asignar el estado de la señal deseada aplicando una máscara "AND", donde la máscara es el valor de enumeración deseado de QSerialPort::PinoutSignals.
Nota: Este método realiza una llamada al sistema, asegurando así que los estados de las señales de línea se devuelven correctamente. Esto es necesario cuando los sistemas operativos subyacentes no pueden proporcionar notificaciones adecuadas sobre los cambios.
Nota: El puerto serie tiene que estar abierto antes de intentar obtener las señales de pinout; de lo contrario devuelve NoSignal y establece el código de error NotOpenError.
Véase también QSerialPort::dataTerminalReady y QSerialPort::requestToSend.
QString QSerialPort::portName() const
Devuelve el nombre establecido por setPort() o pasado al constructor QSerialPort. Este nombre es corto, es decir, se extrae y convierte a partir de la ubicación del sistema de variables interno del dispositivo. El algoritmo de conversión es específico de cada plataforma:
| Plataforma | Breve descripción |
|---|---|
| Windows | Elimina el prefijo "\\.\" o "//./" de la ubicación del sistema y devuelve el resto de la cadena. |
| Unix, BSD | Elimina el prefijo "/dev/" de la ubicación del sistema y devuelve el resto de la cadena. |
Véase también setPortName(), setPort() y QSerialPortInfo::portName().
qint64 QSerialPort::readBufferSize() const
Devuelve el tamaño del búfer de lectura interno. Esto limita la cantidad de datos que el cliente puede recibir antes de llamar a los métodos read() o readAll().
Un tamaño de búfer de lectura de 0 (el valor predeterminado) significa que el búfer no tiene límite de tamaño, lo que garantiza que no se pierda ningún dato.
Véase también setReadBufferSize() y read().
[override virtual protected] qint64 QSerialPort::readData(char *data, qint64 maxSize)
Reimplementa: QIODevice::readData(char *data, qint64 maxSize).
[override virtual protected] qint64 QSerialPort::readLineData(char *data, qint64 maxSize)
Reimplementa: QIODevice::readLineData(char *data, qint64 maxSize).
[signal] void QSerialPort::requestToSendChanged(bool set)
Esta señal se emite después de cambiar el estado (alto o bajo) de la señal de línea RTS. El nuevo estado (alto o bajo) de la señal de línea RTS se pasa como set.
Nota: Señal notificadora de la propiedad requestToSend.
Véase también QSerialPort::requestToSend.
void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)
Establece el puerto almacenado en la instancia de información del puerto serie serialPortInfo.
Véase también portName() y QSerialPortInfo.
void QSerialPort::setPortName(const QString &name)
Establece el name del puerto serie.
El nombre del puerto serie se puede pasar como un nombre corto o como la ubicación larga del sistema si es necesario.
Véase también portName() y QSerialPortInfo.
void QSerialPort::setReadBufferSize(qint64 size)
Establece el tamaño del búfer de lectura interno de QSerialPort en size bytes.
Si el tamaño del búfer está limitado a un cierto tamaño, QSerialPort no almacenará más datos que ese tamaño. El caso especial de un tamaño de búfer de 0 significa que el búfer de lectura es ilimitado y todos los datos entrantes se almacenan en el búfer. Esta es la opción por defecto.
Esta opción es útil si los datos sólo se leen en determinados momentos (por ejemplo, en una aplicación de streaming en tiempo real) o si el puerto serie debe ser protegido contra la recepción de demasiados datos, lo que eventualmente puede causar que la aplicación se quede sin memoria.
Véase también readBufferSize() y read().
[since 6.10] void QSerialPort::setWriteBufferSize(qint64 size)
Establece el tamaño del búfer de escritura interno de QSerialPort en size bytes.
El envío de datos a través del puerto serie es relativamente lento, por lo que en la práctica, cuando se llama a write(), los datos no se envían inmediatamente. Primero se almacenan en un búfer intermedio y después se escriben en trozos.
Por lo tanto, un intento de escribir demasiados datos o escribir datos a una velocidad superior a la que el puerto serie subyacente puede manejar, puede llevar a una situación en la que el buffer interno crezca. Esto puede eventualmente causar que la aplicación se quede sin memoria, especialmente en un dispositivo con pocos recursos de memoria.
Este método permite limitar el buffer interno a un tamaño determinado. Si el siguiente intento de escritura excede la capacidad del buffer, el método write() devolverá la cantidad de bytes que realmente se almacenaron en el buffer. Es responsabilidad del usuario repetir el intento de escritura con el resto de los bytes después de recibir la señal bytesWritten(), o después de que el método waitForBytesWritten() devuelva true.
Pasar 0 a este método significa que el búfer de entrada no está limitado, y todos los datos entrantes se almacenan en el búfer. Este es el valor por defecto.
Esta función se introdujo en Qt 6.10.
Véase también writeBufferSize() y write().
[signal, since 6.9] void QSerialPort::settingsRestoredOnCloseChanged(bool restore)
Esta señal se emite después de cambiar la propiedad settingsRestoredOnClose. El parámetro restore contiene el nuevo valor de la propiedad.
Nota: Señal notificadora para la propiedad settingsRestoredOnClose.
Esta función se introdujo en Qt 6.9.
Véase también QSerialPort::settingsRestoredOnClose.
[signal] void QSerialPort::stopBitsChanged(QSerialPort::StopBits stopBits)
Esta señal se emite después de cambiar el número de bits de parada de una trama. El nuevo número de bits de parada en una trama se pasa como stopBits.
Nota: Señal notificadora de la propiedad stopBits.
Véase también QSerialPort::stopBits.
[override virtual] bool QSerialPort::waitForBytesWritten(int msecs = 30000)
Reimplementa: QIODevice::waitForBytesWritten(int msecs).
Esta función se bloquea hasta que se ha escrito al menos un byte en el puerto serie y se ha emitido la señal bytesWritten(). La función expirará después de msecs milisegundos; el tiempo por defecto es de 30000 milisegundos. Si msecs es -1, esta función no expirará.
La función devuelve true si se emite la señal bytesWritten(); en caso contrario, devuelve false (si se ha producido un error o si la operación ha expirado).
[override virtual] bool QSerialPort::waitForReadyRead(int msecs = 30000)
Reimplementa: QIODevice::waitForReadyRead(int msecs).
Esta función se bloquea hasta que hay nuevos datos disponibles para lectura y se ha emitido la señal readyRead(). La función expirará después de msecs milisegundos; el tiempo de espera por defecto es de 30000 milisegundos. Si msecs es -1, esta función no expirará.
La función devuelve true si se emite la señal readyRead() y hay nuevos datos disponibles para leer; en caso contrario, devuelve false (si se ha producido un error o la operación ha expirado).
Véase también waitForBytesWritten().
[since 6.10] qint64 QSerialPort::writeBufferSize() const
Devuelve el tamaño del búfer interno de escritura.
Un tamaño de búfer de escritura de 0 (por defecto) significa que el búfer no tiene límite de tamaño.
Esta función se introdujo en Qt 6.10.
Véase también setWriteBufferSize() y write().
[override virtual protected] qint64 QSerialPort::writeData(const char *data, qint64 maxSize)
Reimplementa: 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.