Qt5.4文档翻译:QSerialPort类,QSerialPort Class
提供 了一些用来访问串 行端 口的函数。 详细说明……
头文件: |
#include <QSerialPort> |
qmake指令: |
QT += serialport |
自此版本开始引入: |
Qt 5.1 |
继承: |
注意 : 这个类中的所有函数都是 可重入的 。
提供了一些用来访问串行端口的函数。
妳可以使用 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 。
这个枚举,说明的是,与之通信的设备工作的波特率。
注意 : 此枚举中只列举了最常见的标准波特率。
常量 |
值 |
说明 |
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 |
未知波特。这个值已经废弃。之所以还保留着它,只是为了让旧的代码正常工作。强烈建议,不要再在新的代码中使用这个了。 |
http://www.kanunu8.com/book3/7781/170787.html
http://www.568ok.com/a/lizhiqingchun/2014/0401/147.html
Your opinions
HxLauncher: Launch Android applications by voice commands