Android串口通信封装之OkUSB的示例代码

本文介绍了Android串口通信封装之OkUSB的示例代码,分享给大家。具体如下:

Github传送门:OkUSB

OkUSB

一个简洁的Android串口通信框架。

功能简介

  1. 支持设置波特率
  2. 支持设置数据位
  3. 支持设置停止位
  4. 支持设置校验位
  5. 支持DTS和RTS
  6. 支持串口连接状态监听

用法简介

Gradle

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

  dependencies {
      compile 'com.github.zhouzhuo810:OkUSB:1.0.0'
  }

具体用法

1.在AndroidManifest.xml中添加如下特性:

<uses-feature android:name="android.hardware.usb.host" />

在需要连接串口的Activity中添加:

  <intent-filter>
    <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
  </intent-filter>
  <meta-data
    android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
    android:resource="@xml/device_filter" />

2.在res文件夹创建xml文件夹,新建device_filter.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <!-- 要进行通信的USB设备的供应商ID(VID)和产品识别码(PID)-->
  <usb-device vendor-id="0403" product-id="6001" />
</resources>

3.前面都是准备工作,这里才真正使用。

  //初始化
  usb = new USB.USBBuilder(this)
      .setBaudRate(115200) //波特率
      .setDataBits(8)    //数据位
      .setStopBits(UsbSerialPort.STOPBITS_1) //停止位
      .setParity(UsbSerialPort.PARITY_NONE) //校验位
      .setMaxReadBytes(20)  //接受数据最大长度
      .setReadDuration(500) //读数据间隔时间
      .setDTR(false)  //DTR enable
      .setRTS(false)  //RTS enable
      .build();

  //实现监听连接状态和数据收发。
  usb.setOnUsbChangeListener(new USB.OnUsbChangeListener() {
    @Override
    public void onUsbConnect() {
      Toast.makeText(MainActivity.this, "conencted", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onUsbDisconnect() {
      Toast.makeText(MainActivity.this, "disconencted", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDataReceive(byte[] data) {
      tvResult.setText(new String(data, Charset.forName("GB2312")));
    }

    @Override
    public void onUsbConnectFailed() {
      Toast.makeText(MainActivity.this, "connect fail", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onPermissionGranted() {
      Toast.makeText(MainActivity.this, "permission ok", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onPermissionRefused() {
      Toast.makeText(MainActivity.this, "permission fail", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDriverNotSupport() {
      Toast.makeText(MainActivity.this, "no driver", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onWriteDataFailed(String error) {
      Toast.makeText(MainActivity.this, "write fail" + error, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onWriteSuccess(int num) {
      Toast.makeText(MainActivity.this, "write ok " + num, Toast.LENGTH_SHORT).show();
    }
  });

4.如果是Activity,可以在onDestroy中调用如下代码关闭串口。

    if (usb != null) {
      usb.destroy();
    }

License

Copyright 2017 zhouzhuo810

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android Socket 线程连接openwrt与arduino单片机串口双向通信的实例解析

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package zcd.netanything; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import android.app.Fragment; import android.content.BroadcastReceiver; import and

  • Android 串口通信编程及串口协议分析

    Android 串口通信编程:嵌入式编程和可穿戴设备及智能设备都会用到串口,这里就带大家分析下, 一,android串口通信 串口通信采用一个第三方开源项目,实现串口数据收发. 1. 使用了http://code.google.com/p/android-serialport-api/的项目的serialport api和jni: 2. 支持4串口同时收发,有定时自动发送功能,收发模式可选Txt或Hex模式: 3.  n,8,1,没得选: 4. 为减轻界面卡顿的情况,接收区的刷新采用单独的线程进

  • 详解Android USB转串口通信开发基本流程

    好久没有写文章了,年前公司新开了一个项目,是和usb转串口通信相关的,需求是用安卓平板通过usb转接后与好几个外设进行通信,一直忙到最近,才慢慢闲下来,趁着这个周末不忙,记录下usb转串口通信开发的基本流程. 我们开发使用的是usb主机模式,即:安卓平板作为主机,usb外设作为从机进行数据通信.整个开发流程可以总结为以下几点: 1.发现设备 UsbManager usbManager = (UsbManager) context.getSystemService(Context.USB_SERV

  • Android USB转串口通信开发实例详解

     Android USB转串口通信开发实例详解 好久没有写文章了,年前公司新开了一个项目,是和usb转串口通信相关的,需求是用安卓平板通过usb转接后与好几个外设进行通信,一直忙到最近,才慢慢闲下来,趁着这个周末不忙,记录下usb转串口通信开发的基本流程. 我们开发使用的是usb主机模式,即:安卓平板作为主机,usb外设作为从机进行数据通信.整个开发流程可以总结为以下几点: 1.发现设备 UsbManager usbManager = (UsbManager) context.getSystem

  • Android串口通信封装之OkUSB的示例代码

    本文介绍了Android串口通信封装之OkUSB的示例代码,分享给大家.具体如下: Github传送门:OkUSB OkUSB 一个简洁的Android串口通信框架. 功能简介 支持设置波特率 支持设置数据位 支持设置停止位 支持设置校验位 支持DTS和RTS 支持串口连接状态监听 用法简介 Gradle allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { compile '

  • Android串口通信之串口读写实例

    在Android串口通信:基本知识梳理的基础上,我结合我项目中使用串口的实例,进行总结: Android使用jni直接进行串口设备的读写网上已经有开源项目了,本文是基于网上的开源项目在实际项目中的使用做的调整和优化: Google串口开源项目 下面是我项目中的相关代码及介绍: 1.SerialPort.cpp /* * Copyright 2009 Cedric Priscal * * Licensed under the Apache License, Version 2.0 (the "Li

  • Android串口通信apk源码详解(附完整源码)

    1.SerialPortHelper「Android串口通信」介绍 原项目地址 https://github.com/freyskill/SerialPortHelper Android串口通讯助手可以用于需要使用串口通信的Android外设,该库有如下特点: 1.串口通信部分使用C++实现,在笔者接触的部分设备上实测,使用C++实现与Google官方提供的Demo的方式要快: 2.支持且必须设置串口接收最大数据长度,初始化库时填入该参数,这样设置的原因是考虑在实际使用中,规定的串口通信协议格式

  • Android PC投屏功能实现的示例代码

    本文介绍了Android PC投屏功能实现的示例代码,分享给大家,具体如下: 代码地址 :https://github.com/deepsadness/MediaProjectionDemo 效果预览 投屏效果预览 简单说明: 使用Android MediaProjection Api来完成视频的截图 通过WebSocket进行链接.将图片传递给网页 想法来源 看到vysor,觉得特别好玩,于是就想着自己能不能试着做一个类似的功能出来.搜索了相关实现.发现网上已经有网友针对vysor做了分析.于

  • Android利用Flutter path绘制粽子的示例代码

    目录 前言 绘制 基本轮廓 粽叶 嘴巴 眼睛 腮红 手&脚 头巾 咸甜是一家 发声 动画控制嘴巴开合 用到的技术点 总结 前言 大家好,端午将至,首先提前祝小伙伴端午安康,端午作为中华民族的非常重要的传统节日,粽子那是必不可少的,但是你真的知道粽子的历史吗? 今天跟随本篇文章用Flutter path画一个会科普节日的的粽子吧- 绘制 基本轮廓 首先我们需要将粽子的基本轮廓绘制出来,通过图片可以看到粽子的轮廓是一个圆圆的三角形状, 本篇文章所有的图形都是用纯Path路径制作,这里我们可以将粽子的

  • Android 实现无网络页面切换的示例代码

    本文介绍了Android 实现无网络页面切换的示例代码,分享给大家,具体如下: 实现思路 需求是在无网络的时候显示特定的页面,想到要替换页面的地方,大多都是recyclerview或者第三方recyclerview这种需要显示数据的地方,因此决定替换掉页面中所有的recyclerview为无网络页面 实现过程 1 在BaseActivity中,当加载布局成功以后,通过id找到要替换的view,通过indexOfChild()方法,找到要替换的view的位置,再通过remove和add view来

  • Android ItemDecoration 实现分组索引列表的示例代码

    本文介绍了Android ItemDecoration 实现分组索引列表的示例代码,分享给大家.具体如下: 先来看看效果: 我们要实现的效果主要涉及三个部分: 分组 GroupHeader 分割线 SideBar 前两个部分涉及到一个ItemDecoration类,也是我们接下来的重点,该类是RecyclerView的一个抽象静态内部类,主要作用就是给RecyclerView的ItemView绘制额外的装饰效果,例如给RecyclerView添加分割线. 使用ItemDecoration时需要继

  • Android中js和原生交互的示例代码

    本文介绍了Android中js和原生交互的示例代码,分享给大家,具体如下: 加载webview的类 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); JavaScriptInterf

  • Android中TabLayout添加小红点的示例代码

    本文介绍了Android中TabLayout添加小红点的示例代码,分享给大家,具体如下 安卓原生的android.support.design.widget.TabLayout,配合ViewPager已经很好用了,但是有时我们会在内容更新时,在tab标题右上方加上一个红点等标记此tab内容有更新时,就需要给原生的TabLayout设置你定义的布局,用法和原生的一样,只是在代码中设置一下TabLayout的布局. 1.主布局文件 <?xml version="1.0" encodi

随机推荐