Russian Qt Forum
Ноябрь 27, 2024, 00:10
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
[РЕШЕНО] QtSerialPort не принимает байты (Linux)
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: [РЕШЕНО] QtSerialPort не принимает байты (Linux) (Прочитано 6654 раз)
vyacheslav
Гость
[РЕШЕНО] QtSerialPort не принимает байты (Linux)
«
:
Ноябрь 02, 2014, 21:29 »
Всем привет.
Вопрос в следующем:
Есть два устройства ADAM-4561 основаны на (pl2303), написал программу наподобие terminal из примеров, на винде вссё работате на ура, на линуксе (SUSE 13.1) не хочет. Запускал terminal из примеров, эффект тот же.
Может кто знает куда копать?
Ошибок при открытии/передачи нет. На осциллографе передача идёт, настройка на разные скорости тоже проходит. Такое ощущение, что система не выдаёт из своего буфера, потому как если поиграться с открытием разных портов, то иногда при открытии вываливается мусор в виде моих ранее переданных данных.
Очень прошу помощи, хотелось весь свой софт перенести на линукс, а из-за этого ни как!
«
Последнее редактирование: Ноябрь 06, 2014, 15:24 от vyacheslav
»
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: QtSerialPort не принимает байты (Linux)
«
Ответ #1 :
Ноябрь 02, 2014, 22:57 »
С pl2303 отлично работает в Linux.
Цитата: vyacheslav
Запускал terminal из примеров, эффект тот же.
Это странно.
Какая версия QtSerialPort? Другие терминалки работают? Используется RS485/232? DIP переключатели установлены корректно?
В каком режиме открывается порт (с какими настройками) ?
«
Последнее редактирование: Ноябрь 02, 2014, 23:08 от kuzulis
»
Записан
ArchLinux x86_64 / Win10 64 bit
vyacheslav
Гость
Re: QtSerialPort не принимает байты (Linux)
«
Ответ #2 :
Ноябрь 03, 2014, 11:35 »
Цитировать
Какая версия QtSerialPort?
Поставил последнюю Qt с офф сайта. Пробовал 32 и 64 bit, а также более старую из репозитория suse.
Цитировать
Другие терминалки работают?
Можно поподробней, какие. Пробовал через minicom, ничего не получилось.
Цитировать
Используется RS485/232? DIP переключатели установлены корректно?
Использую 485. Там один переключатель, он установлен в автоматическое управление направления линией передачи.
проверил в режиме 232, всё нормально, всё работает.
т.е. проблема остаётся в системе. Кто нибудь может подсказать как нибудь можно настроить драйвер, для работы с 485?
сами адаптеры работающие, в винде всё работает.
«
Последнее редактирование: Ноябрь 03, 2014, 11:58 от vyacheslav
»
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: QtSerialPort не принимает байты (Linux)
«
Ответ #3 :
Ноябрь 03, 2014, 13:43 »
Цитата: vyacheslav
Можно поподробней, какие. Пробовал через minicom, ничего не получилось.
Значит что-то с железкой не то или еще что-то.
Цитата: vyacheslav
Использую 485.
А правильно Rx/Tx подключены?
Цитата: vyacheslav
проверил в режиме 232, всё нормально, всё работает.
т.е. проблема остаётся в системе
С чего это вдруг? А может в твоей железке?
Цитата: vyacheslav
Кто нибудь может подсказать как нибудь можно настроить драйвер, для работы с 485?
Не нужно ничего настраивать. PL2303 предоставляет только 232 интерфейс. Остальное (485) доделывают уже другие чипы,
которые внутри твоего адама.
Как вариант - попробовать замерить состояние линий DTR/RTS и прочих при открытии порта в Windows и Linux и сравнить.
Возможно что другие микрухи требуют каких-то определенных состояний этих сигналов для корректной работы
(автоопределение направления и прочего).
ИМХО - дохлый адам
«
Последнее редактирование: Ноябрь 03, 2014, 13:45 от kuzulis
»
Записан
ArchLinux x86_64 / Win10 64 bit
vyacheslav
Гость
Re: QtSerialPort не принимает байты (Linux)
«
Ответ #4 :
Ноябрь 03, 2014, 14:08 »
Цитировать
А правильно Rx/Tx подключены?
в 485 нет Rx/Tx, он полудуплексный.
Цитировать
С чего это вдруг? А может в твоей железке?
в винде то работает.
Цитировать
Не нужно ничего настраивать. PL2303 предоставляет только 232 интерфейс. Остальное (485) доделывают уже другие чипы,
которые внутри твоего адама.
в том и прикол что 485 делает сама микруха PL-2303H. дальше только опторазвязка идёт.
Цитировать
Как вариант - попробовать замерить состояние линий DTR/RTS и прочих при открытии порта в Windows и Linux и сравнить.
Срвнмвал всё одиноаково. и данный преобразователь не использует линии DTR/RTS.
Цитировать
ИМХО - дохлый адам Улыбающийся
а в винде воскресает.
так же в первом посте я говорил что после того как я переоткрываю порт (без флуша) из него вываливаеться мусор (не всегда и редко) из моих переданных данных.
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: QtSerialPort не принимает байты (Linux)
«
Ответ #5 :
Ноябрь 03, 2014, 14:22 »
ну хз.
Попробуй это:
http://www.spinics.net/lists/linux-usb/msg83763.html
Ну, и сделай strace
Записан
ArchLinux x86_64 / Win10 64 bit
vyacheslav
Гость
Re: QtSerialPort не принимает байты (Linux)
«
Ответ #6 :
Ноябрь 04, 2014, 15:52 »
Цитировать
Попробуй это:
http://www.spinics.net/lists/linux-usb/msg83763.html
Это не подходит, хотя признаки те же. В новых ядрах это уже реализовано.
Спасибо за помощь, надо будет попробовать какие нить другие преобразователи, походу с этим ничего не получиться.
Записан
vyacheslav
Гость
Re: QtSerialPort не принимает байты (Linux)
«
Ответ #7 :
Ноябрь 05, 2014, 15:51 »
Всё я разобрался, когда залес в адам.
До этого я работал по картинке из документации на устройсво, которое как окозалось не соответсвует действительности, внутри действительно стоит pl2303 без буквы Н, и дополнительные преобразователи на 485, которые управляються от сигнала RTS. Так, что я признаю - был неправ.
C помощью функции setRequestToSend() и задержек мне удалось получить стабильную передачу.
Но возник вопрос как высавлять сигнал автоматически?
Я думал setFlowControl(QSerialPort::HardwareControl) будет автоматически выставлять сигнал RTS, а судя по осцилографу он этого не делает.
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: QtSerialPort не принимает байты (Linux)
«
Ответ #8 :
Ноябрь 05, 2014, 16:58 »
Цитата: vyacheslav
Но возник вопрос как высавлять сигнал автоматически?
Эмм.. это должен делать сам ADAM. Вручную нужно управлять RTS только в случае если ADAM не поддерживает автоматическое определение направления.
Но твой ADAM поддерживает автоматическую распознавалку. Возможно что-то ты не доустановил (дип-переключалки).
Цитата: vyacheslav
Я думал setFlowControl(QSerialPort::HardwareControl) будет автоматически выставлять сигнал RTS, а судя по осцилографу он этого не делает.
Это вообще из "другой оперы".
Записан
ArchLinux x86_64 / Win10 64 bit
Bepec
Гость
Re: QtSerialPort не принимает байты (Linux)
«
Ответ #9 :
Ноябрь 05, 2014, 17:05 »
Кстати да, была проблема с адамами. Там внутри дип переключатели на планке.
PS из 2 адамов у меня заработал только один. Второй тоже передавал только в 1 сторону.
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: QtSerialPort не принимает байты (Linux)
«
Ответ #10 :
Ноябрь 05, 2014, 17:07 »
Там еще странность в том, что в "оригинальной" доке указано что используется не PL2303 а CP21xx чип:
http://downloadt.advantech.com/ProductFile/Downloadfile1/1-MDYDEV/ADAM-4561_User_Manual_Ed3.pdf
В общем, ковыряйся с ADAM (возможно он какой-то левый).
«
Последнее редактирование: Ноябрь 05, 2014, 17:09 от kuzulis
»
Записан
ArchLinux x86_64 / Win10 64 bit
vyacheslav
Гость
Re: QtSerialPort не принимает байты (Linux)
«
Ответ #11 :
Ноябрь 06, 2014, 15:22 »
Цитировать
Там еще странность в том, что в "оригинальной" доке указано что используется не PL2303 а CP21xx чип:
http://downloadt.advantech.com/ProductFile/Downloadfile1/1-MDYDEV/ADAM-4561_User_Manual_Ed3.pdf
В общем, ковыряйся с ADAM (возможно он какой-то левый). Улыбающийся
Ну то, что он не левый это точно, может просто один из первых.
Цитировать
Кстати да, была проблема с адамами. Там внутри дип переключатели на планке.
Есть такой. но он для 422 (как написанно).
Посидев с тестером и осцилографом востановил схему платы. И получаеться, что можно с помощью джампера, поставить напралением передачи, всегда на выдачу, либо осуществляеться на прямую с ножки RTS (pl2303). Выходит именно эти адамом в линухе (в винде походу это реализовали в самом драйвере) придётся дергать ножкой самому.
Если ни кто ничего нового не предложить, то можно вопрос считать закрытым. Всем огромное спасибо!
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: [РЕШЕНО] QtSerialPort не принимает байты (Linux)
«
Ответ #12 :
Ноябрь 06, 2014, 18:48 »
А под виндой драйвер стоит стандартный от Prolific? Или некая его кастомизация от Advantech?
Записан
ArchLinux x86_64 / Win10 64 bit
vyacheslav
Гость
Re: [РЕШЕНО] QtSerialPort не принимает байты (Linux)
«
Ответ #13 :
Ноябрь 06, 2014, 20:22 »
Цитировать
А под виндой драйвер стоит стандартный от Prolific? Или некая его кастомизация от Advantech?
Именно кастомизация.
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: [РЕШЕНО] QtSerialPort не принимает байты (Linux)
«
Ответ #14 :
Ноябрь 06, 2014, 21:42 »
Ну, если так (если действительно так) - то скорее всего этот драйвер сам дергает ногами RTS и прочими..
Еще один факт в пользу этого утверждения тот, что в документации к ADAM в качестве поддерживаемых ОС указаны только
Windows (хотя, конечно, это не обязательно так).
Записан
ArchLinux x86_64 / Win10 64 bit
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...