279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712

Serial Port на Android

01.10.2018, 20:57. Показов 6923. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую всех. Написал тестовое приложение, показывающее, сколько COM портов есть в системе и их номера (использовал QSerialPortInfo). На Windows все работает отлично.
Далее скомпилировал и установил это приложение на смартфон Xiaomi Redmi Note 5A, Android 7.1. Подключил к смартфону преобразователь USB-RS232 и убедился с помощью приложения USB Serial Control Panel, что в системе появился последовательный порт. Однако моя тестовая программа этот порт не находит. Говорит, что в системе нет портов.
Как в Qt работать с последовательными портами в Android? Может у меня в SDK не установлен API нужного уровня?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.10.2018, 20:57
Ответы с готовыми решениями:

Qt, Android and Serial Port
Всем добрый день или вечер, а может и ночь. Пытаюсь научить дружить планшет с программой на Qt и последовательным портом. Кто-нибудь...

Сборка Qt Serial Port под Android из source
Добрый день помогите пожалуйтса собарть комплект Serial port под android, скачал сорцы, выставил настройки выдает ошибку, мол не может...

QT serial port
Здравствуйте! пытаюсь заставить работать ком порт в QT для начала решил попробовать простой пример ...

16
42 / 40 / 7
Регистрация: 21.05.2012
Сообщений: 199
01.10.2018, 23:13
Андройд не имеет АПИ для работы с последовательными портами. Единственный вариант - это работать с ними через POSIX, открывая у-ва типа /dev/ttyUSBxx... Но главная проблема в том, что для этого нужно чтобы Андройд-девайс был хакнут (рутован). Тогда можно открыть последовательные порты или с правами суперпользователя, или, возможно, написав какой-нить скрипт который при загрузке системы (или при втыкании УСБ-сериал железяки) автоматом менял ему права доступа через chmod. Как это в действительности делается и получится или нет - я не знаю, сам не пробовал.

> Однако моя тестовая программа этот порт не находит.

Посмотри через эмулятор терминала, создается ли у-во в /dev/ttyACMxx, /dev/ttyUSBxx при втыкании УСБ-сериал железки. Если нет - то ничего как бы просто так не сделаешь... Если создается, но QSerialPortInfo не видит, то попробуй обновить куте (ты кстати не указал какая у тебя версия). Если все-равно не видит - то отлаживай сам и смотри почему.

ЗЫ: В итоге, это все тухлая затея, т.к. QtSerialPort будет удален из поставки куте для Андройда то-ли с 5.12 то ли уже его удалили. В общем случае нужно качать сорцы этого модуля и компилять самостоятельно (при условии что есть возможность зарутовать Андрод девайс).. В иных случаях работать ничего не будет - скажи спасибо Гуглу. Обычно работу с УСБ-сериал портами без рутовых прав делают через УСБ-отг, путем чтения даташита на конкретный УСБ-сериал и посылки/приема в УСБ данных напрямую в енд-пойнты.

Добавлено через 13 минут
UPD: Хотя, нашел кое что https://developer.android.com/things/sdk/pio/uart но не понял, давно ли оно там ил для всех Андройдов ли?

Добавлено через 11 минут
Кажется недавно добавились эти фичи: https://developer.android.com/... s/releases в 2018 году...

Написано что поддерживаются:

SiLabs CP210x
FTDI UART
Prolific PL2303
1
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
02.10.2018, 19:22  [ТС]
kuzulis, спасибо за ответ. У меня переходник USB-RS232 как раз основан на чипе FTDI. У меня установлена версия Qt 5.10. Попробую в ближайшее время установить Qt последней версии и там проверить тестовую программу на предмет обнаружения порта.
0
42 / 40 / 7
Регистрация: 21.05.2012
Сообщений: 199
02.10.2018, 20:27
Да толку от этого нет, если нет прав суперпользователя.
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
02.10.2018, 21:37  [ТС]
Цитата Сообщение от kuzulis Посмотреть сообщение
Да толку от этого нет, если нет прав суперпользователя.
Цитата Сообщение от kuzulis Посмотреть сообщение
Обычно работу с УСБ-сериал портами без рутовых прав делают через УСБ-отг, путем чтения даташита на конкретный УСБ-сериал и посылки/приема в УСБ данных напрямую в енд-пойнты.
Судя по Вашему первому посту толк есть даже без рутовых прав. Подскажите, как из Qt сделать посылку/прием в УСБ данных напрямую в енд-пойнты?
0
42 / 40 / 7
Регистрация: 21.05.2012
Сообщений: 199
02.10.2018, 22:23
> толк есть даже без рутовых прав

