Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #3
0
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 );
}