English | Deutsch | Русский | Polski | Nederlands | Português | Español | Українською | فارسی | عربي | 한국어 | Suomi | Català | Italiano | 日本語 | Français | Magyar | ಕನ್ನಡ | हिन्दी | ภาษาไทย | 简体中文 | Български

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 можно выполнить следующую команду:

  1. git clone git://gitorious.org/qt/qtserialport.git

Для разработчиков

Получить исходный код и внести свой вклад в разработку могут только зарегистрированные в Gerrit разработчики, используя Git (настройка Gerrit [wiki.qt-project.org]).

Получить исходный код можно так:

  1. git clone ssh://<username>@codereview.qt-project.org:29418/qt/qtserialport.git

где username – логин зарегистрированного в Gerrit пользователя

Сборка и установка

Примечание: При сборке лучше использовать “теневую сборку”, когда для результатов сборки используется отдельная директория. Это позволяет оставить директорию с исходными кодами в нетронутом виде, не засоренную продуктами сборки.

Перед сборкой необходимо:

  • установить Perl3
  • убедиться что корректно настроены переменные окружения:
    • правильно указаны пути к установленной Qt4/Qt5
    • правильно указаны пути к используемым компиляторам
    • правильно указаны пути к Perl3
  • предварительно создать директорию для сборки которая находится на том же уровне, что и директория с исходными кодами
    1. /
    2. |- /serialport-src
    3. |- /serialport-build

3 Perl необходим только в случае использования Qt5, подробнее см. тут [qt-project.org]. При использовании Qt4 просто пропустите этот пункт.

Ниже приведены рекомендуемые процедуры сборки библиотеки для Qt4/Qt5.

  1. cd serialport-build
  2. qmake ../serialport-src/qtserialport.pro
  3. make [или 'nmake' для MSVC компилятора, или 'mingw32-make' для MinGW компилятора]
  4. make install [или 'nmake install' для MSVC компилятора, или 'mingw32-make install' для MinGW компилятора]

Примечание: В *nix системах для установки возможно потребуются права суперпользователя:

  1. sudo make install

Использование

При использовании библиотеки необходимо ее подключить в *.pro файл пользовательского проекта, это действие для Qt4 и Qt5 немного отличается:

Qt4

  1. CONFIG += serialport

Qt5

  1. QT += serialport

Подключение заголовочных файлов от QtSerialPort в пользовательский проект для Qt4 и Qt5 одинаковое:

  1. ...
  2. #include <QtSerialPort/QSerialPort>
  3. #include <QtSerialPort/QSerialPortInfo>
  4. ...

Простой пример

Ниже представлен простейший пример реализации main.cpp:

  1. #include <QtCore/QCoreApplication>
  2. #include <QtCore/QDebug>
  3.  
  4. #include <QtSerialPort/QSerialPort>
  5. #include <QtSerialPort/QSerialPortInfo>
  6.  
  7. QT_USE_NAMESPACE
  8.  
  9. int main(int argc, char *argv[])
  10. {
  11.     QCoreApplication a(argc, argv);
  12.  
  13.     // Example use SerialPortInfo
  14.     foreach (const SerialPortInfo &info, SerialPortInfo::availablePorts()) {
  15.         qDebug() << "Name        : " << info.portName();
  16.         qDebug() << "Description : " << info.description();
  17.         qDebug() << "Manufacturer: " << info.manufacturer();
  18.  
  19.         // Example use SerialPort
  20.         SerialPort serial;
  21.         serial.setPort(info);
  22.         if (serial.open(QIODevice::ReadWrite))
  23.             serial.close();
  24.     }
  25.    
  26.     return a.exec();
  27. }

Генерация документации

Нет необходимости в сборке документации, потому что текущий снимок документации находится тут [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”.