github seria android,GitHub - mik3y/usb-serial-for-android: Android USB host serial driver library f...

badge.svg

68747470733a2f2f6a69747061636b2e696f2f762f6d696b33792f7573622d73657269616c2d666f722d616e64726f69642e737667

68747470733a2f2f6170702e636f646163792e636f6d2f70726f6a6563742f62616467652f47726164652f6566373939626261386137333433383138616630613930656261336563623436

68747470733a2f2f636f6465636f762e696f2f67682f6d696b33792f7573622d73657269616c2d666f722d616e64726f69642f6272616e63682f6d61737465722f67726170682f62616467652e737667

usb-serial-for-android

This is a driver library for communication with Arduinos and other USB serial hardware on

Android, using the

Android USB Host Mode (OTG)

available since Android 3.1 and working reliably since Android 4.2.

No root access, ADK, or special kernel drivers are required; all drivers are implemented in

Java. You get a raw serial port with read(), write(), and other functions for use with your own protocols.

Quick Start

1. Add library to your project:

Add jitpack.io repository to your root build.gradle:

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

Add library to dependencies

dependencies {

implementation 'com.github.mik3y:usb-serial-for-android:3.4.0'

}

2. If the app should be notified when a device is attached, add

device_filter.xml

to your project's res/xml/ directory and configure in your AndroidManifest.xml.

android:name="..."

...>

android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"

android:resource="@xml/device_filter" />

3. Use it! Example code snippet:

open device:

// Find all available drivers from attached devices.

UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);

List availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);

if (availableDrivers.isEmpty()) {

return;

}

// Open a connection to the first available driver.

UsbSerialDriver driver = availableDrivers.get(0);

UsbDeviceConnection connection = manager.openDevice(driver.getDevice());

if (connection == null) {

// add UsbManager.requestPermission(driver.getDevice(), ..) handling here

return;

}

UsbSerialPort port = driver.getPorts().get(0); // Most devices have just one port (port 0)

port.open(connection);

port.setParameters(115200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE);

then use direct read/write

port.write(request, WRITE_WAIT_MILLIS);

len = port.read(response, READ_WAIT_MILLIS);

or direct write + event driven read:

usbIoManager = new SerialInputOutputManager(usbSerialPort, this);

usbIoManager.start();

...

port.write("hello".getBytes(), WRITE_WAIT_MILLIS);

@Override

public void onNewData(byte[] data) {

runOnUiThread(() -> { textView.append(new String(data)); });

}

and finally:

port.close();

For a simple example, see

UsbSerialExamples

folder in this project.

For a more complete example with background service to stay connected while

the app is not visible or rotating, see separate github project

SimpleUsbTerminal.

Probing for Unrecognized Devices

Sometimes you may need to do a little extra work to support devices which

usb-serial-for-android doesn't (yet) know about -- but which you know to be

compatible with one of the built-in drivers. This may be the case for a brand

new device or for one using a custom VID/PID pair.

UsbSerialProber is a class to help you find and instantiate compatible

UsbSerialDrivers from the tree of connected UsbDevices. Normally, you will use

the default prober returned by UsbSerialProber.getDefaultProber(), which

uses the built-in list of well-known VIDs and PIDs that are supported by our

drivers.

To use your own set of rules, create and use a custom prober:

// Probe for our custom CDC devices, which use VID 0x1234

// and PIDS 0x0001 and 0x0002.

ProbeTable customTable = new ProbeTable();

customTable.addProduct(0x1234, 0x0001, CdcAcmSerialDriver.class);

customTable.addProduct(0x1234, 0x0002, CdcAcmSerialDriver.class);

UsbSerialProber prober = new UsbSerialProber(customTable);

List drivers = prober.findAllDrivers(usbManager);

// ...

Of course, nothing requires you to use UsbSerialProber at all: you can

instantiate driver classes directly if you know what you're doing; just supply

a compatible UsbDevice.

Compatible Devices

This library supports USB to serial converter chips:

FTDI FT232R, FT232H, FT2232H, FT4232H, FT230X, FT231X, FT234XD

Prolific PL2303

Silabs CP2102 and all other CP210x

Qinheng CH340, CH341A

and devices implementing the CDC/ACM protocol like

Arduino using ATmega32U4

Digispark using V-USB software USB

BBC micro:bit using ARM mbed DAPLink firmware

...

Help & Discussion

For common problems, see the FAQ wiki page.

Are you using the library? Add your project to

ProjectsUsingUsbSerialForAndroid.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值