Это если через USB напрямую данные слать, но я хз как это делается в Андройде (я просто слышал звон что так тоже можно).

> Подскажите, как из Qt сделать

Никак, JAVA в помощь. (хотя, некоторые вроде LibUSB заводят на Андройде)
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
04.10.2018, 21:11  [ТС]
Ну вот... Давно хочу свою программу для работы с устройством через RS-232 перенести на смартфон. Подумал, что раз Qt кроссплатформенная библиотека, то реализую программу на ее основе сначала для Windows, а затем легко и непринужденно перенесу на Android. А тут такая засада...
0
42 / 40 / 7
Регистрация: 21.05.2012
Сообщений: 199
05.10.2018, 14:23
Вот тут пример как через USB работать: https://github.com/olena-anufr... or-android
1
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
06.10.2018, 21:56  [ТС]
kuzulis, правильно ли я понимаю, что я не могу просто взять этот проект на гитхабе, "прикрутить" его к своему приложению (хотя это, наверняка, невозможно) и получить доступ к COM порту?
0
42 / 40 / 7
Регистрация: 21.05.2012
Сообщений: 199
06.10.2018, 22:54
Не знаю, я не JAVA экшперт. Но оттуда ты можешь взять JAVA код для твоего типа девайса, и обернуть его через Qt-шный androidextras модуль (там куча классов-оберток для андройдовской хрени), и потом дергать твой код (тот JAVA код) из С++.
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.10.2018, 14:16
Цитата Сообщение от kuzulis Посмотреть сообщение
Андройд не имеет АПИ для работы с последовательными портами. Единственный вариант - это работать с ними через POSIX, открывая у-ва типа /dev/ttyUSBxx...
Нужно меньше пить наверное, что бы не противоречить самому себе.

POSIX это что тебе не API ?
QtSerialPort как раз под виндой внутри под капотом использует WinAPI под линукс POSIX.
Как в андроиде не знаю - нет не андроида ни опыта работы с ним, но скорее всего тоже POSIX так как андроид основан на линуксе.

d7d1cd, Из чего следует что теоретически должно работать.
Поэтому нужно разбираться и не слушать всяких.

Первое что я бы проверял - права tty, второе - попробовал сделать обнаружение через нативное апи как в линуксе.
0
42 / 40 / 7
Регистрация: 21.05.2012
Сообщений: 199
08.10.2018, 20:06
> Нужно меньше пить наверное, что бы не противоречить самому себе.

Не глупи (не тупи). На не-рутованом андройде у тебя нет возможности открыть tty. т.к у тебя нет прав доступа. Изменить права ты не можешь так просто. Поэтому это не годится для любых/обычных девайсов... Это годится только в случае если ты сам кастомизируешь сборку Андройда для конкретного девайса и сам продаешь/выпускаешь этот девайс (тогда ты сможешь что-нить подшаманить с доступом или написать там всякие скриптики).

Вариант через USB - это не "правильный" доступ... т.к. эта тупо работа с сериал портом через Ж..пу... тебе надо знать спеку на конкретный чип USB/serial чтобы гнать туда в ендпойнты нужные данные (это что-то вроде эмуляции драйвера). Таким макаром можно с любым девайсом через USB работать (не только с сериал портами), зная их USB протокол.
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.10.2018, 21:10
Я говорил о правах? Я говорил про Api.

USB тут вообще никаким боком спрашивали конкретно про COM порт.

Цитата Сообщение от kuzulis Посмотреть сообщение
а не-рутованом андройде у тебя нет возможности открыть tty. т.к у тебя нет прав доступа. Изменить права ты не можешь так просто. Поэтому это не годится для любых/обычных девайсов...
А в чем тут аномально в правах? Это вроде нормальная ситуация.

