English | Deutsch | Русский | Polski | Nederlands | Português | Español | Українською | فارسی | عربي | 한국어 | Suomi | Català | Italiano | 日本語 | Français | Magyar | ಕನ್ನಡ | हिन्दी | ภาษาไทย | 简体中文 | Български
Table of Content
QtSerialPort
Примечание: Эта страница в стадии разработки, требует пересмотра.
Новости
Заполнить
26.02.2013 – Проект перемещен из песочницы в основную ветвь Qt5!
Краткое описание
Модуль QtSerialPort – это дополнение к библиотеке Qt5, которое предоставляет единый интерфейс для работы как аппаратными, так и с виртуальными последовательными портами.
Примечание: Также добавлена поддержка и библиотеки Qt4.
Последовательный интерфейс благодаря своей простоте и надежности до сих пор популярен в промышленности, при разработке встраиваемых устройств, робототехнике и т.п.
Использование модуля QtSerialPort позволяет разработчикам значительно сократить время на реализацию Qt-приложений, требующих доступ к последовательным интерфейсам.
История
Модуль QtSerialPort берет свое начало из библиотеки QSerialDevice [gitorious.org] (ветка 2.0), которая недавно была перемещена в репозиторий на https://codereview.qt-project.org/
Это было сделано в надежде на более открытую и свободную разработку, а также на помощь сообщества, которое заинтересовано в развитии данного модуля.
Функциональность
В настоящее время API модуля содержит два класса SerialPort и SerialPortInfo.
SerialPort
Класс SerialPort является основным классом модуля и предоставляет набор основных методов и свойств для доступа к ресурсам последовательных портов.
Поддерживает следующие операционные системы:
| Операционная система | Поддержка | Примечание |
|---|---|---|
| Windows NT/2K/XP/Vista/7 | ДА | Полная поддержка |
| Windows CE | ДА | Тестировалось только на 5 и 6 платформах в эмуляторе |
| Gnu/Linux | ДА | Полная поддержка |
| MacOSX | ДА | Полная поддержка |
| Другие Unix | ДА | Все POSIX совместимые |
| Symbian1 | ДА | Частично, тестировалось только в эмуляторе (*) |
1 Для OS Symbian разработка модуля приостановлена в связи с отсутствием разработчиков, а также с тем фактом, что Nokia отказалась от этой платформы и не будет включать ее поддержку в Qt5._
SerialPortInfo
Класс SerialPortInfo является вспомогательным. Он позволяет получить информацию о имеющихся в системе последовательных портах.
Поддерживает следующие операционные системы:
| Операционная система | Поддержка | Примечание |
|---|---|---|
| Windows NT/2K/XP/Vista/7 | ДА | Полная поддержка (с использованием SetupAPI) |
| Windows CE | ДА | Тестировалось только на 5 и 6 платформах в эмуляторе |
| Gnu/Linux | ДА | Полная поддержка (с использованием libudev или простой перебор в /dev) |
| MacOSX | ДА | Полная поддержка |
| Другие Unix | ДА | Все POSIX совместимые (только простой перебор в /dev) |
| Symbian2 | ДА | Частично, тестировалось только в эмуляторе (*) |
2 Для OS Symbian разработка модуля приостановлена в связи с отсутствием разработчиков, а также с тем фактом, что Nokia отказалась от этой платформы и не будет включать ее поддержку в Qt5._
Просмотр исходного кода
Недавно запущено публичное зеркало репозитория проекта на Gitorious [qt.gitorious.org]
Теперь каждый желающий может свободно и оперативно через WEB браузер просмотреть последние изменения в исходном коде проекта.
Получение исходного кода
Для пользователей
Для получения текущего снимка исходного кода репозитория в виде архива достаточно из WEB браузера перейти по этой [qt.gitorious.org] ссылке, загрузка начнется автоматически.
Для желающих использовать Git можно выполнить следующую команду:
- git clone git://gitorious.org/qt/qtserialport.git
Для разработчиков
Получить исходный код и внести свой вклад в разработку могут только зарегистрированные в Gerrit разработчики, используя Git (настройка Gerrit [wiki.qt-project.org]).
Получить исходный код можно так:
- git clone ssh://<username>@codereview.qt-project.org:29418/qt/qtserialport.git
где username – логин зарегистрированного в Gerrit пользователя
Сборка и установка
Примечание: При сборке лучше использовать “теневую сборку”, когда для результатов сборки используется отдельная директория. Это позволяет оставить директорию с исходными кодами в нетронутом виде, не засоренную продуктами сборки.
Перед сборкой необходимо:
- установить Perl3
- убедиться что корректно настроены переменные окружения:
- правильно указаны пути к установленной Qt4/Qt5
- правильно указаны пути к используемым компиляторам
- правильно указаны пути к Perl3
- предварительно создать директорию для сборки которая находится на том же уровне, что и директория с исходными кодами
- /
- |- /serialport-src
- |- /serialport-build
3 Perl необходим только в случае использования Qt5, подробнее см. тут [qt-project.org]. При использовании Qt4 просто пропустите этот пункт.
Ниже приведены рекомендуемые процедуры сборки библиотеки для Qt4/Qt5.
- cd serialport-build
- qmake ../serialport-src/qtserialport.pro
- make [или 'nmake' для MSVC компилятора, или 'mingw32-make' для MinGW компилятора]
- make install [или 'nmake install' для MSVC компилятора, или 'mingw32-make install' для MinGW компилятора]
Примечание: В *nix системах для установки возможно потребуются права суперпользователя:
- sudo make install
Использование
При использовании библиотеки необходимо ее подключить в *.pro файл пользовательского проекта, это действие для Qt4 и Qt5 немного отличается:
Qt4
- CONFIG += serialport
Qt5
- QT += serialport
Подключение заголовочных файлов от QtSerialPort в пользовательский проект для Qt4 и Qt5 одинаковое:
- ...
- #include <QtSerialPort/QSerialPort>
- #include <QtSerialPort/QSerialPortInfo>
- ...
Простой пример
Ниже представлен простейший пример реализации main.cpp:
- #include <QtCore/QCoreApplication>
- #include <QtCore/QDebug>
- #include <QtSerialPort/QSerialPort>
- #include <QtSerialPort/QSerialPortInfo>
- QT_USE_NAMESPACE
- int main(int argc, char *argv[])
- {
- // Example use SerialPortInfo
- foreach (const SerialPortInfo &info, SerialPortInfo::availablePorts()) {
- qDebug() << "Name : " << info.portName();
- qDebug() << "Description : " << info.description();
- qDebug() << "Manufacturer: " << info.manufacturer();
- // Example use SerialPort
- SerialPort serial;
- serial.setPort(info);
- serial.close();
- }
- return a.exec();
- }
Генерация документации
Нет необходимости в сборке документации, потому что текущий снимок документации находится тут [doc-snapshot.qt-project.org].
Для желающих принять участие в разработке
Вся разработка ведется через Gerrit [wiki.qt-project.org], поэтому желающие включиться в процесс разработки должны иметь там учетную запись.
Подробнее о процессе регистрации и разработки можно прочитать здесь [wiki.qt-project.org]
Возможные проблемы
Заполнить
Отслеживание ошибок
Используйте bugreports.qt-project.org [bugreports.qt-project.org], проект “Qt Playground Projects”, компонент “qtserialport”.

