QT5串列埠程式設計 執行緒迴圈傳送不成功問題

2021-10-05 10:57:57 字數 1949 閱讀 1262

今天想寫乙個qt5的串列埠程式設計,能夠迴圈傳送資料,想具體到us級別,不需要設定ms傳送。所以想用乙個執行緒一直傳送。

if(!serial.waitforbyteswritten())   //這一句很關鍵,決定是否能傳送成功

程式介面:

測試效果:我這裡測試用了虛擬串列埠(vspd)虛擬了兩個串列埠來測試:效果如圖:

話不多說,直接貼**。

首先是mainwindow.h

#ifndef mainwindow_h

#define mainwindow_h

#include #include #include #include qt_begin_namespace

namespace ui

qt_end_namespace

class mainwindow : public qmainwindow

;#endif // mainwindow_h

然後是mainwindow.cpp

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include #include #include #include mainwindow::mainwindow(qwidget *parent)

: qmainwindow(parent)

, ui(new ui::mainwindow)

mainwindow::~mainwindow()

// 串列埠讀取資料函式

void mainwindow:: serial_read()

// buf.clear();

qbytearray recv;

recv = serial.readall();

qstring recv_string = recv;

qdebug() << recv_stringclear();

}void mainwindow::on_serialsenddatabutton_clicked()

// qthread::msleep(100);

};qdebug()<

}void mainwindow::on_looppushbutton_clicked()

else

}void mainwindow::on_seribalcheckbutton_clicked()

if(ui->serialnumbercomb->currentindex() != -1)

}void mainwindow::on_serialopenbutton_clicked()

setallstate(false);

ui->serialnumbercomb->setenabled(false);

ui->serialopenbutton->settext(qstring("關閉串列埠"));}}

else

}}void mainwindow::setallstate(bool state)

else

}void mainwindow::fillportsparameters()

void mainwindow::on_sendtextedit_textchanged()

else

}

再然後是 main.cpp

#include "mainwindow.h"

QT5串列埠通訊

在qt5之前,要實現串列埠通訊,需要借助第三方串列埠封裝 qt5已經自帶了類來完成這項工作。如下 1.在pro檔案中新增 qt serialport 引入標頭檔案 include qtserialport qserialport include qtserialport qserialportinf...

QT5串列埠編寫

首先,qt5是自帶qserialport這個類的,使用時需要在pro檔案裡面新增一行 qt serialport 然後直接引用標頭檔案就可以使用了。include includeqserialport 提供訪問串列埠的功能 qserialportinfo 提供系統中存在的串列埠的資訊 接下來需要建立...

Qt5串列埠傳送 接收中文資料問題

本文主要介紹qt5中串列埠傳送和接收中文資料的處理辦法,只給出關鍵 void serial send ascii qstring str 注意 網上的例子都是serial write str.tolatin1 這樣傳送中文是會亂碼的,經過探索後需要使用serial write str.tolocal...