crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

14 страниц V  « < 8 9 10 11 12 > »   
Ответить в данную темуНачать новую тему
> QtSerialPort, Проблема сборки QtSerialPort под Windows
kuzulis
  опции профиля:
сообщение 9.10.2013, 17:56
Сообщение #91


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

Спасибо сказали: 36 раз(а)




Репутация:   7  


Цитата(Анна @ 9.10.2013, 11:15) *
Жаль, что errorString() не перегружена для QSerialPort... по крайней мере в QT-4.8.4 .


А, простите, зачем это нужно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 14.10.2013, 9:18
Сообщение #92


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Анна, произведи класс от QSerialPort и перегрузи :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 21.10.2013, 8:12
Сообщение #93


Активный участник
***

Группа: Участник
Сообщений: 276
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 30 раз(а)




Репутация:   4  


Цитата(kuzulis @ 9.10.2013, 18:56) *
Цитата(Анна @ 9.10.2013, 11:15) *
Жаль, что errorString() не перегружена для QSerialPort... по крайней мере в QT-4.8.4 .


А, простите, зачем это нужно?

В смысле, зачем нужно? А зачем тогда нужна errorString()? Хотя бы для какого-то единообразия. У меня три приложения работают с компортом, а у напарника с десяток, наверное. Хотелось бы, чтобы об одной и той же ошибке все приложения сообщали одинаковую информацию. Приходится таскать за собой довесок. К тому же как раз ради удобной обёртки и взяла этот класс. До этого пользовалась доморощенными методами.

Цитата(Алексей1153 @ 14.10.2013, 10:18) *
Анна, произведи класс от QSerialPort и перегрузи :)


Кеп, ты? ;)
Но, вообще, перегружать класс ради сообщений об ошибке не смешно.


Кстати, хотела узнать, под Линуксом никаких проблем с работой QSerialPort порта нету? Мне ещё предстоит линуксоида убедить перейти на этот класс.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 21.10.2013, 9:59
Сообщение #94


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

Спасибо сказали: 36 раз(а)




Репутация:   7  


Цитата(Анна)
В смысле, зачем нужно? А зачем тогда нужна errorString()? Хотя бы для какого-то единообразия. У меня три приложения работают с компортом, а у напарника с десяток, наверное. Хотелось бы, чтобы об одной и той же ошибке все приложения сообщали одинаковую информацию. Приходится таскать за собой довесок. К тому же как раз ради удобной обёртки и взяла этот класс. До этого пользовалась доморощенными методами.


Можно конкретный пример? Что не устраивает то конкретно?

Любые предложения приветствуются. :)

Цитата(Анна)
Кстати, хотела узнать, под Линуксом никаких проблем с работой QSerialPort порта нету? Мне ещё предстоит линуксоида убедить перейти на этот класс.


При использовании signal/slot (неблокирующего подхода) не должно быть проблем. Но при waitForXX() могут выплыть проблемки.. ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 21.10.2013, 13:44
Сообщение #95


Активный участник
***

Группа: Участник
Сообщений: 276
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 30 раз(а)




Репутация:   4  


Цитата(kuzulis @ 21.10.2013, 10:59) *
Цитата(Анна)
В смысле, зачем нужно? А зачем тогда нужна errorString()? Хотя бы для какого-то единообразия. У меня три приложения работают с компортом, а у напарника с десяток, наверное. Хотелось бы, чтобы об одной и той же ошибке все приложения сообщали одинаковую информацию. Приходится таскать за собой довесок. К тому же как раз ради удобной обёртки и взяла этот класс. До этого пользовалась доморощенными методами.


Можно конкретный пример? Что не устраивает то конкретно?

Любые предложения приветствуются. :)

Цитата(Анна)
Кстати, хотела узнать, под Линуксом никаких проблем с работой QSerialPort порта нету? Мне ещё предстоит линуксоида убедить перейти на этот класс.


