QSerialDevice - Библиотека для работы с COM-портами |
Здравствуйте, гость ( Вход | Регистрация )
QSerialDevice - Библиотека для работы с COM-портами |
kuzulis |
9.1.2011, 13:21
Сообщение
#191
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
Цитата Строки коммутатор воспринимает, а вот управляющие символы в String отправить не получается, коммутатор воспринимает их как строку и все. Ну так смекнуть нужно и формировать данные в виде QByteArray и слать их устройству.
Это же элементарно, Ватсон (с) Сообщение отредактировал kuzulis - 9.1.2011, 13:23 |
|
|
Алексей1153 |
9.1.2011, 13:33
Сообщение
#192
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
|
|
|
Sasha07 |
9.1.2011, 16:52
Сообщение
#193
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 7.1.2011 Пользователь №: 2330 Спасибо сказали: 0 раз(а) Репутация: 0 |
Цитата Это же элементарно, Ватсон (с) , благодарю - работает. Еще раз спасибо за библиотеку! |
|
|
Litkevich Yuriy |
9.1.2011, 18:57
Сообщение
#194
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
good835 |
11.1.2011, 19:32
Сообщение
#195
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 5.8.2010 Пользователь №: 1933 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый день!
Работаю с некоторой железкой, которая работает в режиме С Управлением потоком. Обновил библиотеку из репозитария, появилось несколько вопросов: 1. Теперь после открытия порта IsOpenCorrectrly = MyDevice->open(AbstractSerial::ReadWrite) железка говорит, что RTS установлен, раньше такого не было 2. После успешного открытия порта и установки параметров пытаюсь установить RTS порт сконфигурирован как (MyDevice->setFlowControl(AbstractSerial::FlowControlOff); MyDevice->setRts(true) возвращает false? Если же порт был сконфигурирован без управления потоком (MyDevice->setFlowControl(AbstractSerial::FlowControlOff), то RTS - успешно устанавливается и ПРОГРАММА УСПЕШНО работает, так, как будто управление потоком установлено. Спасибо. Добрый день! Работаю с некоторой железкой, которая работает в режиме С Управлением потоком. Обновил библиотеку из репозитария, появилось несколько вопросов: 1. Теперь после открытия порта IsOpenCorrectrly = MyDevice->open(AbstractSerial::ReadWrite) железка говорит, что RTS установлен, раньше такого не было 2. После успешного открытия порта и установки параметров пытаюсь установить RTS порт сконфигурирован как (MyDevice->setFlowControl(AbstractSerial::FlowControlOff); MyDevice->setRts(true) возвращает false? Если же порт был сконфигурирован без управления потоком (MyDevice->setFlowControl(AbstractSerial::FlowControlOff), то RTS - успешно устанавливается Спасибо. |
|
|
kuzulis |
11.1.2011, 20:56
Сообщение
#196
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
Вообще-то я не тестировал связь с управлением потоком. (Тестировал только без, т.к. влом было паять нуль-модемный кабель с подключением всех 9-ти пинов).
Так что проверить не смогу, имею только GND, RX, TX Что за ОС? Цитата 1. Теперь после открытия порта IsOpenCorrectrly = MyDevice->open(AbstractSerial::ReadWrite) железка говорит, что RTS установлен, раньше такого не было Насчет установки RTS и DTR - то да, при открытии порта они устанавливаются (по крайней мере в винде)! Просто в Винде (а я подозреваю, что вы в ней кодите) ранее метод lineStatus() не мог определять состояния линий DTR и RTS. Эта фича (определение статуса этих линий) появилась буквально неделю назад. Если я правильно понял. Я думаю (на днях) добавить в метод открытия порта еще возможность указания желаемого состояния линий DTR, RTS порта. То, что происходит сейчас - хз что, я копипастил эти методы из QextSerialPort особо не проверяя их. В общем, нужно разобраться. Попробуйте поиграться при открытии с флагами из DCB (для винды): Цитата ... fDtrControl ... fRtsControl ... и напишите что вышло и с какими комбинациями для разных режимов контроля потока. Цитата 2. После успешного открытия порта и установки параметров пытаюсь установить RTS порт сконфигурирован как (MyDevice->setFlowControl(AbstractSerial::FlowControlOff); MyDevice->setRts(true) возвращает false? Если же порт был сконфигурирован без управления потоком (MyDevice->setFlowControl(AbstractSerial::FlowControlOff), то RTS - успешно устанавливается и ПРОГРАММА УСПЕШНО работает, так, как будто управление потоком установлено. По идее, если установлен аппаратный контроль управления потоком - то setRts и не должен работать, т.к. всю работу делает драйвер, хотя ХЗ. В общем, нужно упорно разбираться еще. ЗЫ: Я тут пишу тестовое GUI приложение (с кнопочками, терминалом и т.п.) в котором можно будет опробовать все краеугольные моменты, думаю, завтра к вечеру (по мск.) выложу в Git. Вот тогда и начну вникать, а пока что, пробуйте сами понять в чем проблема. |
|
|
good835 |
12.1.2011, 12:46
Сообщение
#197
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 5.8.2010 Пользователь №: 1933 Спасибо сказали: 0 раз(а) Репутация: 0 |
Продолжаю разобираться с работой порта в режиме упаравления потоком
fRtsControl - пробовал в двух вариантах RTS_CONTROL_ENABLE (это то что нужно моему приложению) и RTS_CONTROL_HANDSHAKE в обоих вариантах - RTS устанавливается либо при открытии порта (по моему читается предыдущая конфигурация порта DCB, так как порт еще не конфигурился) либо при конфигурировании setFlowControl(AbstractSerial::FlowControlOff) при этом 1. функция setRTS(true) - возвращает false - но возможно это и правильно, так как RTS уже активен 2. функция lineStatus() - говорит что RTS - не установлен ??? вот это не понятно если открыть порт без управления потоком, то связка setRTS(true) + lineStatus() - отрабатывает нормально |
|
|
good835 |
12.1.2011, 14:06
Сообщение
#198
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 5.8.2010 Пользователь №: 1933 Спасибо сказали: 0 раз(а) Репутация: 0 |
небольшое дополнение
возможно вызов lineStatus() - должен быть с некоторый таймаутом после открытия и конфигурирования порта если смотреть после открытия - то RTS - не установлен если через паузу (не таймером просто некоторые задачки еще выполняются перед записью) - то RTS установлен |
|
|
silver47 |
8.2.2011, 12:37
Сообщение
#199
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Доброго времени суток.
У меня такая проблема появилась. Заметил, что читаю из порта максимум 4096 байт. Чтение происходит таким образом:
Где я ошибся? Спасибо. |
|
|
Litkevich Yuriy |
8.2.2011, 14:03
Сообщение
#200
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
дак наверное буфер порта имеет только 4к, смотри в настройках драйвера устройства
|
|
|
Текстовая версия | Сейчас: 11.12.2024, 12:11 |