qt 多线程的串口通讯 如何在收到反馈帧后,再发送下一帧内容?
在qt中用多线程的方式实现了一个串口的简单收发程序.
单独的收与发,测试都没什么问题.
通过信号槽的方式将要发送的多条帧,连接到串口线程的发送,可以实现连续的发送操作.
但是如果希望在发送一次得到反馈帧后,再发送一下帧的内容该如何实现?
// 发送数据给下位机
void SerialObj::sendData(QString sendData)
{
//while(send_flag == false);
send_flag = false;
// 发送数据帧
m_serialPort->write(sendData.toUtf8());
}
原先以为能在串口线程内,发送用send_flag 标记位堵塞,接收到需要的帧后解锁.实际情况只是单纯的卡死在while.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
C++ 和 QT 都 10 年没用了,不熟,给个思路。
sendData
如果会在一次处理周期(发送并等待响应)中被调用多次,应该加队列进行排序处理。