Мы уже много раз рассматривали модуль USART различных микроконтроллеров, связывали их с компьютером, но компьютерную часть взаимодействия пока не трогали. И вот пришло время об этом наконец-то поговорить... Итак, в ближайшее время мы будем разбираться, как получить данные от какого-либо внешнего устройства на ПК через com-порт, как их обработать и, если надо, отправить дальше.
В качестве инструмента мы будем применять уже упоминавшуюся на нашем сайте библиотеку Qt (вот тут) и среду программирования Qt Creator. Но в стандартных библиотеках, поставляющихся вместе с Qt Creator (на момент написания статьи), не реализован механизм приема/передачи данных по последовательному порту, поэтому нам придется озадачиться поиском какой-то специально для этого созданной библиотеки.
Из всего, что я встречал на просторах интернета, мне приглянулся модуль QtSerialPort, реализующий как раз-таки интерфейс для работы с последовательными портами, причем как с аппаратными, так и с виртуальными. Вот тут можно прочитать немножко про это дополнение к библиотекам Qt - QtSerialPort- ну и скачать тут тоже можно (и нужно).
И сегодняшняя статья будет посвящена установке этой библиотеки. Казалось бы, на официальном сайте установка библиотеки QtSerialPort описана настолько подробно, насколько вообще возможно, но все-таки есть ряд граблей, на которые можно наступить. Собственно, поэтому сейчас мы рассмотрим подробнейший процесс...
Шаг первый.
Скачиваем архив qt-qtserialport-HEAD с сайта, приведенного выше. Этот шаг даже комментировать больше не надо, так что двигаемся дальше.
Шаг второй.
Надо добавить необходимые пути в системные переменные среды. Для этого жмем правой кнопкой на "Мой компьютер" и заходим в свойства. Далее заходим в дополнительные параметры системы, открывается новое окошко с разными свойствами, и там внизу есть кнопка "Переменные среды". Она то нам и нужна, так что смело жмем. В системных переменных находим Path:
И добавляем туда следующее:
C:\QtSDK\Desktop\Qt\4.8.1\mingw\bin\;C:\QtSDK\mingw\bin\;C:\QtSDK\Desktop\Qt\4.8.1\
Соответственно путь к установленному Qt Creator'у у каждого свой. У меня вот - C:\QtSDK...
Шаг третий.
Скопируем куда-нибудь скачанную и распакованную папку qt-qtserialport-HEAD, пути к ней не должны содержать русских букв. Это важно. Я скопировал в корень диска С. Лезем в эту папку и довольно быстро натыкаемся на подпапку src. В ней я создал директорию для сборки - serialport-build.
Шаг четвертый.
В меню пуск находим QtSDK, но не запускаем а копаемся там дальше и находим в папке Desktop (все еще в меню пуск) Qt 4.8.1 for Desktop (MinGW). Этот ярлык и надо запустить. Открывается привычная командная строка.
Шаг пятый.
В командной строке переходим в директорию serialport-build, для этого вводим две команды:
- для перехода в корень диска С: cd/
- для перехода в нужную папку используется та же команда cd и соответствующий путь, как на скриншотах:
Далее необходимо ввести команду:
qmake ../serialport/serialport.pro
Осталось совсем немного, вводим команду:
mingw32-make
Теперь ждем, а затем вводим команду:
mingw32-make install
Шаг шестой.
В скачанном архиве находим папку qt4support. Тут нас интересует файл serialport.prf. Копируем его вот сюда: С:/QtSDK/Desktop/Qt/4.8.1/mingw/mkspecs/features/serialport.prf.
Шаг седьмой.
Запускаем Qt Creator. Попробуем собрать какой-нибудь пример из поставляющихся вместе с библиотекой QtSerialPort. Жмем открыть проект и выбираем например проект Enumerator (все примеры находятся в папке Examples). В самом Qt Creator'е открываем файл enumerator.pro и дописываем в конец две строки:
CONFIG += serialport LIBS += -lserialport
Вот как выглядит весь файл:
greaterThan(QT_MAJOR_VERSION, 4) { QT += widgets serialport } else { include($QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf) } TARGET = enumerator TEMPLATE = app SOURCES += \ main.cpp CONFIG += serialport LIBS += -lserialport
После этого уже можно смело собирать проект и, если все описанное осуществлено верно, программа соберется и запустится. Вот на этом, собственно, и все, инструкция по установке библиотеки QtSerialPort готова 👍
Архив с библиотекой - qt-qtserialport