qt中线程问题

Muscle_Mliu 2016-05-07 07:25:11
最近做了一个项目 利用QT做了一个打电话,接电话的界面。对于接电话我的思路是开辟一个线程去监听。目前问题就是这个线程只能用一次,就是说接一次或者挂一次电话就下次就不行了。我是不是该创建多线程呢? 比如接通一次电话后就释放这个线程,然后重新创建一个线程去监听? 下面贴上我的代码,请大神帮我改改,我还是个小白。(接电话是用的sim900这个模块)


这个是在主类中建立的信号和槽:

MyThread::MyThread(QObject *parent) :
QThread(parent)
{
flag=false;
}

void MyThread::run()
{
char reply[100];
while(1)
{
memset(reply,0,sizeof(reply));
read(fd,reply,sizeof(reply));
if(strstr(reply,"RING"))
{
if(!flag)
{
emit get_ring();
flag=true;
}
}
}
}


当串口检测到“来电”的时候发送一个信号

maininterface.cpp:

// 关联线程中的信号和本类中的槽
connect(&thread, SIGNAL(get_ring()),
this, SLOT(answer_ring()));

//然后调用我的接电话界面
void Maininterface::answer_ring()
{
ringdlg.exec();
}


getring.cpp
这个是我接电话挂电话的cpp


void GetRing::on_answer_clicked()
{
char buff[10];
memset(buff,0,sizeof(buff));
strcat(buff,"ata\r");
write(fd,buff,sizeof(buff));
}

void GetRing::on_hangup_clicked()
{
char buff[10];
memset(buff,0,sizeof(buff));
strcat(buff,"ath\r");
write(fd,buff,sizeof(buff));
}



上面是我产生只能实现一次接电话的代码,大家看看有什么问题没?还有就是我给的解决方法大家看能实现么? qt线程也不是很懂,好多都是现学现卖的,请帮忙!谢谢
...全文
163 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3,423

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