我有一个使用QSerialPort的应用程序,我的程序最后做的就是调用我的closePort函数,如下所示:
//Closes the port when we're done with it
void SerialCommSession::closePort()
{
connected = false;
if(m_port.isOpen())
{
qDebug() << "closing port";
m_port.close();
}
}
一些时间它工作正常,程序再次启动没有任何问题。但也许有75%的时间,当我再次尝试运行程序时,它无法打开端口,返回错误代码2. QSerialPort.close()需要多长时间才能执行?我怎样才能确保它完成?
答案 0 :(得分:1)
将 <target name="build" description="generate files with grunt">
<exec executable="cmd" dir="./" failonerror="true">
<arg value="/C" />
<arg value="npm"/>
<arg value="config"/>
<arg value="set"/>
<arg value="proxy"/>
<arg value="http://my_Address/"/>
<arg value="--global"/>
</exec>
<echo message="Installing Deps ..." />
<exec executable="cmd" dir="./" failonerror="true">
<arg value="/C" />
<arg value="npm"/>
<arg value="install"/>
</exec>
<echo message="generate files..." />
<exec executable="cmd" dir="./" failonerror="true">
<arg value="/C" />
<arg value=".\node_modules\.bin\grunt" />
</exec>
<echo message="Done" />
</target>
功能设为插槽并将其连接到QCoreApplication::aboutToQuit
:
closePort
当事件循环退出时,在应用程序退出之前,将调用您的插槽。确保您已包含connect(qApp, &QCoreApplication::aboutToQuit, someCommSessionPointer, &SerialCommSession::closePort)
或其某个派生类,以便<QCoreApplication>
宏能够正常工作。
同时强>
QSerialPort.close()需要多长时间才能执行?我怎样才能确保它完成?
同一个线程中的插槽是同步调用的,因此在控制返回应用程序之前,它可能需要多长时间。在您的广告位返回之前,应用程序不会退出。