При использовании signal/slot (неблокирующего подхода) не должно быть проблем. Но при waitForXX() могут выплыть проблемки.. ;)


Конкретно, когда от порта приходит сигнал об ошибке (любой, например, у меня бывает плохой контакт между портом и железякой, тогда всё время валится ошибка 6 (очень облегчила мне жизнь в выяснении, кто виноват)), хочу расшифорвать его пользователю, а errorString() возвращает всегда "Unknown error". У меня ещё сверху добавляется свой анализ полученного из порта, так что проблему решила, просто добавив к "своим ошибкам" расшифорвку ошибок из хелпа, но у меня есть приложения, где хотелось бы использовать ваш класс в чистом виде, а не городить заплатку. Насколько я поняла, всего лишь нужно было в тех местах, где генерится сигнал error(), вызывать перед этим setErrorString() с соответствующим текстом.

Про Линукс, спасибо, что предупредили. У меня есть места, где waitFor... используются. Буду переделывать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 21.10.2013, 16:18
Сообщение #96


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

Спасибо сказали: 36 раз(а)




Репутация:   7  


Цитата
тогда всё время валится ошибка 6


Это которая BreakConditionError ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DruidCat
  опции профиля:
сообщение 21.10.2013, 17:19
Сообщение #97


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 15.10.2013
Пользователь №: 3958

Спасибо сказали: 0 раз(а)




Репутация:   0  


http://qt-project.org/doc/qt-5.1/qtserialp...alportinfo.html
Хотелось бы задать вопрос, извините, если он будет глупым, я только учусь.
Мне хотелось бы проверять на занятость сом порты, в документации я нашел #include <QSerialPortInfo> с методом isBusy(), который возвращает bool. А как им пользоваться я не знаю. Я учу Qt меньше месяца, читаю учебник, и бегу вперед паровоза. Охота быстрей и быстрей написать свою программу. Я смотрел примеры по применению QSerialPortInfo, и не понял их, так как такие способы программирования я еще не знаю. Не могли бы привести небольшой наглядный кусочек кода, где понятно, как пользоваться методом isBusy(), желательно в if. Мне хотелось бы проверять определенные сом порты на занятость и если эти порты заняты, производить с ними определенные манипуляции.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 21.10.2013, 17:53
Сообщение #98


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

Спасибо сказали: 36 раз(а)




Репутация:   7  


Если не знаешь какой порт нужен - то просто перечисляешь и выбираешь из списка нужный и проверяешь его:

foreach (const QSerialPortInfo &serialPortInfo, QSerialPortInfo::availablePorts())
{
    if (serialPortInfo.isBusy())
        qDebug() << "Port " << serialPortInfo.portName() << " is busy";
    else
        qDebug() << "Port " << serialPortInfo.portName() << " is free";
}


или

Если знаешь какой нужен то прямо его и проверяешь:

QString portName("COM1");

QSerialPortInfo serialPortInfo(portName);

if (serialPortInfo.isBusy())
    qDebug() << "Port " << serialPortInfo.portName() << " is busy";
else
    qDebug() << "Port " << serialPortInfo.portName() << " is free";


UPD: А еще смотри примеры, которые идут вместе с QtSerialPort в директории /examples:

* cenumerator - консольный пример
* enumerator - GUI пример

Сообщение отредактировал kuzulis - 21.10.2013, 17:57
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 23.10.2013, 19:42
Сообщение #99


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Тему разделил: DCTerminal - Моя первая Qt-программа
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Анна
  опции профиля:
сообщение 28.10.2013, 15:25
Сообщение #100


Активный участник
***

Группа: Участник
Сообщений: 276
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 30 раз(а)




Репутация:   4  


Цитата(kuzulis @ 21.10.2013, 16:18) *
Цитата
тогда всё время валится ошибка 6


Это которая BreakConditionError ?

Она.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

14 страниц V  « < 8 9 10 11 12 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 18:48