crossplatform.ru

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

chu
  опции профиля:
сообщение 18.2.2013, 16:21
Сообщение #1


Студент
*

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

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




Репутация:   0  


Использую QExtSerialPort для работы с СОМ портом. СОМ порт создается при подключении устройства МОХА (USB-RS конвертор).
Пытаюсь записать массив чаров в порт:
int bytes = port->write(pkt, len);

функция write возвращает -1, хотя должна возвращать длину записанных данных.
port->errorString()
возвращает "Неизвестную ошибку".
И что самое интересное, сам массив в порт передается.
В чем может быть проблема?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 17)
Litkevich Yuriy
  опции профиля:
сообщение 18.2.2013, 17:56
Сообщение #2


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

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

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




Репутация:   94  


Копать с помощью отладчика, не исключено, что это драйвер виртуального порта так себя ведёт
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
chu
  опции профиля:
сообщение 19.2.2013, 9:53
Сообщение #3


Студент
*

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

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




Репутация:   0  


Отладчик не хочет залазить внутрь функции write :(
Сегодня определил, что при смене QueryMode с EventDriven на Polling записанные байты считаются нормально и запись проходит успешно, но возникла проблема чтения с порта (сигнал readyRead не срабатывает).


Еще забыл упамянуть: функция lastError() возвращали код ошибки 14. Где можно найти описание этой ошибки?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 19.2.2013, 10:25
Сообщение #4


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

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

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




Репутация:   7  


Цитата
Использую QExtSerialPort для работы с СОМ портом.


Зря, лучше использовать QtSerialPort.

Цитата
Еще забыл упамянуть: функция lastError() возвращали код ошибки 14. Где можно найти описание этой ошибки?


http://www.ioplex.com/~miallen/errcmp.html

Сообщение отредактировал kuzulis - 19.2.2013, 10:26
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
chu
  опции профиля:
сообщение 19.2.2013, 11:28
Сообщение #5


Студент
*

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

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




Репутация:   0  


Цитата(chu @ 19.2.2013, 9:53) *
Зря, лучше использовать QtSerialPort.

Не нашел как установить сей модуль на Windows XP. Не подскажешь как?
Цитата(kuzulis @ 19.2.2013, 10:25) *

Спасибо, полезно, хотя там и нет описания ошибок для Windows, думаю оно не отличается от того что прописано ошибке 14 на остальных системах ...
14 - Bad address. Что бы это могло значить? Адрес порта (СОМ2) виден в системе и команда open срабатывает успешно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 19.2.2013, 11:49
Сообщение #6


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

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

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




Репутация:   7  


Цитата(chu @ 19.2.2013, 12:28) *
Не нашел как установить сей модуль на Windows XP. Не подскажешь как?


Там же в вики все написано как
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
chu
  опции профиля:
сообщение 19.2.2013, 12:49
Сообщение #7


Студент
*

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

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




Репутация:   0  


Цитата(kuzulis @ 19.2.2013, 11:49) *
Там же в вики все написано как

сделал как там написано : 1) qmake 2) mingw32-make 3) mingw32-make install
все прошло без ошибок.
создаю проект. в файле проекта добавляю CONFIG += serialport, но вот строчки
#include <QtAddOnSerialPort/serialport.h>
#include <QtAddOnSerialPort/serialportinfo.h>

компилятор подчеркивает, не находит этих файлов
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 19.2.2013, 12:54
Сообщение #8


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

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

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




Репутация:   7  


Блин, ну ты ж примеры посмотри, Вики не успевает обновляться.

Попробуй:
#include <QtSerialPort/QSerialPortInfo>
#include <QtSerialPort/QSerialPort>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
chu
  опции профиля:
сообщение 19.2.2013, 13:02
Сообщение #9


Студент
*

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

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




Репутация:   0  


kuzulis, спасибо! Буду пробовать с QtSerialPort
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
chu
  опции профиля:
сообщение 19.2.2013, 13:56
Сообщение #10


Студент
*

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

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




Репутация:   0  


И сразу проблема.
При сборке ошибка
Цитата
cannot find -lQtSerialPort
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 19.2.2013, 14:46
Сообщение #11


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

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

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




Репутация:   7  


Цитата(chu @ 19.2.2013, 14:56) *
И сразу проблема.
При сборке ошибка
Цитата
cannot find -lQtSerialPort



Скорее всего ты скомпилил и установил только отладочную версию библиотеки,
а текущий проект компилиш в релизе.

Поэтому он и не находит QtSerialPort, потому что его нету (есть только QtSerialPortd).

Собирай свой проект в дебаге или скомпиль и доустанови релизную версию QtSerialPort
до кучи.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
chu
  опции профиля:
сообщение 19.2.2013, 16:00
Сообщение #12


Студент
*

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

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




Репутация:   0  


kuzulis, еще раз огромное спасибо! Ты оказался прав, в отладочной версии все работает.
Подскажешь как релизную версию QtSerialPort скомпилировать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 19.2.2013, 20:36
Сообщение #13


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

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

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




Репутация:   7  


Цитата(chu @ 19.2.2013, 17:00) *
kuzulis, еще раз огромное спасибо! Ты оказался прав, в отладочной версии все работает.
Подскажешь как релизную версию QtSerialPort скомпилировать?


Лучше установить оба таргета сразу.

Но сначала удали всё что ты установил ранее (почисти всё что касается QtSerialPort: дллки,
заголовки, и т.п из директории с установленной Qt) иначе могут быть конфликты при сборке.

Потом открой файлик src/serialport/serialport.pro и добавь туда:

Цитата
win32|mac:CONFIG += debug_and_release build_all


Пересобери и установи как обычно. Должны установиться обе релизный и дебажный таргеты.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.2.2013, 2:37
Сообщение #14


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

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

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




Репутация:   94  


по-моему можно просто
mingw32-make release
mingw32-make install
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
chu
  опции профиля:
сообщение 20.2.2013, 8:44
Сообщение #15


Студент
*

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

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




Репутация:   0  


kuzulis, в очередной раз спасибо! Установил оба таргета.
Litkevich Yuriy, тоже спасибо. До твоего метода не дошел, сработал первый, предложенный b]kuzulis[/b].
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 20.2.2013, 9:56
Сообщение #16


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

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

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




Репутация:   7  


Цитата(Litkevich Yuriy @ 20.2.2013, 3:37) *
по-моему можно просто
mingw32-make release
mingw32-make install


Можно то можно, если ты еще ничего не устанавливал.

Но там какая-то хрень происходит при сборке из-за того,
что в /features уже установлен файл *.prf от дебажной сборки QtSerialPort.

И из-за этого ты не скомпилиш релиз, будет матюгаться.
Поэтому проще все почистить и собрать сразу все.

По крайней мере так было раньше, может сйчас оно чудесным образом исправилось - не знаю. :)


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
chu
  опции профиля:
сообщение 27.2.2013, 10:01
Сообщение #17


Студент
*

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

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




Репутация:   0  


Не знайте, какая максимальная BaudRate поддерживается QtSerialPort?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 27.2.2013, 10:26
Сообщение #18


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

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

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




Репутация:   7  


Цитата(chu @ 27.2.2013, 11:01) *
Не знайте, какая максимальная BaudRate поддерживается QtSerialPort?

Да любая которая в qint32 вмещается! :)

А по факту - зависит от драйвера железки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.5.2025, 0:10