中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

itop4412開發板Qt串口編程實現串口功能

發布時間:2021-07-09 16:10:37 來源:億速云 閱讀:258 作者:chen 欄目:互聯網科技

這篇文章主要講解了“itop4412開發板Qt串口編程實現串口功能”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“itop4412開發板Qt串口編程實現串口功能”吧!

1.編輯工程文件(后綴為 .pro 的文件)在 QT += core gui 后添加 serialport。
itop4412開發板Qt串口編程實現串口功能
2.自動獲取串口

使用 QSerialPortInfo:::availablePorts()獲取當前串口,該函數返回容器類 Qlist<QSerialPortInfo>,用 Qt 定
義的關鍵字 foreach 遍歷容器 Qlist 里的串口信息,并將串口信息放到 QStringList 的類對象 serialNamePort,
顯示到 ui 的串口組件。
{
{
ui->setupUi(this);
QStringList serialNamePort;
//遍歷:availablePorts()返回的串口信息
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){
serialNamePort << info.portName();
}
ui->serialCb->addItems(serialNamePort);
}
編譯后點擊串口選擇框,會出現已經連接的串口。


itop4412開發板Qt串口編程實現串口功能

3.打開串口功能和屬性設置
步驟一:實例化串口類 QSerialPort 對象 serialPort,對串口的操作就是對 serialPort 對象的操作,調用
QSerialPort 封裝的成員變量(屬性)和成員函數(功能)就能控制串口。
class Example : public QMainWindow
{
public:
.......... QSerialPort * serialPort;
.......... };
ui(new Ui::Example)
{
ui->setupUi(this);
......

serialPort = new QSerialPort;
...... }
步驟二:填充波特率,數據位,停止位,校驗位等屬性。獲取 ui 組件傳遞過來的串口信息,將串口屬
性填充到 serialPort 對象。


itop4412開發板Qt串口編程實現串口功能

步驟三:打開串口,判斷是否打開成功。
/*打開按鈕*/
void Example::on_openCb_clicked()
{
QSerialPort::BaudRate bauRate; //波特率
QSerialPort::DataBits dataBits; //數據位
QSerialPort::StopBits stopBits; //停止位
QSerialPort::Parity checkBits; //校驗位
//設置波特率
if (ui->baudCb->currentText() == "4800" ) { bauRate = QSerialPort::Baud4800; }
else if(ui->baudCb->currentText() == "9600" ) { bauRate = QSerialPort::Baud9600; }
else if(ui->baudCb->currentText() == "115200") { bauRate = QSerialPort::Baud115200;}
//設置數據位
if (ui->dataCb->currentText() == "5") { dataBits = QSerialPort::Data5;}
else if(ui->dataCb->currentText() == "6") { dataBits = QSerialPort::Data6;}
else if(ui->dataCb->currentText() == "7") { dataBits = QSerialPort::Data7;}

else if(ui->dataCb->currentText() == "8") { dataBits = QSerialPort::Data8;}
//設置停止位
if (ui->stopCb->currentText() == "1" ) { stopBits = QSerialPort::OneStop; }
else if(ui->stopCb->currentText() == "1.5" ) { stopBits = QSerialPort::OneAndHalfStop; }
else if(ui->stopCb->currentText() == "2" ) { stopBits = QSerialPort::TwoStop; }
//設置校驗位
if(ui->checkCb->currentText() == "none" ) { checkBits = QSerialPort::NoParity; }
//填充串口對象的屬性值
serialPort->setPortName(ui->serialCb->currentText());
serialPort->setBaudRate(bauRate);
serialPort->setDataBits(dataBits);
serialPort->setStopBits(stopBits);
serialPort->setParity(checkBits);
//設置好屬性后打開串口
if(serialPort->open(QIODevice::ReadWrite) == true){
QMessageBox::information(this,"提示","成功");
}else{
QMessageBox::critical(this,"提示","失敗");
}
}
4.收發串口數據功能
讀數據:每當數據流從串口到達系統一次,就會傳到 Qt 應用程序一次,readyRead 信號就會觸 發 一
次,所以可以用前面章節講的信號和槽機制將 readyRead 信號和槽函數綁定,然后就可以在槽函數中讀取
串口數據。槽函數中使用 readAll()讀取數據,使用帶換行功能的 appendPlainText()顯示到 ui 的接收窗口。
//類中聲明槽函數
private slots:
void serialPortReadyRead_Solt(void);
//readyRead 信號和槽函數綁定
connect(serialPort,SIGNAL(readyRead()),this,SLOT(serialPortReadyRead_Solt()));
//讀串口

void Example::serialPortReadyRead_Solt(void)
{
QString buf;
buf = QString(serilaPort->readAll());
ui->recvEdit->appendPlainText(buf);
}
寫數據:獲取 ui 界面填寫的信息,ui->sendEdit->text(),使用 QSerialPort 的成員函數 write 將數據寫到
串口。
void Widget::on_sendBt_clicked()
{
serilaPort->write(ui->sendEdit->text().toLocal8Bit().data());
}
5.關閉串口功能
使用 QSerialPort 的成員函數 close()關閉串口。
void Widget::on_closeBt_clicked()
{
serilaPort->close();
}
6.清空發送欄數據
調用 ui 組件 lineEdit 的成員函數 clear 即可清空數據。
void Widget::on_clearBt_clicked()
{
ui->recvEdit->clear();
}
編譯測試,結果如圖:


itop4412開發板Qt串口編程實現串口功能
<

感謝各位的閱讀,以上就是“itop4412開發板Qt串口編程實現串口功能”的內容了,經過本文的學習后,相信大家對itop4412開發板Qt串口編程實現串口功能這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

启东市| 固阳县| 南陵县| 会同县| 彰化县| 镇安县| 凤山县| 仙居县| 沿河| 太康县| 历史| 东乡县| 临潭县| 响水县| 泉州市| 阳山县| 井研县| 乌拉特中旗| 抚顺市| 富源县| 敦煌市| 朝阳区| 海阳市| 廉江市| 仙桃市| 漳平市| 前郭尔| 阜康市| 蕲春县| 柳林县| 玛沁县| 宁乡县| 文化| 都昌县| 永嘉县| 营口市| 察哈| 宁德市| 伊吾县| 黄浦区| 新和县|