![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
kuzulis |
![]()
Сообщение
#191
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Строки коммутатор воспринимает, а вот управляющие символы в String отправить не получается, коммутатор воспринимает их как строку и все. Ну так смекнуть нужно и формировать данные в виде QByteArray и слать их устройству.
Это же элементарно, Ватсон (с) Сообщение отредактировал kuzulis - 9.1.2011, 13:23 |
|
|
Алексей1153 |
![]()
Сообщение
#192
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Sasha07 |
![]()
Сообщение
#193
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 7.1.2011 Пользователь №: 2330 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Это же элементарно, Ватсон (с) ![]() Еще раз спасибо за библиотеку! |
|
|
Litkevich Yuriy |
![]()
Сообщение
#194
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
good835 |
![]()
Сообщение
#195
|
Студент ![]() Группа: Новичок Сообщений: 14 Регистрация: 5.8.2010 Пользователь №: 1933 Спасибо сказали: 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 |
![]()
Сообщение
#196
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: ![]() ![]() ![]() |
Вообще-то я не тестировал связь с управлением потоком. (Тестировал только без, т.к. влом было паять нуль-модемный кабель с подключением всех 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 |
![]()
Сообщение
#197
|
Студент ![]() Группа: Новичок Сообщений: 14 Регистрация: 5.8.2010 Пользователь №: 1933 Спасибо сказали: 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 |
![]()
Сообщение
#198
|
Студент ![]() Группа: Новичок Сообщений: 14 Регистрация: 5.8.2010 Пользователь №: 1933 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
небольшое дополнение
возможно вызов lineStatus() - должен быть с некоторый таймаутом после открытия и конфигурирования порта если смотреть после открытия - то RTS - не установлен если через паузу (не таймером просто некоторые задачки еще выполняются перед записью) - то RTS установлен |
|
|
silver47 |
![]()
Сообщение
#199
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Доброго времени суток.
У меня такая проблема появилась. Заметил, что читаю из порта максимум 4096 байт. Чтение происходит таким образом:
Где я ошибся? Спасибо. |
|
|
Litkevich Yuriy |
![]()
Сообщение
#200
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
дак наверное буфер порта имеет только 4к, смотри в настройках драйвера устройства
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 3:33 |