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

2021-09-23 01:55:27 字數 1702 閱讀 3299

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 qserialport();

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

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 include inc...

QT例項 實現串列埠通訊

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

串列埠通訊 多執行緒簡單例項

rs 232串列埠 include reg52.h typedef unsigned char uint8 typedef unsigned int uint16 sbit s2 p2 1 sbit en p2 5 uint8 arg uint8 counter 0 void init void 微...