#include "serialport.h"#include "Configuration.h"#include "global.h"#include <QDebug>#include <QThread>SerialPort::SerialPort(){    isRun = true;    thalPort(){    if (serial){                    
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-11-04 04:44:14
                            
                                1059阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            多线程+串口读数据
 
[serial.cpp]
#include <qapplication.h>
#include <qmainwindow.h>   
#include "mainwindow.h"
int main(int argc, char *argv[])
{
  &            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                            精选
                                                        
                            2010-08-26 11:08:43
                            
                                10000+阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            简述Qt下无论是RS232、RS422、RS485的串口通信都可以使用统一的编码实现。本文把每路串口的通信各放在一个线程中            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2022-06-13 17:40:55
                            
                                2155阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            相信许多初学Qt的同学都会和我一样遇到这样的问题:更新于2019-06-15: 感谢sleikang的评论,因为在serverThread的线程函数中调用了exec(),就算client退出后,该线程也将一直处于事件循环中,不会退出。只需要在退出时,调用quit()函数就好了。 还有就是一点,此例子也只是仅供参考,因为在实际中为每一个连接去建立一个线程还是比较“奢侈”的事情。本身这里只需要将新接入            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-17 21:59:48
                            
                                227阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            简述
Qt下无论是RS232、RS422、RS485的串口通信都可以使用统一的编码实现。本文把每路串口的通信各放在一个线程中,使用movetoThread的方式实现。
代码之路
用SerialPort类实现串口功能,Widget类调用串口。serialport.h如下
 1 #include <QObject>
 2 #include <QSerialPort>
 3 #            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2021-06-09 15:48:00
                            
                                3549阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            首先,先说明为什么要使用多线程来控制串口收发信息。我们知道在Winform和WPF内,界面线程是主线程,如果你在主线程控制串口收发信息的话,会导致页面假死,给客户不良好的使用体验,因此多线程控制串口通信是为优化客户使用体验而生的。在微软官方提供的类库里,有很多方法可以实现这一操作,在这篇博文中,我主要介绍使用AutoResetEvent来实现这一操作。当然我后续的博文里我也会提供使用Task相关类            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-23 12:53:37
                            
                                183阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、典型的问题:在我们的多线程编程中,一般主线程负责界面的刷新显示,而子线程负责一些耗时的操作,例如当我们使用QSerialPort的时候,我们希望QSerialPort的读写操作在子线程中进行。QObject: Cannot create children for a parent that is in a different thread.那么如果在主线程中创建QSerialPort对象,通过            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-10 13:52:30
                            
                                479阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、基础知识1、多线性的优点:提高应用程序的相应速度。通常情况下,应用程序都在一个线程中执行,当调用一个耗时操作时,用户界面会冻结。多线程可以解决这个问题。使得多CPU系统更加有效。当线程不超过CPU数目时,操作系统可以调度不同的系统运行在不同的CPU上。改善程序结构,一个既长又复杂的进程可以分成多个线程。2、多线程的特点:多线程的行为无法预测,当多次执行上述应用程序时,每一次运行的结果可能不同。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-13 19:59:52
                            
                                229阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Qt 是一种基于 C++ 的跨平台 GUI 系统,能够提供给用户构造图形用户界面的强大功能。为了满足用户构造复杂图形界面系统的需求,Qt 提供了丰富的多线程编程支持。Qt 主要从三个方面对多线程编程提供支持:一、构造了一些基本的与平台无关的线程类;二、提交用户自定义事件的 Thread-safe 方式;三、多种线程间同步机制,如信号量,全局锁。 1、QThread              
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-15 22:42:15
                            
                                89阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            QT通过三种形式提供了对线程的支持。它们分别是,一、平台无关的线程类,二、线程安全的事件投递,三、跨线程的信号-槽连接。这使得开发轻巧的多线程Qt程序更为容易,并能充分利用多处理器机器的优势。多线程编程也是一个有用的模式,它用于解决执行较长时间的操作而不至于用户界面失去响应。在Qt的早期版本中,在构建库时有不选择线程支持的选项,从4.0开始,线程总是有效的。
线程类
Qt 包含下面一些            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                            精选
                                                        
                            2012-05-01 20:39:24
                            
                                773阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            贴上两篇博文
一、http://www.cnblogs.com/findumars/p/5031239.html
            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-02-22 15:30:30
                            
                                651阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            写一个线程类,继承QThread//workthread.h#ifndef WORKTHREAD_H#define WORKTHREAD_H#include class WorkThread : public QThread{    Q_OBJECTpublic:    WorkThread();protected:    //重写run函数,业务逻辑写在该函数中            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-12-08 11:37:46
                            
                                2026阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Qt线程类   Qt 包含下面一些线程相关的类:QThread 提供了开始一个新线程的方法QThreadStorage 提供逐线程数据存储QMutex   提供相互排斥的锁,或互斥量QMutexLocker 是一个便利类,它可以自动对QMutex 加锁与解锁QReadWriterLock 提供了一个可以同时读操作的锁QReadLocker 与QWriteLocker 是便利类,            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2010-11-11 00:12:00
                            
                                696阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Qt中线程安全的类有QMutex,QMutexLocker,QReadWriteLock,QReadLocker,QWriteLocker,QSemaphore(信号量),QThreadStorage,QW            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-05-12 17:38:32
                            
                                122阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            问题解决,可以通过信号和槽来解决。在qt子线程里确实不能访问主窗口的某些部件,不过可以通过信号和槽来完成这个任务。生成子线程的时候,先将主线程和子线程关联,在子线程任务完成之后给主线发送信号,让主线来完成最后的处理            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2019-08-04 02:23:00
                            
                                129阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            1. 概述    通常情况下,应用程序都是在一个线程中执行操作。但是,当调用一个耗时操作(例如,大批量I/O或大量矩阵变换等CPU密集操作)时,用户界面常常会冻结,而使用多线程可以解决这一问题2. 优势(1) 提高应用程序的响应速度。这对于开发图形界面尤为重要,当一个操作耗时很长时,整个系统都会等待这个操作,程序就不能响应键盘、鼠标、菜单等操作,二使用多线程可将耗时长的操作置于            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-21 17:25:01
                            
                                137阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            文章目录Qt 四种多线程QThread: 底层API。带有可选的事件循环QThreadPool和QRunnable:复用线程Qt Concurrent: 高级APIWorkerScript: QML中的线程线程安全和可重入示例有助于理解 Qt 提供了对线程的支持,包括一组与平台无关的线程类,一个线程安全的发送事件和跨线程的信号-槽关联。 通常有四种方式来实现多线程Qt程序。Qt 四种多线程QTh            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-13 22:23:10
                            
                                170阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            七、信号与槽的连接方式本节介绍信号与槽的五种连接方式:Qt::DirectConnection(); //立即调用
Qt::QueuedConnection(); //异步调用
Qt::BlockingQueuedConnection(); //同步调用
Qt::AutoConnection(); //默认连接
Qt::UniqueConnection(); //单一连接connection()函            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-12 14:05:35
                            
                                184阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Qt线程基本概念并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其他线程处于挂起状态。虽然看起来所有线程都是一起执行的,但是其实每个时间只有一个线程在执行,这种方式我们成为并发。并行当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-08 10:27:28
                            
                                676阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Qt 多线程的信号传递  1. QObject::connect(const QObject * sender, const char * signal, 
2. const QObject * receiver, const char * method, 
3. Qt::ConnectionType type = AutoConnection);  信号,若想要把信号传递给另外一个线程下运行的类            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-29 17:29:22
                            
                                46阅读