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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSerialPort скорость обмена  (Прочитано 9110 раз)
Eugene1911
Гость
« : Сентябрь 01, 2014, 11:59 »

Здравствуйте Улыбающийся
Мне надо написать программу для отправки данных через СОМ порт на плату. Использую qt 5.2.1, библиотеку QSerialPort. При конфигурации порта не получается установить нужную скорость - 230400. Если написать так:
Код:
serial->setBaudRate(230400)
то отправка данных не идет. Подскажите, пожалуйста, как правильно задать нужную мне скорость.
Записан
VanDerSam
Гость
« Ответ #1 : Сентябрь 01, 2014, 13:07 »

А вы видели такое значение скорости в QSerialPort::BaudRate? Я сам с классом QSerialPort не работал. Но думаю, нужное значение скорости обязательно должны поддерживать микросхемы последовательного интерфейса на обоих концах.
Записан
Eugene1911
Гость
« Ответ #2 : Сентябрь 01, 2014, 13:21 »

Такого значения скорости в QSerialPort::BaudRate нет. В справке приведены следующие скорости:
Цитировать
QSerialPort::Baud1200   1200   1200 baud.
QSerialPort::Baud2400   2400   2400 baud.
QSerialPort::Baud4800   4800   4800 baud.
QSerialPort::Baud9600   9600   9600 baud.
QSerialPort::Baud19200   19200   19200 baud.
QSerialPort::Baud38400   38400   38400 baud.
QSerialPort::Baud57600   57600   57600 baud.
QSerialPort::Baud115200   115200   115200 baud.
QSerialPort::UnknownBaud   -1   Unknown baud. This value is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code.
Записан
vizir.vs
Гость
« Ответ #3 : Сентябрь 01, 2014, 13:21 »

А вы видели такое значение скорости в QSerialPort::BaudRate? Я сам с классом QSerialPort не работал. Но думаю, нужное значение скорости обязательно должны поддерживать микросхемы последовательного интерфейса на обоих концах.

Я видел такое значение. Но не все устройства ее поддерживают.
Вот здесь, парень пишет что с помощью WinAPI работал на этой скорости, а выше не смог.
Вообще все зависит от устройства (например MOXA поддерживает 230400, а какие-нибудь старые устройства нет). И от драйвера. Ну еще у Qt не определены скорости свыше 115200, поэтому если нужны такие скорости то нужно пользоваться WinAPI (если это винда).
« Последнее редактирование: Сентябрь 01, 2014, 13:37 от vizir.vs » Записан
Eugene1911
Гость
« Ответ #4 : Сентябрь 01, 2014, 13:43 »

У меня moxa и винда)) Спасибо за совет, буду разбираться)
Записан
Bepec
Гость
« Ответ #5 : Сентябрь 01, 2014, 14:23 »

Не видел ни 1 устройства с такими скоростями Улыбающийся
Но на Qt 4 пробовал эту скорость по виртуальному порту - работало.
Записан
8Observer8
Гость
« Ответ #6 : Сентябрь 01, 2014, 14:26 »

А нельзя ли поставить скорость поменьше?

P.S. Если что - советую поставить программу, которая создаёт пару виртуальных портов. Одна программа пишет в один, а другая читает из другого. Я использую эту, но у неё ограниченный триал:


Ещё можно поставить ComTester, который отображает данные с порта
Записан
Eugene1911
Гость
« Ответ #7 : Сентябрь 01, 2014, 14:38 »

Цитировать
Не видел ни 1 устройства с такими скоростями
Устройство вот это: http://www.moxa.com.ua/product/usb/np_u1110.htm

Цитировать
Если что - советую поставить программу, которая создаёт пару виртуальных портов. Одна программа пишет в один, а другая читает из другого.
Спасибо, подумаю))
Записан
Bepec
Гость
« Ответ #8 : Сентябрь 01, 2014, 15:00 »

Адаптер то да - такой у меня был, устройства работающего на таких скоростях не было Улыбающийся
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #9 : Сентябрь 01, 2014, 15:06 »

Ну еще у Qt не определены скорости свыше 115200, поэтому если нужны такие скорости то нужно пользоваться WinAPI (если это винда).
Спокойно работаю с CP2103 на скорости 500000 без всяких WinApi, так что, вероятнее это от драйвера зависит.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #10 : Сентябрь 02, 2014, 10:32 »

Цитата: vizir.vs
Ну еще у Qt не определены скорости свыше 115200, поэтому если нужны такие скорости то нужно пользоваться WinAPI (если это винда).

Не не. В перечислении QSerialPort::BaudRate определен просто минимальный набор "стандартных" скоростей от 1200 до 115200 бод. Никто не запрещает в QSerialPort::setBaudRate(qint32) устанавливать любое значение. Но в  QSerialPort::BaudRate перечислен минимальный набор, который уж точно должен поддерживаться всеми девайсами, поэтому не имело смысла пихать туда и другие значения.

Цитата: Eugene1911
Использую qt 5.2.1, библиотеку QSerialPort.

Желательно бы обновиться до Qt 5.3.1, ну, или собрать текущую ветку QtSerialPort, которая появится в 5.3.2.

Цитата: Eugene1911
При конфигурации порта не получается установить нужную скорость - 230400. Если написать так:
Код:
serial->setBaudRate(230400)

Если девайс UPort-1110 поддерживает 230400 - то и QtSerialPort тоже будет поддерживать (девайсы от MOXA - хорошая и надежная весч Улыбающийся ).
Возможно надо скачать и обновить последнюю версию драйвера от MOXA.

Но, мне кажется, что дело тут в другом: возможно не в то время и не в том месте вызывается setBaudRate().
В Qt5.2.1 перед конфигурированием девайса необходимо сначала открыть девайс:
Код
C++ (Qt)
if (serial->open(...)) {
   ...
   if (!serial->setBaudRate(230400))
       return false;
   ...
}
 

Кроме того, необходимо всегда проверять коды возврата на ошибки и прочее, а также - внимательно читать документацию, чтобы не было лишних вопросов.
« Последнее редактирование: Сентябрь 02, 2014, 10:38 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
8Observer8
Гость
« Ответ #11 : Сентябрь 02, 2014, 10:37 »

offtop Такую программку подсказали: ComPorttoolkit. Может действительно полезная: http://www.compt.ru/
Записан
Eugene1911
Гость
« Ответ #12 : Сентябрь 02, 2014, 12:27 »

Да, дело в драйвере оказалось... Обновил, после этого заработало, спасибо Улыбающийся
Девайс сначала открывал, потом конфигурировал, сейчас работает))
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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