标题:子线程中要如何使用串口读写数据?
作者:celerylxq
日期:2015-09-02 16:30
内容:
希望在主线程中创建多个子线程,在各个子线程中进行串口数据收发及解析,发现在子线程中创建串口对象,总是不响应串口消息,readData()中打断点怎么都进不去,跪求大侠指点!
代码如下:
主线程中创建子线程:
QMyThread *MyThread = new QMyThread;
MyThread->start();
子线程中创建串口对象:
void QMyThread::run()
{
m_MyConn = new MyConnect(this,&(pRtuObj->m_strCommType),&(pRtuObj->m_sListSerialPara),&(pRtuObj->m_sListNetPara));
m_MyConn->openCommu();
m_MyConn->moveToThread(this);
}
打开串口:
//通信连接
void [color=#80008 ..
#1 [yuyu414 09-15 08:53]
为什么要这么做呢,就算用多线程,每次收发也只能同时只有一个线程可以,比较好的方法是要么主线程收发,然后数据传到子线程处理,要么专门一个子线程收发,其他线程处理数据
#2 [无心徘徊 10-11 18:56]
一个子线程收数据, 主线程发数据。 打开串口时再创建子线程,把串口指针传递到子线程, 而不是在子线程中打开、关闭串口。 这不是子线程该干的事。
#3 [yanwuyue 10-11 22:18]
qt的串口是线程不安全的,不能在同一个串口上多个线程操作
#4 [无心徘徊 10-12 08:25]
我从来不用QT提供的硬件编程接口, 基本的,我都是用windows API, 用最低层的东西; 虽然麻烦,但有性能。
#5 回 无心徘徊 的帖子 [nigoole 10-19 18:22]
无心徘徊:我从来不用QT提供的硬件编程接口, 基本的,我都是用windows API, 用最低层的东西; 虽然麻烦,但有性能。 (2015-10-12 08:25)