crossplatform.ru

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

44 страниц V  < 1 2 3 4 5 > »   
Ответить в данную темуНачать новую тему
> QSerialDevice - Библиотека для работы с COM-портами
ViGOur
  опции профиля:
сообщение 4.10.2009, 9:55
Сообщение #21


Мастер
******

Группа: Модератор
Сообщений: 3276
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Я пока отключил общую авторизацию сайта и форума, ибо глючит она.
Немного подождете и я перенесу все на новую версию сайта и все будет ок. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rcdimon
  опции профиля:
сообщение 29.10.2009, 21:47
Сообщение #22


Студент
*

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

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




Репутация:   0  


Наблюдаются проблемы при работе с виртуальными COM портами. Что очень плохо для отладки, ведь это часто с компа, где COM портов нет. Я например работаю на ноутбуке. Я создал виртуальный нуль модемный кабель, на одной стороне у меня висит гипертерминал, на другой подключается моя программа. Обмен данными по нуль-модемному кабелю контролируется еще одной софтиной. И это очень удобно для отладки. К сожалению Ваша библиотека не может открыть такой порт, хотя обычный WinAPI работает с ним без проблем, проверено. В чем может быть дело? Может надо просто какие настройки исправить или пару строчек кода? :-) Было бы замечательно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rcdimon
  опции профиля:
сообщение 29.10.2009, 22:19
Сообщение #23


Студент
*

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

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




Репутация:   0  


Установил другую программу для создания виртуальных COM портов и все заработало ) Извиняюсь за беспокойство )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 2.3.2010, 14:19
Сообщение #24


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

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

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




Репутация:   7  


Доброго времени.

Скажите, а что нужно сделать, чтобы обновить информацию о библиотеке QSerialDevice ? т.к. скоро выйдет новая версия и я хочу, чтобы тут (в исходниках или новостях) это выло видно! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 3.3.2010, 17:03
Сообщение #25


Мастер
******

Группа: Модератор
Сообщений: 3276
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


1. Заходишь в тему: QSerialDevice и так как ты автор, то редактируешь ее.
2. Добавляешь на форум описание...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 3.3.2010, 19:44
Сообщение #26


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

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

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




Репутация:   7  


Итак, анонсирую релиз: QSerialDevice v 0.2.0

Изменений много, писать нет смысла, поэтому предоставляю краткую вырезку аннотации:

