Поиск:

Закрытая темаСоздание новой темы Создание опроса
> [QT4] и библиотека qextserialport, Помогите разобраться с либой... 
V
    Опции темы
blackdevil
Дата 30.10.2007, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 21.1.2007

Репутация: нет
Всего: нет



Привет форум!

На работе дали задание написать программу опроса теплосчетчика. Он подключен к компу через COM порт (RS-232). Прога должна иметь гуй так что придется использовать QT потому что больше я ничего не знаю а срок сдачи - месяц. Платформа win32 (WinXP). Кросплатформенность приветствуется!

Нашел любопытную библиотеку для QT называется qextserialport (скачать можно тут http://sourceforge.net/project/showfiles.php?group_id=127181 размер либы 190 Кб с документацией). В документации только краткое описание классов и функций и сложный пример. Для меня как для начинающего этого слишком мало чтобы разобраться. Помогите пожалуйста понять как работать с библиотекой? Может быть у кого-то есть опыт работы с ней или примеры исходников? Как подключить эту библиотеку к проекту QT? В каком порядке использовать функции? Мне нужно выполнить все на простейшем уровне:
1) открыть порт
2) выставить нужные параметры соединения
3) читать-писать в порт 
4) закрыть порт по окончании работы

Поделитесь пожалуйста опытом и знаниями! Как это все использовать?

Это сообщение отредактировал(а) blackdevil - 30.10.2007, 00:59
PM MAIL   Вверх
archimed7592
Дата 30.10.2007, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 11
Всего: 93



Цитата(blackdevil @  30.10.2007,  00:57 Найти цитируемый пост)
1) открыть порт

Также как и файл:
Код

obj.open(QIODevice::ReadOnly);

Цитата(blackdevil @  30.10.2007,  00:57 Найти цитируемый пост)
3) читать-писать в порт 

Также как и файл:
Код

QByteArray ar = obj.readAll();

Цитата(blackdevil @  30.10.2007,  00:57 Найти цитируемый пост)
4) закрыть порт по окончании работы

Также как и файл:
Код

obj.close();


Всё это понятно сразу после взгляда на иерархию этого класса(он же наследник QIODevice).


Цитата(blackdevil @  30.10.2007,  00:57 Найти цитируемый пост)
2) выставить нужные параметры соединения

Какие именно? Ну, вообще примерно так:
Код

PortSettings ps;
ps.dataBits = DATA_6;
QextSerialPort port("COM1", ps);



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
blackdevil
Дата 30.10.2007, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 21.1.2007

Репутация: нет
Всего: нет



Хмм...выглядит все достаточно просто но честно говоря мне сложно в этом разобраться...видимо уровень еще не тот...А QByteArray это массив байтов? А если мне нужно инфу в битах передавать то сначала надо перевести в двоичный вид и писать в "файл" например unsigned char?
PM MAIL   Вверх
archimed7592
Дата 30.10.2007, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 11
Всего: 93



Цитата(blackdevil @  30.10.2007,  17:58 Найти цитируемый пост)
Хмм...выглядит все достаточно просто но честно говоря мне сложно в этом разобраться...видимо уровень еще не тот...

Тогда задавай более конкретные вопросы.


Цитата(blackdevil @  30.10.2007,  17:58 Найти цитируемый пост)
А QByteArray это массив байтов?

Да.


Цитата(blackdevil @  30.10.2007,  17:58 Найти цитируемый пост)
А если мне нужно инфу в битах передавать то сначала надо перевести в двоичный вид и писать в "файл" например unsigned char? 

Не очень понял вопроса, но как бы то ни было, создавай отдельную тему, если не умеешь биты-байты конвертить(а лучше поищи по форуму/гуглю).


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
blackdevil
Дата 30.10.2007, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 21.1.2007

Репутация: нет
Всего: нет



