在qt中用多线程的方式实现了一个串口的简单收发程序.
单独的收与发,测试都没什么问题.
通过信号槽的方式将要发送的多条帧,连接到串口线程的发送,可以实现连续的发送操作.
但是如果希望在发送一次得到反馈帧后,再发送一下帧的内容该如何实现?
// 发送数据给下位机
void SerialObj::sendData(QString sendData)
{
//while(send_flag == false);
send_flag = false;
// 发送数据帧
m_serialPort->write(sendData.toUtf8());
}
原先以为能在串口线程内,发送用send_flag 标记位堵塞,接收到需要的帧后解锁.实际情况只是单纯的卡死在while.
C++ 和 QT 都 10 年没用了,不熟,给个思路。
sendData
如果会在一次处理周期(发送并等待响应)中被调用多次,应该加队列进行排序处理。