android设备使用usb串口传输数据

  首先介绍两个开源项目一个是Google的开源项目:https://code.google.com/archive/p/android-serialport-api/

另一个是我们这次介绍的开源项目:https://github.com/mik3y/usb-serial-for-android

  

 第一步:获取所有的已插入的串口驱动

1 UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
2 List<UsbSerialDriver> availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);
3 if (availableDrivers.isEmpty()) {
4   return;
5 }

 

然后,我们选择第一个dirver ,连接设备

1 UsbSerialDriver driver = availableDrivers.get(0);
2 UsbDeviceConnection connection = manager.openDevice(driver.getDevice());
3 if (connection == null) {
4   // You probably need to call UsbManager.requestPermission(driver.getDevice(), ..)
5   return;
6 }

接下来就可以读数据了

 1 // Read some data! Most have just one port (port 0).
 2 UsbSerialPort port = driver.getPorts().get(0);
 3 try {
 4   port.open(connection);
 5 //设置串口的波特率、数据位,停止位,校验位
 6   port.setParameters(115200, 8, UsbSerialPort.STOPBITS_1, UsbSerialPort.PARITY_NONE);
 7
 8   byte buffer[] = new byte[16];
 9   int numBytesRead = port.read(buffer, 1000);
10   Log.d(TAG, "Read " + numBytesRead + " bytes.");
11 } catch (IOException e) {
12   // Deal with error.
13 } finally {
14   port.close();
15 }

当然,我们可以给串口添加个监听

 1  1 private final ExecutorService mExecutor = Executors.newSingleThreadExecutor();
 2  2 private SerialInputOutputManager mSerialIoManager;
 3  3
 4  4 private final SerialInputOutputManager.Listener mListener =
 5  5             new SerialInputOutputManager.Listener() {
 6  6                 @Override
 7  7                 public void onRunError(Exception e) {
 8  8                     Log.d(TAG, "Runner stopped.");
 9  9                 }
10 10
11 11                 @Override
12 12                 public void onNewData(final byte[] data) {
13 13                    //TODO 新的数据
14 14                 }
15 15             };
16 16
17 17 mSerialIoManager = new SerialInputOutputManager(sPort, mListener);//添加监听
18 //在新的线程中监听串口的数据变化
19 18 mExecutor.submit(mSerialIoManager);

如果需要接受比较大的数据,有可能会遇到一个问题:数据缓存和接收时间不够,导致数据被覆盖或者丢失,我们就需要修改串口读取缓存了

把 SerialInputOutputManager 中的 READ_WAIT_MILLIS 和 BUFSIZ 改成合适的大小就可以了

写数据的操作就是调用port的方法

port.write(bytes, 1000);

其实这个开源项目已经为我们封装了很多驱动类,都在driver包下,我们直接拿来用就可以了

有时间我针对Cp21xx驱动的usb串口讲一下如何区分多个usb串口

  

时间: 2024-10-13 05:38:41

android设备使用usb串口传输数据的相关文章

android设备中USB转串口demo 下载

http://files.cnblogs.com/guobaPlayer/testUSB2Serial.apk USB转串口demo程序, 无需驱动,只要手机USB是OTG类型,插上我们的模块即可使用.当前波特率是9600bps 更多USB转GPIO,按键,PWM,红外,SPI,IIC,ADC,欢迎咨询,洽谈. 杭州蓝松科技,专注于android相关软硬件项目的方案开发工作,欢迎联系:qq1852600324" 公司网站:www.lansongtech.com android设备中USB转串口d

全志Android设备增加Usb host ADK 功能

全志Android设备增加Usb host ADK 功能 Usb Host ADK是指不采用USB驱动,直接用java与设备编程的 这样让Android 可以无需修改内核和驱动情况下方便与各种USB外设通讯.全志的CPU的资料都是公开的,因此我们在上面开发很多应用.但是发现无法使用usb host 接口. 一.测试 可以简单下载USB Device info 来测试 https://play.google.com/store/apps/details?id=aws.apps.usbDeviceE

如何通过Chrome远程调试android设备上的Web网站

网上的帖子很多,但很多都是老版本的,试过了,根本不管用,花了一天时间,终于在本机试验通过了,特记录下来,以备用.有需要的朋友也可以参考.先上一张图,看看PC端chrome上调试的效果: 左边是手机的模拟操作器,右边是大家熟悉的开发人员工具,也可以在手机上操作,PC端左边屏幕会同步到手机上的界面. 下面再说一下环境配置: 1.手机端,我手机是华为荣耀4,android4.4.4,很旧的手机了,大家别笑话,但不影响本次试验.安装chrome版本为58.0.3029.83: 2.PC端,win7 64

android里面的USB功能-----Accessory模式

USB Accessory 原文链接地址  http://developer.android.com/intl/zh-cn/guide/topics/connectivity/usb/accessory.html#manifest USB附件模式允许用户连接 USB主机硬件专门为android设备. 配件必须遵循 Android附属协议中列出 Android配件开发工具包文档. 这允许android设备仍不能作为USB主机与USB接口进行交互 硬件. 当一个Android设备在USB附件模式中,

为android系统添加USB AUDIO设备的放音和录音功能

http://blog.csdn.net/adits/article/details/8242146 开发环境简介 1. 主机系统: Unbuntu10.102. android系统版本: 4.0.3(Linux kernel 3.0.8) 综述 android的音频系统非常庞大复杂:涉及到java应用程序,java框架层,JNI,本地服务(AudioFlinger和AudioPolicyService),硬件抽象层HAL,ALSA-LIB和ALSA-DRIVER.本文将先分析音频系统的启动与模

android下调试3G之USB串口驱动集成配置

一.修改Android内核的编译配置 vi ~/myandroid/kernel_imx/.config文件中,确保下面的的配置项已经被选定. (假如源码在~/myandroid目录下) 1. USB电源管理特性的相关配置项: CONFIG_USB_SUSPEND=y 2. USB串口驱动相关的配置项: CONFIG_USB_SERIAL=y CONFIG_USB_SERIAL_OPTION=y CONFIG_USB_SERIAL_WWAN=y 3. PPP拨号的相关配置项: CONFIG_PP

STM32组合设备实现USB转双串口

USB转双串口,核心技术就在于组合设备(USB Composite)的实现,组合设备的实现,其核心技术在于描述符的实现,下面我们先给出描述符:设备描述符 [C] 纯文本查看 复制代码 ? 00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 00025 00026

Chrome OS 更新新版本可让Linux访问USB连接的Android设备

谷歌再次为Chrome OS带来了重大版本更新,使版本号达到了75.本次更新的一大亮点就是允许在Chrome OS上运行的Linux能够识别通过USB方式连接的Android设备,能够让用户使用Linux进行调试等等. Chrome OS 75更新日志: ● 新增功能可以让父母在Chrome OS设备为孩子提供更多的时间● 对儿童账号启用对儿童友好的助理● Linux(Beta)可以访问USB连接的Android设备● 通过实现Android DocumentsProvider APIs,现在F

Android设备使用网络连接调试

最近遇到一个问题,没有usb接口怎么让Android设备与PC机连接起来?后来同事告诉我,原来可以利用网络使其连接起来,这样调试起来就方便多了,还好有个网口提供网络的连接.其实很简单,只需要向system/build.prop文件中添加如下一句即可: service.adb.tcp.port=5555 进入串口终端 [email protected]:/ $ su [email protected]:/ # vi system/build.prop 由于system/build.prop是系统文