В общем ТС стоило погуглить Qt, Android and Serial Port
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
09.10.2018, 11:29
Цитата Сообщение от Avazart Посмотреть сообщение
о скорее всего тоже POSIX так как андроид основан на линуксе.
Linux не POSIX, а Аndroid еще больше не POSIX.

Цитата Сообщение от Avazart Посмотреть сообщение
В общем ТС стоило погуглить Qt, Android and Serial Port
Только внезапно
порт возникает ошибка "Permission denied"
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.10.2018, 11:48
Я имел ввиду
C++
1
int fd  = open("/dev/ttyUSB0",O_RDWR | O_NOCTTY);
http://xanthium.in/Serial-Port... g-on-Linux

И вперед ....



Цитата Сообщение от Dmitriy_M Посмотреть сообщение
порт возникает ошибка "Permission denied"
И что в Android нет аналога sudo или gksudo ?
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
09.10.2018, 11:57
Цитата Сообщение от Avazart Посмотреть сообщение
И что в Android нет аналога sudo или gksudo ?
Нет.
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.10.2018, 13:12
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Нет.
Мм... тогда согласен - беда.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.10.2018, 13:12
Помогаю со студенческими работами здесь

Qt serial port кассовый аппарат
Хочу реализовать обмен с кассовым аппаратом, протокол есть в открытом доступе. Так же есть исходники библиотеки для другого аппарата, но от...

Qt Serial Port отправляет только 3 байта
на компе два порта подсоединены к друг другу . на один ком-порт привязываю свою программу, на другой программу терменал. если отправлять...

Работа Scilab Serial Port Library (COM port)
Как работает Scilab Serial Port Library ? (может кто то встречал описание подробное, поделитесь ссылкой) Нужно получать с COM port...

serial port
Здравствуйте. Использую стандартные классы .net для работы с ком портом. Работу с портом прослушал программой Portmon. Вот кусочек...

Arduino serial port VS
такая проблема ни как не могу получить данные с ариаднино. Ардуина постоянно шлем данные что то вроде "GF2G54. мне их надо просто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

Новые блоги и статьи
Исключения в Java: советы, примеры кода и многое другое
Javaican 18.05.2025
Исключения — это объекты, созданные когда программа сталкивается с непредвиденной ситуацией: файл не найден, сетевое соединение разорвано, деление на ноль. . . Список можно продолжать до бесконечности. . . .
Как сделать SSO (Single Sign-On) в C# приложении
stackOverflow 18.05.2025
SSO — это механизм, позволяющий пользователю пройти аутентификацию один раз и получить доступ к нескольким приложениям без повторного ввода учетных данных. Вы наверняка сталкивались с ним, когда. . .
Kubernetes с Apache Flink для обработки данных в реальном времени
Mr. Docker 17.05.2025
Kubernetes — это целая философия управления распределёнными приложениями. В отличие от "примитивных" решений вроде Docker Swarm, K8s (как его ласково называют в тусовке DevOps-инженеров) предлагает. . .
Использование декораторов в Python
py-thonny 17.05.2025
Если вы когда-нибудь задумывались о том, как красиво расширить функциональность кода без лишней возни и дублирования, декораторы в Python — та самая волшебная палочка, которую вы искали. По сути, это. . .
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
Гибридные квантово-классические вычисления: Примеры оптимизации
EggHead 16.05.2025
Гибридные квантово-классические вычисления — это настоящий прорыв в подходах к решению сложнейших вычислительных задач. Представьте себе союз двух разных миров: классические компьютеры, с их. . .
Использование вебсокетов в приложениях Java с Netty
Javaican 16.05.2025
HTTP, краеугольный камень интернета, изначально был спроектирован для передачи гипертекста с минимальной интерактивностью. Его главный недостаток в контексте современных приложений — это. . .
Реализация операторов Kubernetes
Mr. Docker 16.05.2025
Концепция операторов Kubernetes зародилась в недрах компании CoreOS (позже купленной Red Hat), когда команда инженеров искала способ автоматизировать управление распределёнными базами данных в. . .
Отражение в C# и динамическое управление типами
stackOverflow 16.05.2025
Reflection API в . NET — это набор классов и интерфейсов в пространстве имён System. Reflection, который позволяет исследовать и манипулировать типами, методами, свойствами и другими элементами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru