qt怎么接收post数据_QT 串口编程收发数据时,怎么样才能不卡UI

我想用QSerialport、QThread实现,在子线程里:run(){serial->init();connect(serial,&QSerialPort::readReady,this,&readData);serial->write(data);//data为查询指令exec();}//slotre...

我想用QSerialport、QThread实现, 在子线程里:

run()

{

serial->init();

connect(serial, &QSerialPort::readReady, this, &readData);

serial->write(data); //data为查询指令

exec();

}

//slot

readData()

{

buf = serial->readAll();

emit receiveData(buf); //提交信号给主线程UI显示数据

sleep(1); //数据响应隔一秒再次查询

serial->write(data);

}

主要是想每隔一秒收一次指令,但是程序运行后,发现在通讯过程中,UI会卡住,查看资料后才知道SLOT也是在主线程里运行的,在SLOT里用sleep就是主线程sleep。那我该怎么实现我想要的效果。

我是新手,请给个明白一点的思路。

我自己用QTimer定时发送就不会卡UI了

run()

{

serial->init();

connect(serial, &QSerialPort::readReady, this, &readData);

QTimer *timer = new QTimer();

connect( timer, SIGNAL(timeout()), this, SLOT(writeData()) );

timer->start(1000);

exec();

}

//slot

writeData()

{

serial->write(data);

}

//slot

readData()

{

buf = serial->readAll();

emit receiveData(buf); //提交信号给主线程UI显示数据

}

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值