StupidBeauty
Read times:2089Posted at: - no title specified

Qt5.4文档翻译:QSerialPort,QSerialPort Class

提供 了一些用来访问串 行端 口的函数。 详细说明……

头文件:

#include <QSerialPort>

qmake指令

QT += serialport

自此版本开始引入:

Qt 5.1

继承

QIODevice .

注意 这个类中的所有函数都是 可重入的

详细说明

提供了一些用来访问串行端口的函数。

妳可以使用 QSerialPortInfo 辅助 类来获取到系统中可用的所有串行端口的信息,通过 那个类可枚举出系统中所有的串行端口。利用 这个,可以获取到妳想要使用的串行端口的正确名字。 妳可以将这个辅助类的 一个对象作为参数传递给 setPort ()或 setPortName ()函数,以指定正确的串行设备。

设置 了端口之后,就可以使用 open ()方法,以只读(r/o)、 只写 (w/o)或读写(r/w)模式来打开它了。

注意 串行端口一定是以排它式访问模式打开的(也就是说,其它的进程或线程都无法访问到一个已经打开的串行端口)

如果成功打开 了,则, QSerialPort 会尝试确定该端口的当前配置信息,并且初始化自身。 妳可以使用 setBaudRate ()、 setDataBits ()、 setParity ()、 setStopBits ()和 setFlowControl ()方法来重新将该端口配置成想要的状态。

有两个属性,可用来与管线信号打交道: QSerialPort::dataTerminalReady QSerialPort::requestToSend 还可以使用 pinoutSignals ()方法 来查询当前 已设置的管线信号。

一旦妳得知对应的端口已经准备好可以读或写了,那么,就可以使用 read ()或 write ()方法了。或者, 也可以使用 readLine ()和 readAll ()两个便利方法。 如果没有一次性将所有数据读取,则, 当有新的数据被追加到 QSerialPort 的内部读取缓存时,妳仍然可以顺便读取到剩余的数据。 妳可以使用 setReadBufferSize ()来限制读取缓存的尺寸。

使用 close ()方法 来关闭端口,并且取消输入/输出操作。

参考以下示例:

int numRead = 0, numReadTotal = 0;

char buffer[50];

forever {

numRead  = serial.read(buffer, 50);

// 对该数组进行处理

numReadTotal += numRead;

if (numRead == 0 && !serial.waitForReadyRead())

break;

}

如果 waitForReadyRead() 返回 假(false),则表明,该连接已经被关闭,或者出现了某个错误。

针对一个阻塞的串行端口进行编程,跟针对一个非阻塞的串行端口进行编程,是完全不同的。阻塞的串行端口,并不需要妳有一个事件循环,因而写起代码来更简单。然而,在图形界面的程序中,只能在非图形界面的线程中使用阻塞的串行端口,以避免用户界面假死。

欲知关于两种实现方式 更多细节 ,则参考 示例 程序。

QSerialPort 类也可与 QTextStream QDataStream 的流式操作符(operator<<() operator>>())来配套使用。但是, 有一个问题,需要注意: 在尝试使用重载的operator>>()操作符进行读取之前,请确保缓存中已有足够多的数据存在了。

参考 QSerialPortInfo

成员类型文档

enum QSerialPort::​BaudRate

这个枚举,说明的是,与之通信的设备工作的波特率。

注意 此枚举中只列举了最常见的标准波特率。

常量

说明

QSerialPort::Baud1200

1200

1200 波特

QSerialPort::Baud2400

2400

2400 波特

QSerialPort::Baud4800

4800

4800 波特

QSerialPort::Baud9600

9600

9600 波特

QSerialPort::Baud19200

19200

19200 波特

QSerialPort::Baud38400

38400

38400 波特

QSerialPort::Baud57600

57600

57600 波特

QSerialPort::Baud115200

115200

115200 波特

QSerialPort::UnknownBaud

-1

未知波特。这个值已经废弃。之所以还保留着它,只是为了让旧的代码正常工作。强烈建议,不要再在新的代码中使用这个了。

参考 QSerialPort::baudRate

http://www.kanunu8.com/book3/7781/170787.html

http://www.568ok.com/a/lizhiqingchun/2014/0401/147.html

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands