Russian Qt Forum
Ноябрь 23, 2024, 02:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 79 80 [81] 82 83 ... 88   Вниз
  Печать  
Автор Тема: Создаю библиотеку для работы с последовательными портами. [УШЕЛ ИЗ ПРОЕКТА].  (Прочитано 785139 раз)
Pavel_
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« Ответ #1200 : Ноябрь 05, 2014, 15:10 »

В последних версиях эт сообщение уже убрано. Достаточно просто обновиться до 5.3.2/5.3.3
Спасибо, kuzulis, как-то так я и думал - значит на эти сообщения просто не обращаю внимания. Буду переходить на 5.3.3.
« Последнее редактирование: Ноябрь 05, 2014, 15:31 от Pavel_ » Записан
Pavel_
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« Ответ #1201 : Ноябрь 05, 2014, 15:19 »

kuzulis, во-первых, спасибо за очень хорошую библиотеку! Пользуюсь - радуюсь.
Во-вторых, не уверен по адресу ли вопрос - если нет, простите и пошлите если знаете по верному адресу.
Возможна ли статическая сборка с qserialport? Нигде не нашел пояснений кроме вот такого )) http://www.prog.org.ru/topic_26384_0.html - "... QtSerialPort никто из разработчиков статически не собирал (да и не соберется он)." Может для более новых версий все он таки соберется уже? Или это никак и использовать только динамику с любимой кучкой файлов *.dll ?.
С уважением...
« Последнее редактирование: Ноябрь 05, 2014, 15:40 от Pavel_ » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1202 : Ноябрь 05, 2014, 16:53 »

Цитировать
Возможна ли статическая сборка с qserialport?

Не имею понятия. Возможно в qtserialport\src\serialport\serialport.pro в CONFIG можно указать "staticlib", но не уверен.
Записан

ArchLinux x86_64 / Win10 64 bit
Pavel_
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« Ответ #1203 : Ноябрь 05, 2014, 17:16 »

Цитировать
Возможна ли статическая сборка с qserialport?

Не имею понятия. Возможно в qtserialport\src\serialport\serialport.pro в CONFIG можно указать "staticlib", но не уверен.

Спасибо, будем искать...
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #1204 : Ноябрь 06, 2014, 08:24 »

Я собирал для 4.8 под 2010 студию. Собирал только саму библиотеку и при этом правил serialport.pro (в src/serialport). В CONFIG добавлял staticlib, в DEFINES - QT_STATIC (этот дефайн потом придется повторять в проектах своих статически собранных приложений).
Вот мой проектник (ветку для версий > 4 не трогал).
Код
C++ (Qt)
QT = core
 
QMAKE_DOCS = $$PWD/doc/qtserialport.qdocconf
include($$PWD/serialport-lib.pri)
 
greaterThan(QT_MAJOR_VERSION, 4) {
   load(qt_build_config)
   QT += core-private
   TARGET = QtSerialPort
   load(qt_module)
} else {
   TEMPLATE = lib
   TARGET = $$qtLibraryTarget(QtSerialPort$$QT_LIBINFIX)
   include($$PWD/qt4support/install-helper.pri)
   CONFIG += module staticlib create_prl
   DEFINES += QT_STATIC
   mac:QMAKE_FRAMEWORK_BUNDLE_NAME = $$TARGET
}
 
Записан
Pavel_
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« Ответ #1205 : Ноябрь 06, 2014, 16:22 »

Hellraiser, спасибо. Сейчас загружен, на днях попробую, отпишусь.

Отписываюсь. Qt5.2.1 mingw 4.8. Результат: сделал статическую сборку Qt, отдельно статически собрал qtserialport, распихал результаты сборки qtserialport по нужным каталогам статической сборки Qt, на первый взгляд все работает, но нужно еще потестить. И осознать ))).

Всем спасибо за дачу нужных направлений!
С уважением...
« Последнее редактирование: Ноябрь 07, 2014, 17:23 от Pavel_ » Записан
DruidCat
Гость
« Ответ #1206 : Декабрь 30, 2014, 00:20 »

Люди добрые помогите решить проблему в GNU/Linux. Написал программу на РС, которая подключается по последовательному порту с микроконтроллером. Все работает замечательно, но одна загвоздка, не всегда есть под рукой микроконтроллер. Поэтому я написал программу на РС, эмулирующую микроконтроллер, и в Windows 7 соединил эти две программы по виртуальному нуль модему. Благо в винде подобных программ, по созданию виртуальных нуль модемов много. Но вот с GNU/Linux  я сталкнулся с проблемой создания виртуального нуль модема. Так как я в GNU/Linux не силен. Мне посоветовали программу socat, я связался с разработчиком этой программы и он мне дал совет, как создать виртуальный нуль модем.
Код:
sudo socat -d -d -lu PTY,link=/dev/ttyS0,raw,echo=0 PTY,link=/dev/ttyS1,raw,echo=0
Я этим воспользовался. У меня в папке /dev четыре файла ttyS0-ttyS3, и эти четыре файла моя программа видит, как свободные последовательные порты для подключения. Но когда я запустил socat, то ttyS0 и ttyS1 у меня превратились в ссылки /dev/pts/1 и /dev/pts/2 и моя программа перестала видеть ttyS0 и ttyS1. Может я что-то делаю не так, и может не нужно пользоваться socat? Просто я в GNU/Linux  не силен, проверял это в Ubuntu и Calculate(Gentoo). Для наглядности выложу скрин https://yadi.sk/i/6sgXc79cdhKju. Там в комбобоксе раньше было доступно ttyS0-ttyS3, а теперь ttyS2 и ttyS3.
Еще выкладываю кусок кода, как ищются свободные последовательные порты, может я что не правильно написал в исходниках, хотя с реальными портами все работает на ура:
Код:
void DCRegErsteds::slotRescanPorts()//Кнопка Обновление списка СОМ портов
/////////////////////////////////////////////////////////////////////////////////////////////
//------------------С Л О Т   Д О С Т У П Н Ы Х   С О М   П О Р Т О В----------------------//
/////////////////////////////////////////////////////////////////////////////////////////////
{
    QStringList lstPortName;//Список Сом портов
    QList<QSerialPortInfo> serialPortInfoList = QSerialPortInfo::availablePorts();//Поиск доступных Сом портов
    foreach (const QSerialPortInfo &serialPortInfo, serialPortInfoList)//Цикл
        lstPortName << serialPortInfo.portName();//Добовляем в список доступные Сом порты

    ui->pcbxPortName->clear();//Очищаем ComboBox
    ui->pcbxPortName->addItems(lstPortName);//Добавляем в ComboBox список доступных Сом портов

    for(size_t untStep = 0; untStep < lstPortName.size(); untStep++)//Цикл просмотра содержимого списка свободных СОМ портов
    {
    if(pdcsetting->getPortName() == lstPortName[untStep])//если есть равенство СОМ порта из настроек и СОМ порта доступного для подключения, то...
    {
    ui->pcbxPortName->setCurrentText(pdcsetting->getPortName());//Указываем номер порта, который есть в настройках
    return;
    }
    }

    pdcsetting->setPortName("");//Делаем порт не определенным, так как того порта, который в настройках не существует физически
}
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1207 : Декабрь 30, 2014, 00:50 »

Все правильно. Socat создает симлинки на /dev/pts. Теперь ttyS0/ttyS1 - это симлинки а не реальные устройства. QSerialPortInfo не будет их "видеть". Теперь нужно вручную задавать ttyS0/ttyS1 не надеясь на QSerialPortInfo. Кроме того вплоть до Qt 5.4.0 включительно, QSerialPort некорректно работает с socat: там косяки с DTR/RTS и прочим при открытии (пофикшено в Qt 5.4.1). Поэтому попробуй использовать "виртуальные" последовательные порты, созданные драйверами (модулями ядра) от Tibbo или иными (погугли, сейчас не свпомню точно). Хотя, не факт что QSerialPortInfo их также "увидит".
Записан

ArchLinux x86_64 / Win10 64 bit
DruidCat
Гость
« Ответ #1208 : Декабрь 30, 2014, 05:19 »

