/****************************************************************************
**
** Copyright (C) 2013 Laszlo Papp <lpapp@kde.org>
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \example creadersync
    \title Command Line Reader Sync Example
    \ingroup qtserialport-examples
    \brief Shows how to receive data synchronously over serial port.

    \e{Command Line Reader Sync} shows how to use the QSerialPort class
    for receiving data synchronously over the selected serial port with the
    desired settings.

    \image creadersync-example.png

    This command line reader sync example receives data synchronously over the
    selected serial port in a console, provided by the QSerialPort class.

    For receiving data synchronously over the selected serial port, use the
    \l{QSerialPort::read()}{read()} or \l{QSerialPort::readAll()}{readAll()},
    and \l{QIODevice::waitForReadyRead()}{waitForReadyRead()} methods.

    \include examples-run.qdocinc
*/
