• 0
Vanka

Serial port

Вопросы

Добрый день!

Необходимо реализовать под Android прием и передачу данных с последовательного порта. Самостоятельно смог найти лишь платный сторонний компонент http://www.winsoft.sk/acomport.htm.

Есть ли возможность решить задачу без компонентов?
Или может есть свободные компоненты с открытым кодом?

Изменено пользователем Vanka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

62 ответа на этот вопрос

  • 0

Как-то заглохла тема

В связи с необходимостью отладки приема данных через USB <> COM очень хочется чтобы одновременно android планшет был подключен к компьютеру (для отладки в среде) и USB устройство к планшету. Купил USB-хаб, думал все получится, но нет, не работает. Может кто знает как такое подключение реализовать?

Вы бы поделились как продвигается, чтоб другим не наступать на те-же грабли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Да я бы с удовольствием, но пока не продвигается. Т.е. продвигается, но, увы, не в RadStudio.

После попыток прикрутить к проекту прием данных с последовательного порта и отображение потокового видео и столкнувшись с таким кол-вом проблем я пришел к выводу, что написать приложение с нужным мне функционалом в RadStudio весьма геморно. И гарантий стабильности и производительности тоже нет.

А на java те же задачи решаются просто. Поэтому пошел изучать Java и Android Studio.

Увы. Учитывая что у меня крупный проект на RadStudio хотелось использовать эту базу, но пока все как-то сыро выглядит. А концепция-то недурна. Жаль.

Изменено пользователем Vanka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Было дело как-то на windows, использовал сторонний пакет с wms картами с hasp ключом разработчика, глюками и нежеланием жить полной жизнью с потоками. 

Функционал: в числе прочего, отрисовка слоев карт со всех основных wms серверов.

 

Задача: подружить с потоками, не париться каждый раз с установками и настройками, ключ положить в сейф, забыть о нем и найти внутреннее спокойствие.

 

Не мудрствуя лукаво, собрал пакет в консольное приложение, анонимный канал (Pipe), замена стандартного ввода\вывода и класс для простоты общения. 

Таким образом, в основном приложении есть класс, который запускает дочерний процесс с вышеуказанной библиотекой и через свой интерфейс запрашивает у него слои в виде массивов. 

Работает стабильно, внутреннее спокойствие стало ближе.

 

Полагаю, что-то подобное, некий провайдер для работы с usb, со спецификой системы конечно, можно сделать на AndroidStudio и XCode.

Через пжоу конечно, но если очень хочется и крупный проект на RadStudio...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Несколько часов не мог понять, при чем тут Java2OP и Classes.dex, пока не прокачал обе темы и не нашел статью «Using a Custom Set of Java Libraries In Your RAD Studio Android Apps».

За то теперь мой класс BootReceiver (extends BroadcastReceiver) добавляется через Project Manager, и проект компилируется и запускается. Правда при загрузке системы ресивер не отрабатывает — днем разберемся.

1. Написал JAVA класс.

2. Скомпилировал в JAR.

3. Сделал обертку при помощи Java2OP.

4. Подключил JAR в Project Manager.

5. Добавил к проекту обертку.

6. Подшаманил AndroidManifest.template.xml (если это нужно в задаче).

7. Пожалуйста → компилируй, собирай.

Это реальный прогресс, по сравнению с ручным формированием DEX (ни Clean не сделать, ни Build Conf поменять). Только не знаю, с какой версии появилась такая возможность.

Изменено пользователем Pax Beach

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
9 часов назад, Pax Beach сказал:

Только не знаю, с какой версии появилась такая возможность.

Появилась с версии XE7.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
12 часа назад, Pax Beach сказал:

Правда при загрузке системы ресивер не отрабатывает — днем разберемся.

Кто-нибудь знал, чтобы сервис автоматически запускался по событию BOOT_COMPLETED, нужно, чтобы сервис был Remote Service?

В этом случае AndroidManifest.xml будет содержать строку <service android:exported="true" android:name="com.embarcadero.services.BootService" />, а это в свою очередь хорошо отразится на успешном запуске вашего сервиса после перезагрузки устройства.

Это была хорошая новость.

Плохая заключается в том, что если сервис уже написан, и вам надо включить его в автозагрузку, придется переписать сервис заново (перенести все написанное из обычного в Remote Service).

Пора делать отдельный топик. Всем благ!

 