Спасибо за помощь. Буду вручную задавать ttyS0/ttyS1 в программе, и ждать релиза QtSerialPort 5.4.1. в Gentoo.
PS: Спасибо тебе за QtSerialPort!
Записан
Phoenix
Гость
« Ответ #1209 : Январь 25, 2015, 12:41 »

Правильно ли я понял, что для Qt4 нужно собирать "branch: qt4-dev"?
Скачал последнюю qt4-dev, собрал в winXP, моя программа выдает ошибку после вызова waitForBytesWritten: "Неверный дескриптор".
Если заменить на предыдущую версию (кажется я собирал в сентябре 2014), то все прекрасно работает.
В linux (x86-64, ARM) такой проблемы не замечено.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1210 : Январь 25, 2015, 14:46 »

Цитировать
Правильно ли я понял, что для Qt4 нужно собирать "branch: qt4-dev"?

В будущем, когда выйдет Qt 5.5 - то да, это верный бранч для Qt4. Начиная с Qt 5.5 будут отдельные бранчи для Qt >= 5.5 и для Qt 4.8.x.
Я его особо не тестировал qt4-dev, т.к. оно еще далеко. Подмигивающий

Пока-же можно использовать бранчи от Qt 5.4.x для Qt4.

UPD:
Цитировать
Скачал последнюю qt4-dev, собрал в winXP, моя программа выдает ошибку после вызова waitForBytesWritten: "Неверный дескриптор".

Вроде исправил, следи за:
https://codereview.qt-project.org/104521
https://codereview.qt-project.org/104522

И спасибо за выявление ошибочки Подмигивающий
« Последнее редактирование: Январь 25, 2015, 16:22 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Phoenix
Гость
« Ответ #1211 : Январь 25, 2015, 18:33 »

Помогло. И тебе спасибо за хорошую библиотеку.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1212 : Январь 28, 2015, 22:57 »

=== Около темы ===
Денис, а ты в курсе, что твою библиотеку (что для Qt4 что из Qt5) использует проект Fritzing для программирования всяких ардуиноподобных устройств?

(видимо позаимствован код из ArduinoIDE)
Записан

Юра.
kit
Гость
« Ответ #1213 : Февраль 04, 2015, 14:17 »

Цитировать
Результат: сделал статическую сборку Qt, отдельно статически собрал qtserialport, распихал результаты сборки qtserialport по нужным каталогам статической сборки Qt, на первый взгляд все работает, но нужно еще потестить. И осознать ))).

Pavel_, ну и как впечатления от статической сборки qtserialport?
Подскажите, пожалуйста, как вам это удалось.

Тоже вот пробую сделать статическую сборку qtserialport:
1 – создаю каталог /serialport-build на уровне каталога исходников:
   /qtserialport
      /src
      /serialport-build

2 – добавляю в qtserialport.pro:
CONFIG += release
CONFIG += static

QMAKE_LFLAGS += -static -static-libgcc

3 – в cmd.exe запускаю qmake:
..\MyProjects\qtserialport\serialport-build>qmake ..\MyProjects\qtserialport\qtserialport.pro -r -spec win32-g++

4 – после успешного создания make-файла запускаю mingw32-make.exe:
..\MyProjects\qtserialport\serialport-build>mingw32-make.exe

На этом этапе выскакивает ошибка:
makefile:40: recipe for target 'sub-src-release' failed
mingw32-make: *** [sub-src-release] Error 1


Были попытки выполнить весь процесс с помощью QtCreator:
открываю qtserialport.pro, во вкладке "Проекты" настраиваю каталог сборки и этапы сборки qmake и mingw32-make.
Но вылезает та же ошибка.

Динамически собранный qtserialport из комплекта моего Qt5.4.0 работает изумительно, проблем нет.
Поделитесь, пожалуйста, опытом. Или причина безуспешности моих попыток в чем-то другом?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1214 : Февраль 04, 2015, 18:07 »

=== Около темы ===
Денис, а ты в курсе, что твою библиотеку (что для Qt4 что из Qt5) использует проект Fritzing для программирования всяких ардуиноподобных устройств?

(видимо позаимствован код из ArduinoIDE)

Не, Юр, не в курсе (да и все-равно, если честно). Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: 1 ... 79 80 [81] 82 83 ... 88   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.074 секунд. Запросов: 22.