• 0
Vanka

Serial port

Вопросы

Добрый день!

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

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

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

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


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

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

  • 0

Спасибо за ссылку, но я не случайно задал вопрос в разделе Android.

Мне нужен доступ к порту под Android.

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


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

Мне нужен доступ к порту под Android.

А можно уточнить, а что под Android есть последовательный порт или все же работа будет через USB или ...?

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

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


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

Вот хороший вопрос. Т.е. аппаратно будет использоваться конечно переходник COM <> USB и подключаться к Андроид устройству по кабелю OTG, но программно должен быть именно доступ к последовательному порту.

Вот есть тема http://fire-monkey.ru/topic/246-kak-rabotat-s-vneshnimi-ustroistvami-cherez-usb/ про подключение usb, и вроде какие-то данные принимаются, но никакого упоминания про настройки порта (скорость передачи и пр.) в примере нет.

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


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

Тогда следующий вопрос, а на каком чипе будет собран этот переходник? T.е. есть ли дня него драйвера под Android?

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


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

Тогда наверно придется добавлять jar библиотеки в проект.

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

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


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

поиском никто не пользуется

Возможно там проблема в том что в исходниках TComPort используется Windows, а значит нужно вносить изменения в код.

 

Vanka, проект для плей маркета?

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

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


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

Возможно там проблема в том что в исходниках TComPort используется Windows, а значит нужно вносить изменения в код.

 

Vanka, проект для плей маркета?

 

 там в ComPort.pas все полностью на winAPI, изменениями не отделаться, под андроид не годится. GASHE прав, надо подключать java, давно хотел попробовать, времени все нет, вот тут пишут как http://delphifmandroid.blogspot.ru/2014/07/java_11.html

Изменено пользователем Камышев Александр

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


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

GASHE прав, надо подключать java, давно хотел попробовать, времени все нет, вот тут пишут как http://delphifmandroid.blogspot.ru/2014/07/java_11.html

Да, не плохо бы научится (видимо проще создавать обертки через Java2OP). Под java больше реализовано.

https://github.com/mik3y/usb-serial-for-android

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

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


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

Разбираюсь с созданием оберток.

 

