Мы уже много раз рассматривали модуль 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
0. Добавлять переменные окружения глобально - плохая идея. Лучше этого не делать вообще (при сборке из QtCreator) или делать локально в cmd.exe.
1. Шаг 6 не нужен. Оно само скопируется в mkspecs при установке.
2. Делать LIBS += -lserialport не надо. Оно слинкуется при указании CONFIG += serialport.
3. Делать include($$QTSERIALPORT_PROJECT_ROOT/src/serialport/qt4support/serialport.prf) тоже не надо. Это сделано только для того чтобы скомпилировались примеры которые идут с библиотекой.
4. Собрать и установить библиотеку можно из QtCreator, просто добавив на вкладке "Проекты" для текущего проекта новую Make цель "install". Теперь при сборке оно должно само собераться и установиться автоматом.
Спасибо за советы ) Не мой профиль - приложения для ПК, поэтому реально очень благодарен за конструктивную критику)
А вот по поводу шага 6 - у меня почему-то не скопировался этот файл
Если честно - я ничегошеньки не понимаю, но может пообщавшись с мастерами и до меня дойдёт 😉
=)
Сделал,как вы написали, но на последнем шаге выводит ошибку "Could not find any sync.profile for your module!". Потом указывает путь на файл syncqt.bat но он там есть. Не знаете в чем может быть причина?
У меня такое не выскакивало, но вроде бы ошибка довольно часто встречающаяся
Уважаемый Aveal, не могу понять где все-таки скачать архив на шаге 1? Не могли бы Вы в соответствии с замечаниями от kuzulis еще раз подробно все изложить. Заранее благодарен.
По поводу архива - тоже не смог сейчас скачать, это уже вопрос к разработчикам библиотеки. По поводу установки - я по-прежнему делаю по своей последовательности, все работает.
А на почту не можете выслать?
У меня есть какая-то версия на рабочем компе, но скинуть смогу после 22го.
Ок. Если до тех пор не найду, то напомню после 22 го.
Может я туплю, но после команды mingw32-make пишется куча сообщений об ошибке. В чем может быть проблема? http://itmages.ru/image/view/2061060/b0fa0a2b
Помогите, пожалуйста)
Можно наверно попробовать какую-нибудь другую версию библиотеки скачать.
Уважаемый Aveal, никак не могу скачать архив о котором вы говорите в шаге 1! Не могли бы вы скинуть свой архив по e-mail. Заранее спасибо!
Добавил ссылку в конце статьи )
Я не знаю, кстати, как там продвигается развитие проекта QTSerialPort, может есть какие-нибудь новые версии библиотеки. Я выложил ту, которой сам пользуюсь, но скачивал я ее пару лет назад )
Спасибо Вам большое за статью - до сих пор актуально. Сижу на ХР новые qt не ставятся так, что приходится юзать QT 4.8, и отдельное спасибо за библиотеку - найти уже нигде невозможно.
С новыми версиями реально какая-то иногда засада, а вообще я просто подрубаю такие библиотеки динамически или можно установщик замутить. Спасибо за полезную статейку!
Рад, что статья понравилась! )