Изменено пользователем Pax Beach

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
9 минут назад, Pax Beach сказал:

Пора делать отдельный топик. Всем благ!

Даже ветку на форуме

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Приветствую всех. Тоже возникла необходимость работать с устройством посредством чипа FTDI из-под андроида. На гитхабе есть код. Однако он на JAVA. Подскажите, возможно ли этот код подключить к своему проекту на FMX?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А сначала топика почитать, нет? Там же есть как  создавать обертки через Java2OP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 08.10.2018 в 08:36, GASCHE сказал:

А сначала топика почитать, нет? Там же есть как  создавать обертки через Java2OP.

Прошу прощения за поспешный вопрос.

После прочтения этого топика и нескольких других, у меня возник вопрос: нельзя ли осуществить работу с последовательным портом не используя код на Java? Так как C++Builder предоставляет несколько стандартных модулей для работы с Android API, стал пытаться. За основу взял известный код на гитхабе.

Решил начать с поиска всех подключенных к USB устройств. В файле UsbSerialProber.java из вышеуказанной библиотеки, код которого выполняет поиск устройств, подключены 2 модуля:

import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;

В C++Builder подключил файл Androidapi.Hardware.hpp, так как он более всего подходит по названию к подключаемым модулям в Java коде. И, собственно, на этом все. В этом файле  я не нашел никакого упоминания о USB и, тем более, о UsbDevice и UsbManager. Видимо, надо подключать файлы Android.Hardware.Usb.UsbDevice и Android.Hardware.Usb.UsbManager, но их нет в C++Builder. Наверное, это означает, что необходимо, все таки, писать код на Java и создавать обертку...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
4 часа назад, d7d1cd сказал:

Прошу прощения за поспешный вопрос.

После прочтения этого топика и нескольких других, у меня возник вопрос: нельзя ли осуществить работу с последовательным портом не используя код на Java? Так как C++Builder предоставляет несколько стандартных модулей для работы с Android API, стал пытаться. За основу взял известный код на гитхабе.

Решил начать с поиска всех подключенных к USB устройств. В файле UsbSerialProber.java из вышеуказанной библиотеки, код которого выполняет поиск устройств, подключены 2 модуля:


import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;

В C++Builder подключил файл Androidapi.Hardware.hpp, так как он более всего подходит по названию к подключаемым модулям в Java коде. И, собственно, на этом все. В этом файле  я не нашел никакого упоминания о USB и, тем более, о UsbDevice и UsbManager. Видимо, надо подключать файлы Android.Hardware.Usb.UsbDevice и Android.Hardware.Usb.UsbManager, но их нет в C++Builder. Наверное, это означает, что необходимо, все таки, писать код на Java и создавать обертку...

Можно создать обертку для java-классов, которые есть в исходниках Android с помощью Java2OP, или же руками, посмотрев как раз исходники.

Исходники %sdk_path%\sources\android-nn\android\hardware\usb

android-nn - версия API

И уже эти файлы подключать.

Либо взять готовые от FMXExpress

Изменено пользователем mazayhin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 07.11.2018 в 14:14, d7d1cd сказал:

Прошу прощения за поспешный вопрос.

После прочтения этого топика и нескольких других, у меня возник вопрос: нельзя ли осуществить работу с последовательным портом не используя код на Java? Так как C++Builder предоставляет несколько стандартных модулей для работы с Android API, стал пытаться. За основу взял известный код на гитхабе.

Решил начать с поиска всех подключенных к USB устройств. В файле UsbSerialProber.java из вышеуказанной библиотеки, код которого выполняет поиск устройств, подключены 2 модуля:


import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;

В C++Builder подключил файл Androidapi.Hardware.hpp, так как он более всего подходит по названию к подключаемым модулям в Java коде. И, собственно, на этом все. В этом файле  я не нашел никакого упоминания о USB и, тем более, о UsbDevice и UsbManager. Видимо, надо подключать файлы Android.Hardware.Usb.UsbDevice и Android.Hardware.Usb.UsbManager, но их нет в C++Builder. Наверное, это означает, что необходимо, все таки, писать код на Java и создавать обертку...

Но все же, думаю лучше, скомпилировать JAR и к нему уже делать обертку. Т.к. в противном случае, придется с собой очень много чего тащить в проект (java.*, javax.* и прочие, смотрите, сколько там зависимостей), что можно сказать, равнозначно почти собирать в студии половину android-api

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу