Qt下實現多執行緒的串列埠通訊

2021-09-02 19:08:16 字數 1417 閱讀 5983

qt下無論是rs232、rs422、rs485的串列埠通訊都可以使用統一的編碼實現。本文把每路串列埠的通訊各放在乙個執行緒中,使用movetothread的方式實現。

用serialport類實現串列埠功能,widget類呼叫串列埠。

serialport.h如下

#include #include #include #include #include #include #include #include class serialport : public qobject

;

serailport.cpp如下

#include "serialport.h"

serialport::serialport(qobject *parent) : qobject(parent)

serialport::~serialport()

void serialport::init_port()

else

connect(port, signal(readyread()), this, slot(handle_data()), qt::queuedconnection); //qt::directconnection

}void serialport::handle_data()

void serialport::write_data()

widget.h的呼叫**

#include "serialport.h"

public slots:

void on_receive(qbytearray tmpdata);

private:

serialport *local_serial;

widget.cpp呼叫**

//建構函式中

local_serial = new serialport();

connect(ui->pushbutton, signal(clicked()), local_serial, slot(write_data()),qt::queuedconnection);

connect(local_serial, signal(receive_data(qbytearray)), this, slot(on_receive(qbytearray)), qt::queuedconnection);

//on_receive槽函式

void widget::on_receive(qbytearray tmpdata)

本文例子實現的串口號是 /dev/ttys1(對應windows系統是com1口),波特率38400,資料位8,停止位1,無校驗位的串列埠通訊。當然,使用串列埠程式前,需要在.pro檔案中新增 qt += serialport,把串列埠模組加入程式。

Qt下實現多執行緒串列埠通訊

qt下無論是 rs232 rs422 rs485 的串列埠通訊都可以使用統一的編碼實現。本文把每路串列埠的通訊各放在乙個執行緒中,使用 movetothread 的方式實現。用 serialport 類實現串列埠功能,widget 類呼叫串列埠。serialport.h如下 include incl...

QT例項 實現串列埠通訊

在專案的.pro檔案中新增 qt serialport 引入相關標頭檔案 include include 要進行串列埠通訊,第一步一定是搜尋可用串列埠咯,可參考下列例項,搜尋當前可用串列埠並將其輸出到乙個qcombobox上。void widget on btn work renew sperial...

QT下的多執行緒

一.多執行緒的使用 繼承qthread類,重寫protected void run 函式,則此run函式即為多執行緒將執行的函式,ui類組合此類,呼叫start 函式即開啟此執行緒,並執行run函式 h class test1 public qthread cpp void test1 run vo...