Название: QSerialPort скорость обмена Отправлено: Eugene1911 от Сентябрь 01, 2014, 11:59 Здравствуйте :)
Мне надо написать программу для отправки данных через СОМ порт на плату. Использую qt 5.2.1, библиотеку QSerialPort. При конфигурации порта не получается установить нужную скорость - 230400. Если написать так: Код: serial->setBaudRate(230400) Название: Re: QSerialPort скорость обмена Отправлено: VanDerSam от Сентябрь 01, 2014, 13:07 А вы видели такое значение скорости в QSerialPort::BaudRate? Я сам с классом QSerialPort не работал. Но думаю, нужное значение скорости обязательно должны поддерживать микросхемы последовательного интерфейса на обоих концах.
Название: Re: QSerialPort скорость обмена Отправлено: Eugene1911 от Сентябрь 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. Название: Re: QSerialPort скорость обмена Отправлено: vizir.vs от Сентябрь 01, 2014, 13:21 А вы видели такое значение скорости в QSerialPort::BaudRate? Я сам с классом QSerialPort не работал. Но думаю, нужное значение скорости обязательно должны поддерживать микросхемы последовательного интерфейса на обоих концах. Я видел такое значение. Но не все устройства ее поддерживают. Вот здесь (http://forums.codeguru.com/showthread.php?359983-Serial-Communication-Speed-over-than-230400-bauds), парень пишет что с помощью WinAPI работал на этой скорости, а выше не смог. Вообще все зависит от устройства (например MOXA поддерживает 230400, а какие-нибудь старые устройства нет). И от драйвера. Ну еще у Qt не определены скорости свыше 115200, поэтому если нужны такие скорости то нужно пользоваться WinAPI (если это винда). Название: Re: QSerialPort скорость обмена Отправлено: Eugene1911 от Сентябрь 01, 2014, 13:43 У меня moxa и винда)) Спасибо за совет, буду разбираться)
Название: Re: QSerialPort скорость обмена Отправлено: Bepec от Сентябрь 01, 2014, 14:23 Не видел ни 1 устройства с такими скоростями :)
Но на Qt 4 пробовал эту скорость по виртуальному порту - работало. Название: Re: QSerialPort скорость обмена Отправлено: 8Observer8 от Сентябрь 01, 2014, 14:26 А нельзя ли поставить скорость поменьше?
P.S. Если что - советую поставить программу, которая создаёт пару виртуальных портов. Одна программа пишет в один, а другая читает из другого. Я использую эту, но у неё ограниченный триал: (http://i.pixs.ru/storage/9/2/4/313png_2240777_13661924.png) Ещё можно поставить ComTester, который отображает данные с порта Название: Re: QSerialPort скорость обмена Отправлено: Eugene1911 от Сентябрь 01, 2014, 14:38 Цитировать Не видел ни 1 устройства с такими скоростями Устройство вот это: http://www.moxa.com.ua/product/usb/np_u1110.htmЦитировать Если что - советую поставить программу, которая создаёт пару виртуальных портов. Одна программа пишет в один, а другая читает из другого. Спасибо, подумаю))Название: Re: QSerialPort скорость обмена Отправлено: Bepec от Сентябрь 01, 2014, 15:00 Адаптер то да - такой у меня был, устройства работающего на таких скоростях не было :)
Название: Re: QSerialPort скорость обмена Отправлено: alex312 от Сентябрь 01, 2014, 15:06 Ну еще у Qt не определены скорости свыше 115200, поэтому если нужны такие скорости то нужно пользоваться WinAPI (если это винда). Спокойно работаю с CP2103 на скорости 500000 без всяких WinApi, так что, вероятнее это от драйвера зависит.Название: Re: QSerialPort скорость обмена Отправлено: kuzulis от Сентябрь 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 перед конфигурированием девайса необходимо сначала открыть девайс: Код
Кроме того, необходимо всегда проверять коды возврата на ошибки и прочее, а также - внимательно читать документацию, чтобы не было лишних вопросов. Название: Re: QSerialPort скорость обмена Отправлено: 8Observer8 от Сентябрь 02, 2014, 10:37 offtop Такую программку подсказали: ComPorttoolkit. Может действительно полезная: http://www.compt.ru/
Название: Re: QSerialPort скорость обмена Отправлено: Eugene1911 от Сентябрь 02, 2014, 12:27 Да, дело в драйвере оказалось... Обновил, после этого заработало, спасибо :)
Девайс сначала открывал, потом конфигурировал, сейчас работает)) |