QSerialDevice - это кросс-платформенная библиотека для работы с последовательными устройствами, которая использует фрэймворк Qt4 (см. http://qt.nokia.com/).

Требования:

OC : Win2K/WinXP/WinVista/Win7 или любой дистрибутив GNU/Linux
Qt4 : >= 4.5.0
Процессор : любой (который поддерживается Qt4)
Компилятор : любой (который поддерживается Qt4)

Заметки:

В силу того, что Я (автор) не имею возможности протестировать библиотеку на всех возможных операционных системах, всех компиляторах, процессорах и т.п. - то возможно что библиотека в некоторых случаях не будет работать :( .
Библиотека тестировалась только на:
OC : Windows XP Pro Sp3 (win32) и GNU ArchLinux x86_64
Qt4 : от 4.5.3 до 4.6.2
Процессор : AMD Athlon 4400+ 64x2 Socket AM2
Компилятор : gcc, MinGw
Теоретически (с небольшими исправлениями исходного кода) можно добиться того, чтобы библиотека работала и на других платформах.

Библиотека QSerialDevice содержит следующие классы:
  • AbstractSerial
  • SerialDeviceWatcher
  • SerialDeviceInfo


AbstractSerial

Класс AbstractSerial - предоставляет самодостаточный набор методов и свойств для легкой и простой работы с последовательными устройствами (последовательными портами) вашего PC (или другого устройства).
Класс поддерживает следующие возможности:
  • устанавливать скорость обмена данными
  • устанавливать количество бит данных
  • устанавливать количество стоп-бит
  • устанавливать режимы контроля четности
  • устанавливать режимы контроля потока
  • устанавливать таймаут ожидания символа
  • записывать данные в последовательное устройство
  • читать данные из последовательного устройства
  • управлять такими линиями порта как: DTR, RTS
  • читать состояния таких линий порта как: CTS, DSR, DCD, RI, RTS, DTR, ST, SR
  • автоматически получать нотификацию при:
    • приеме хотя бы одного байта (символа) в входной буфер
    • записи последнего байта в выходной буфер
    • изменении состояния последовательного устройства (при ошибках и т.п.)
  • получать текущее значение количества байт в приемном буфере
  • устанавливать таймаут ожидания прихода хотя бы одного байта (символа) в входной буфер

(более подробно см. описание AbstractSerial и исходный код)

SerialDeviceWatcher

Класс SerialDeviceWatcher - является вспомогательным классом для мониторинга последовательных устройств.
Класс предоставляет следующие возможности:
  • получать список имен всех последовательных устройств, которые имеются в системе
  • автоматически получать нотификацию при добавлении/удалении какого либо последовательного устройства

(более подробно см. описание SerialDeviceWatcher и исходный код)

SerialDeviceInfo

Класс SerialDeviceInfo - также является вспомогательным классом для получения информации о последовательном устройстве.
Класс предоставляет следующие возможности:
  • получать "дружественное" имя интересующего нас последовательного устройства
  • получать "описание" интересующего нас последовательного устройства
  • получать VID и PID интересующего нас последовательного устройства (experimental)
  • проверять интересующее нас последовательное устройство на существование
  • проверять интересующее нас последовательное устройство на занятость (блокировку)
  • и т.д.

(более подробно см. описание SerialDeviceInfo и исходный код)

Скачать релиз можно с домашней страницы проекта: http://fireforge.net/frs/?group_id=199
Скачать последние срезы SVN: http://fireforge.net/snapshots.php?group_id=199

Сообщение отредактировал kuzulis - 3.3.2010, 19:51
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mezmay
  опции профиля:
сообщение 30.3.2010, 9:55
Сообщение #27


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

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

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




Репутация:   1  


попробовал...

Сначала написал прогу по получению данных c GPSприемника по COM порту на QextSerialPort, упрощенный фрагмент:
// QextSerialPort
QextSerialPort *port = new QextSerialPort("COM1");
port->setBaudRate(BAUD4800);
port->setFlowControl(FLOW_OFF);
port->setDataBits(DATA_8);
port->setStopBits(STOP_1);
port->setParity(PAR_NONE);
if(port->open(QIODevice::ReadOnly))
QByteArray ba = port->read(100);

получает данные правильно, но иногда очень сильно тормозит на чтении

потом на QSerialDevice, вроде все тоже самое:
// QSerialDevice
AbstractSerial *port = new AbstractSerial();
port->setDeviceName("COM1");
port->setBaudRate(AbstractSerial::BaudRate4800);
port->setFlowControl(AbstractSerial::FlowControlOff);
port->setDataBits(AbstractSerial::DataBits8);
port->setStopBits(AbstractSerial::StopBits1);
port->setParity(AbstractSerial::ParityNone);
if(port->open(QIODevice::ReadOnly | QIODevice::Unbuffered))
QByteArray ba = port->read(100);

- получает некорректные данные... почему? Даже если QIODevice::Unbuffered убрать
Причина редактирования: Убрал гигантскую цитату
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 30.3.2010, 10:03
Сообщение #28


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

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

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




Репутация:   94  


mezmay, не было ни какой нужды цитировать целое сообщение.
См. справку: Справка по кнопкам и тэгам форума
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 31.3.2010, 11:31
Сообщение #29


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

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

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




Репутация:   7  


mezmay,

Задание:
прочитать внимательнее документацию QSerialDevice и посмотреть внимательнее примеры QSerialDevice и найти отличия c тем что у вас и с тем что там
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_dekar_*
сообщение 3.4.2010, 19:05
Сообщение #30





Гости








    


Хм. тут проблемка выползла. Он как-то не особо охотно разблокирует порты при ->close();

Linux: NativeSerialEnginePrivate::nativeOpen(QIODevice::OpenMode mode)
-> function: lockDevice(lockFileName) returned: false. Error!

Linux: NativeSerialEnginePrivate::nativeClose()
-> fd == -1. Error!

После чего, конечно же, повторно не открывает, но и не работает. Руками убираю lock-файл. Есть мысль, где копать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

44 страниц V  < 1 2 3 4 5 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 17.1.2018, 4:23