bool QSerialPortPrivate::waitForBytesWritten(int msecs) { Q_Q(QSerialPort); if (writeBuffer.isEmpty()) return false; QElapsedTimer stopWatch; stopWatch.start(); forever { bool timedOut = false; HANDLE triggeredEvent = 0; if (!waitAnyEvent(timeoutValue(msecs, stopWatch.elapsed()), &timedOut, &triggeredEvent) || !triggeredEvent) { if (!timedOut) q->setError(decodeSystemError()); return false; } if (triggeredEvent == communicationOverlapped.hEvent) { _q_completeAsyncRead(); } else if (triggeredEvent == readCompletionOverlapped.hEvent) { _q_completeAsyncRead(); } else if (triggeredEvent == writeCompletionOverlapped.hEvent) { _q_completeAsyncWrite(); return error == QSerialPort::NoError; } else { return false; } } return false; }
bool QSerialPortPrivate::waitForReadyRead(int msecs) { Q_Q(QSerialPort); QElapsedTimer stopWatch; stopWatch.start(); const qint64 initialReadBufferSize = readBuffer.size(); qint64 currentReadBufferSize = initialReadBufferSize; do { bool timedOut = false; HANDLE triggeredEvent = 0; if (!waitAnyEvent(timeoutValue(msecs, stopWatch.elapsed()), &timedOut, &triggeredEvent) || !triggeredEvent) { // This is occur timeout or another error if (!timedOut) q->setError(decodeSystemError()); return false; } if (triggeredEvent == communicationOverlapped.hEvent) { _q_completeAsyncCommunication(); } else if (triggeredEvent == readCompletionOverlapped.hEvent) { _q_completeAsyncRead(); if (qint64(readBuffer.size()) != currentReadBufferSize) currentReadBufferSize = readBuffer.size(); else if (initialReadBufferSize != currentReadBufferSize) return true; } else if (triggeredEvent == writeCompletionOverlapped.hEvent) { _q_completeAsyncWrite(); } else { return false; } } while (msecs == -1 || timeoutValue(msecs, stopWatch.elapsed()) > 0); return false; }
void WVConfigDlg::writeCfg( const QString & group ) { cfg->setString( group, WV_PRODUCT, productEdit->text() ); cfg->setString( group, WV_HOMEPAGE, homeEdit->text() ); cfg->setString( group, WV_COUNTRY, countryEdit->text() ); cfg->setString( group, WV_PHONE, phoneEdit->text() ); cfg->setString( group, WV_USERNAME, userEdit->text() ); cfg->setString( group, WV_PASSWORD, passwdEdit->text() ); if (!timeout()) { cfg->setInt( "Dialer Defaults", WV_IDLE_SECONDS, 0 ); } else { cfg->setInt( "Dialer Defaults", WV_IDLE_SECONDS, timeoutValue() ); } expertDlg->writeConfig( group, cfg ); }