Работа с COM портом в Android приложениях

в 13:50, , рубрики: android, android development, RS232, usb, Железо, Разработка под android, метки: , , ,

Все доброго времени суток!

Однажды я задумался над разработкой приложения, которое требовало бы общения с hardware устройством, через COM порт. Хотя Android заботливо предоставляет api для работы с usb устройствами, оно мне к сожалению не подходило, так как хотелось осуществлять поддержку моего старого планшета на базе андроид версии 2.2. Стандартное api ото Гугла, не подходило

по двум причинам:

  • во первых оно не сработало для меня.
  • девайс у меня все-таки старенький

Итак, после длительного поиска в интернете, я наткнулся на очень интересное решение android-serialport-api. Данное решение представляет собой Java обертку в которой через JNI в которой осуществляются вызовы к USB устройству.

Разработчики библиотеки предлагают 4 различных варианта подключения Android устройства к COM порту через USB.

image

Так как я имел в своем распоряжении планшет с USB host портом, и у меня под рукой имеется USB to RS232 преобразователь, то я пошел по варианту номер 2.

Преимущества и недостатки такого решения заключаются в

Преимущества

  • USB — RS232 преобразователь можно легко найти на ближайшем радио рынке
  • никаких извращений с моим дорогим моему сердцу планшетом
  • возможная высокая скорость передачи информации

Недостатки

  • потребуется USB хост коннектор
  • возможно, что девайс придется рутануть

Итак приступим!

Тут я опишу подход в использовании этой библиотеки.

          serialPortFinder.getAllDevices();  // так мы попробуем найти все usb-хост в файловой системе.
          
           serialPortFinder.getAllDevicesPath(); // и пути к ним

           SerialPort  mSerialPort = new SerialPort(foundedDeviceFormSerialPortFinder, 9600, 0);

           OutputStream outputStream = mSerialPort.getOutputStream();
           InputStream   inputStream = mSerialPort.getInputStream();
            
           // дальше собственно и происходит чтение из стрима или запись в него

Для корректной работы serialPortFinder необходимо чтобы переходник USB-RS232 был подключен, определен в /dev.

Вот таким нехитрым способом можно осуществлять общение с очень большим количеством железа через COM порт,

Автор: Artemis4You

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js