#include "my_qserial.h"
my_qserial::my_qserial(QObject *parent) : QObject(parent)
{
my_thread = new QThread();
show_func_id();
show_slots_id();
port = new QSerialPort();
init_port();
this->moveToThread(my_thread);
port->moveToThread(my_thread);//串口也进去
my_thread->start();//开启多线程
qDebug() << "in main thread";
}
void my_qserial::show_func_id()
{
qDebug() << "func_id is:" << QThread::currentThreadId();
}
void my_qserial::show_slots_id()
{
qDebug() << "slots_id is:" << QThread::currentThreadId();
show_func_id();
}
void my_qserial::init_port()
{
port->setPortName("COM1");
port->setBaudRate(9600);
port->setDataBits(QSerialPort::Data8);
port->setParity(QSerialPort::NoParity);
port->setStopBits(QSerialPort::OneStop);
port->setFlowControl(QSerialPort::NoFlowControl);
if(port->open(QIODevice::ReadWrite))
{
qDebug() << "Port have been opened";
}
else
{
qDebug() << "open it failed";
}
connect(this->port,SIGNAL(readyRead()),this,SLOT(handle_data()),Qt::DirectConnection);
}
void my_qserial::handle_data()
{
QByteArray data = port->readAll();
qDebug() << "data received:" << data;
qDebug() << "handling thread is:" << QThread::currentThreadId();
}
void my_qserial::write_data()
{
qDebug() << "write_id is:" << QThread::currentThreadId();
port->write("data",4);
//emit(thread_sig());
}
没有合适的资源?快使用搜索试试~ 我知道了~
QSerialport多线程方法
共8个文件
cpp:3个
h:2个
pro:1个
需积分: 3 7 下载量 157 浏览量
2024-01-08
10:37:10
上传
评论 1
收藏 4KB 7Z 举报
温馨提示
QSerialport多线程方法 使用Qt也已经有一段时间了,虽然使用过继承QThread重写run函数,以及继承QObject然后使用MoveToThread两种方法实现多线程,但是在QSerialPort的使用过程中,两种方法都存在一定的问题。 典型的问题: QObject: Cannot create children for a parent that is in a different thread. QObject::startTimer: Timers cannot be started from another thread 原因:在主线程中创建了QSerialPort对象在子线程中调用,或者在子线程中创建然后在主线程中调用了。 对于继承QThread重写run函数的情况,往往容易在run外部定义QSerialport *port = new QSerialport()对象,然后在run中调用port->readAll()等函数,然而根据QThread的特性,只有run函数才运行在新的子线程中,所以这里就跨线程调用了 QSerialport对象,会出现上述报错。
资源推荐
资源详情
资源评论
收起资源包目录
untitled1.7z (8个子文件)
mainwindow.h 447B
my_qserial.h 718B
mainwindow.cpp 970B
main.cpp 183B
mainwindow.ui 1KB
my_qserial.cpp 2KB
untitled1.pro 1KB
untitled1.pro.user 22KB
共 8 条
- 1
资源评论
我不是程序猿儿
- 粉丝: 1855
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
- (源码)基于计算机系统原理与Arduino技术的学习平台.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功