archimed7592 небольшой вопрс если можно - в Вашем первом посте функции работы с файлами это чистые функции языка C++? Насколько я разобрался с библиотекой там по-моему свои функции открытия/закрытия есть...возможно правильнее будет использовать их?
PM MAIL   Вверх
archimed7592
Дата 30.10.2007, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 11
Всего: 93



Цитата(blackdevil @  30.10.2007,  21:02 Найти цитируемый пост)
в Вашем первом посте функции работы с файлами это чистые функции языка C++?

Смотря что понимать под чистыми ф-циями языка С++.

Эти - ф-ции, унаследованные твоим классом QextSerialPort от Qt'шного класса QIODevice. Подходит это под твоё определение чистых ф-ций языка С++ или нет - решать тебе.


Цитата(blackdevil @  30.10.2007,  21:02 Найти цитируемый пост)
Насколько я разобрался с библиотекой там по-моему свои функции открытия/закрытия есть...возможно правильнее будет использовать их? 

Это они и есть.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
blackdevil
Дата 30.10.2007, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 21.1.2007

Репутация: нет
Всего: нет



Пардон...видимо плохо смотрел...
PM MAIL   Вверх
blackdevil
Дата 5.11.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 21.1.2007

Репутация: нет
Всего: нет



Кстати такой вопросик - библиотека эта как я понял использует Windows API. Если я поставлю на Windows MinGW (компилятор g++) и QT 4 Open Sourse то у меня потом это все соберется? Заголовочных файлов хватит? Или надо под MSVC компилятор собирать? WinAPI это вроде бы функции самой ОС?

Скоро напишу прототип функции если сможете проверьте меня плз! smile

Это сообщение отредактировал(а) blackdevil - 5.11.2007, 12:40
PM MAIL   Вверх
archimed7592
Дата 5.11.2007, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 11
Всего: 93



Цитата(blackdevil @  5.11.2007,  12:39 Найти цитируемый пост)
Если я поставлю на Windows MinGW (компилятор g++) и QT 4 Open Sourse то у меня потом это все соберется? Заголовочных файлов хватит?

Теоретически - хватит... Практически - попробуй собрать и увидишь. К слову Qt 4 тоже использует Win32API.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
blackdevil
Дата 2.12.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 21.1.2007

Репутация: нет
Всего: нет



Поднимаю темку так как есть важный вопрос.

Я совсем незаметил что библиотека представляет из себя QT-шный проект (.pro). Скомпилил и получилась динамическая библиотека .dll ВОПРОС: Как подключить эту dll в свой проект чтобы ее функции использвать? Можно так чтобы никакого кода на включение не писать? Как я понял надо в файл мой_проект.pro добавить какие то строки...

Код

LIBS          += -lqextserialport


Вот так можно? Или нужно что-то еще прописать в .pro файл?
PM MAIL   Вверх
JackYF
Дата 2.12.2007, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(blackdevil @  2.12.2007,  14:01 Найти цитируемый пост)
Вот так можно?

да, именно так можно и нужно smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
blackdevil
Дата 2.12.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 21.1.2007

Репутация: нет
Всего: нет



То есть я эту строчку прописываю в .pro файл, кладу свою .dll в папку проекта, собираю и все работает?  smile 
PM MAIL   Вверх
JackYF
Дата 2.12.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(blackdevil @  2.12.2007,  15:05 Найти цитируемый пост)
и все работает?

по идее - да.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
blackdevil
Дата 2.12.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 21.1.2007

Репутация: нет
Всего: нет



Спасибо! Сейчас буду пробовать.
PM MAIL   Вверх
archimed7592
Дата 2.12.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 11
Всего: 93



Цитата(blackdevil @  2.12.2007,  14:01 Найти цитируемый пост)
Вот так можно? Или нужно что-то еще прописать в .pro файл? 

Достаточно прописать то, что ты написал в .pro.
В случае с MSVS можно было бы сделать так, чтобы ничего прописывать в .pro не нужно было.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0819 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.