QT序列槽程式設計用到QSerialPort類與QSerialPortInfo類。
-QSerialPort:提供通路序列槽的功能 ,讀寫操作是通過該類來實作的。
-QSerialPortInfo:提供系統中存在的序列槽的資訊,一般用于查詢目前連接配接的序列槽資訊。
QSerialPort類
使用方法
步驟1,在pro 檔案中加
QT += serialport
步驟2,在頭檔案.h中加入
#include <QtSerialPort/QSerialPort>
如果有用到QSerialPortInfo類,同理加頭檔案 #include <QtSerialPort/QSerialPortInfo>
步驟3,定義一個對象并且執行個體化
QSerialPort *serial = new QSerialPort;
步驟4,對序列槽的名稱、波特率、資料位、校驗位、停止位等參數進行設定
例如:
serial->setPortName(name); //設定序列槽名
serial->open(QIODevice::ReadWrite); //打開序列槽
serial->setBaudRate(BaudRate); //設定波特率
serial->setDataBits(QSerialPort::Data8); //設定資料位數
serial->setParity(QSerialPort::NoParity); //設定奇偶校驗
serial->setStopBits(QSerialPort::OneStop); //設定停止位
serial->setFlowControl(QSerialPort::NoFlowControl); //設定流控制
這裡設定了序列槽名為name,打開序列槽并設定為可讀可寫,波特率為BaudRate,資料位為8位,沒有奇偶校驗位,停止位為1位,沒有流控制。
步驟5,可以進行讀寫操作
讀操作:當序列槽可讀時,會發出readyRead()的信号,需要用到槽
connect(serial,SIGNAL(readyRead()),this,SLOT(Read_Data()));
void MainWindow::Read_Data()
{
QByteArray buf;
buf = serial->readAll();
}
寫操作
serial->write(data);
可以通過傳回值來确定成功寫入/讀出的位元組數大小。
QSerialPortInfo類
用QSerialPortInfo類查找可用的序列槽的代碼實作
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
{
QSerialPort serial;
serial.setPort(info);
if(serial.open(QIODevice::ReadWrite))
{
ui->PortBox->addItem(serial.portName()); //這裡用一個QCombox裝住
serial.close();
}
}