Android串口通信封装之OkUSB的示例代码
作者:zhouzhuo810 发布时间:2023-08-22 21:17:29
标签:Android,串口,通信
本文介绍了Android串口通信封装之OkUSB的示例代码,分享给大家。具体如下:
Github传送门:OkUSB
OkUSB
一个简洁的Android串口通信框架。
功能简介
支持设置波特率
支持设置数据位
支持设置停止位
支持设置校验位
支持DTS和RTS
支持串口连接状态监听
用法简介
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.
来源:http://www.jianshu.com/p/123c3cdfb3d3?utm_source=tuicool&utm_medium=referral


猜你喜欢
- Pull解析方法给应用程序完全的控制文档该怎么样被解析。Android中对Pull方法提供了支持的API,主要是org.xmlpull.v1
- 前言这两天面试了一个物联网公司高级研发,面试题是下面这样子公司领导,部门主管,小组组长,组成员4级,假如有个 疫情预警,先通知组人员(对个人
- Android在自定义控件时,经常需要获得屏幕的宽高,每次都要写,不妨直接把他封装成工具类,直接拿来用,废话不说,直接上代码/** * &n
- 前言Dagger2作为依赖注入神器,相信很多朋友都听说过它的大名。只不过它的有些概念,理解起来并不是那么清晰,并且在使用的过程中,也比较迷糊
- 偶然发现有小伙伴错误地使用了Collections.emptyList()方法,这里记录一下。她的使用方式是:public void run
- 本文实例为大家分享了Unity调取移动端的麦克风进行录音并播放的具体代码,供大家参考,具体内容如下1.对MicroPhone类的理解对麦克风
- 前言:使用 interrupt 来通知线程停止运行,而不是强制停止!普通情况停止线程public class Right
- 前面关于spring Boot的文章已经介绍了很多了,但是一直都没有涉及到数据库的操作问题,数据库操作当然也是我们在开发中无法回避的问题,那
- Handler的定义:主要接受子线程发送的数据, 并用此数据配合主线程更新UI.解释: 当应用程序启动时,Android首先会开启一个主线程
- 概述在Winform中从后台添加控件相对比较容易,但是在WPF中,我们知道界面是通过XAML编写的,如何把后台写好的控件动态添加到前台呢?本
- 一、输入输出流对象cout:标准输出流cerr:标准出凑 和cout(只是用于如果是错误时要输出的)cin :&nb
- 依赖<dependency> <groupId>com.baomidou</groupId> <a
- 前言之前看到某公司的官网的文章的浏览量刷新一次网页就会增加一次,给人的感觉不太好,一个公司的官网给人如此直白的漏洞,我批量发起请求的时候发现
- springMVC默认的解析器里面是没有加入对文件上传的解析的,,使用springmvc对文件上传的解析器来处理文件上传的时需要用sprin
- 前言:java.util.Set接口和 java.util.List接口一样,同样继承自 Collection接口,它与
- 一、Log4net官方网站:https://logging.apache.org/log4net/。下载二进制dll库:包中提供了针对各个版
- 电话号码的字母组合中等给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下
- 位运算 位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指
- 项目要求基于Broadcast,BroadcastReceiver等与广播相关的知识实现简单的音乐播放功能,包括音乐的播放、暂停、切换、进度
- 前言最近看了内部类后,总结一下,首先内部类嵌套在其他内部的类,根据出现的位置和关键字,可以分为以下四种类:成员内部类,静态内部类,方法内部类