Пытаюсь создать обертку для пакета com.hoho.android.usbserial.driver (https://github.com/mik3y/usb-serial-for-android).

Действую по статье (http://delphifmandroid.blogspot.ru/2014/07/java_11.html), подготовил build.bat (скачать можно здесь https://yadi.sk/d/DuEzRNHAmjRkT). Использую RAD Studio XE10.

 

Пока застрял на преобразовании jar в dex. При исполнении файла build.bat получаю вот такую ошибку:

processing archive D:\projects\Android\RADStudio_SerialPort\java\output\jar\test_classes.jar...
ignored resource META-INF/MANIFEST.MF
processing UsbSerialPort.class...


UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
        at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
        at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
        at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
        at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
        at com.android.dx.command.dexer.Main.processClass(Main.java:704)
        at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
        at com.android.dx.command.dexer.Main.access$300(Main.java:83)
        at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
        at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
        at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
        at com.android.dx.command.dexer.Main.processOne(Main.java:632)
        at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
        at com.android.dx.command.dexer.Main.run(Main.java:246)
        at com.android.dx.command.dexer.Main.main(Main.java:215)
        at com.android.dx.command.Main.main(Main.java:106)
...while parsing UsbSerialPort.class


1 error; aborting

Предлагаю общими усилиями разобраться в этом вопросе.

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

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


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

От того же автора есть статья http://delphifmandroid.blogspot.ru/2015/03/jar.html#more где вроде все проще.

 

Но после подключения jar файла к проекту появляется ошибка:

[Exec Error] The command "PATH C:\Program Files\Java\jdk1.8.0_66\bin;C:\Users\Public\Documents\Embarcadero\InterBase\redist\InterBaseXE7\IDE_spoof;C:\Program Files (x86)\Embarcadero\Studio\17.0\bin;C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl;C:\Program Files (x86)\Embarcadero\Studio\17.0\bin64;C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl\Win64;C:\ProgramData\Oracle\Java\javapath;C:\Windows\Microsoft.NET\Framework\v1.1.4322\;C:\Program Files (x86)\Borland\BDS\4.0\Bin;C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin;C:\Users\Public\Documents\RAD Studio\7.0\Bpl;C:\Program Files (x86)\CodeGear\RAD Studio\5.0\bin;C:\Users\Public\Documents\RAD Studio\5.0\Bpl;C:\Program Files (x86)\CollabNet\Subversion Client;C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\bin;C:\Users\Public\Documents\RAD Studio\8.0\Bpl;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseHg\;C:\Program Files (x86)\Borland\CaliberRM SDK 2005 R2\lib;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Skype\Phone\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files\Java\jdk1.8.0_66\bin;C:\Users\vanka\Documents\Borland Studio Projects\Bpl & "C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows\build-tools\22.0.1\dx.bat" --dex --output="D:\projects\Android\USB2\Android\Debug\usbserial-dexed.jar" "D:\projects\Android\USB2\usbserial.jar"" exited with code 1.

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


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

С батником разобрался.

 

Случайно наткнулся на комментарий:

 

When the small Java source files get compiled, the Android dx tool expects them to be compiled by the JDK 1.6.x compiler as opposed to the JDK 1.7.x compiler. If you have JDK 1.7.x installed, you hit a problem with dx reporting: bad class file magic (cafebabe) or version (0033.0000)
However, to avoid forcing a reinstall of JDK 1.6 you might like to modify build.bat batch files and add in extra command line switches to the javac.exe command-lines. You need to insert this after the javac.exe command to force Java 1.6 byte code output, which is digestible by the Android dx command: -source 1.6 -target 1.6
 

 

 

Добавив эти ключи я получил classes.dex.
 

Теперь вопрос: в интерфейсе обертки надо прописывать все поля и методы класса или только необходимые?

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

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


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

Еще у меня не работает Java2OP.exe

При передаче ему jar вообще ничего не выдает, а если передать папку с исходниками выдает пустую обертку:

 

{*******************************************************}
{                                                       }
{           CodeGear Delphi Runtime Library             }
{ Copyright(c) 2014 Embarcadero Technologies, Inc.      }
{                                                       }
{*******************************************************}


unit Androidapi.JNI.Interfaces;


interface


uses
  Androidapi.JNIBridge;


type
// ===== Forward declarations =====




// ===== Interface declarations =====


implementation


procedure RegisterTypes;
begin
end;


initialization
  RegisterTypes;
end.

 

Java2OP скачивал в архиве, с embarcadero не удалось скачать, хотя у меня лицензионная версия (правда академическая).

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

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


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

Vanka, плохо быть самым умным - спросить не у кого, судя по проделанной работе это Вы теперь эксперт...

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


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

Vanka, .jar файлы открываются на компе?

скорей всего java требует обнову, такая же песня была.

 

все компилилось, а .jar файлы (виндовые програмки) не запускались

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


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

Zuby, jar файлы смотрел через zip архиватор (если вы об этом) - все ок.

 

А что именно вы обновляли, с какой версии на какую?

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


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

Нет, не просмотр, а запуск приложений с расширением .jar. Не знали?

Java последние версию ставил, восьмую если не ошибаюсь.

Только после этого нужно заменить пути к джава в опциях Delphi. Иначе собирать не сможете

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


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

Нет, не просмотр, а запуск приложений с расширением .jar. Не знали?

 

Так у меня же в jar не приложение, а пакет. Его не запустишь.

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


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

 

Нет, не просмотр, а запуск приложений с расширением .jar. Не знали?

 

Так у меня же в jar не приложение, а пакет. Его не запустишь.

 

это я говорил для проверки работоспособности java.

jata2op скорей все поэтому не работает, нужно обновить java

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Да нет, с java все в порядке. Стоит jdk1.8.0_66. Под NetBeans все работает.
 
Мне подсказали, что java2op теперь поставляется вместе с RadStudio.
Запустил новый файл java2op получил другие ошибки:
 
Warning: error opening ReservedWordsOP.txt
Warning: error opening ReservedWordsC.txt
Parsing xml: c:\Program Files (x86)\Embarcadero\Studio\17.0\bin\converters\java2op\bootclasses.xml
Parsing jar: usbserial.jar
 
Не подскажете, что за файлы ReservedWordsOP.txt и  ReservedWordsC.txt?

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


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

Не подскажете, что за файлы ReservedWordsOP.txt и  ReservedWordsC.txt

 

Если я правильно понял то ответ тут.

 

Еще у меня не работает Java2OP.exe

 

Вы бы батник нарисовали, может у кого и есть эти файлы.

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

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


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

 

Если я правильно понял то ответ тут.
 

Вы бы батник нарисовали, может у кого и есть эти файлы.

Видимо неправильно. В архиве по ссылке лежат файлы 

  • bin\converters\java2op\bootclasses.jar
  • bin\converters\java2op\bootclasses.xml

А они-то у меня есть. А вот что за файлы  ReservedWordsOP.txt и  ReservedWordsC.txt понять не могу.

 

 

А про какой батник идет речь?

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


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

 

Ну не батник, а командную строку запуска Java2Op.

 

 В архиве по ссылке лежат файлы 

 

А вы скачивали?

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


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

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

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

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

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

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

Войти

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

Войти

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

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