• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > android设备使用usb串口传输数据,android设备usb串口

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

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android usb转串口,android usb串口,android usb串口通信,android 串口通信,android 串口等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

android设备使用usb串口传输数据,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串口

 

 

 

  

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2017-05-26popupwindow展示,popupwindow
  • 2017-05-26android学习第一天(android的介绍和基础):,android第一天
  • 2017-05-26产品原型图设计,产品原型图
  • 2017-05-26基于Ionic+Cordova+Bmob的开源项目实战
  • 2017-05-26声明和使用权限,声明使用权限
  • 2017-05-26andriod绘制图形,andriod绘制
  • 2017-05-26Android Facebook和Twitter分享
  • 2017-10-21使用AndroidStudio建立简单的单元测试
  • 2017-05-26Handler造成的内存泄漏(一),handler泄漏
  • 2017-05-26安卓开源项目周报0405,安卓开源项目0405

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android环境的搭建,Android环境搭建
    • 使用C++实现QML的TreeView Model (一)
    • Android Studio:Failed to resolve ***,androidresolve
    • centos7 系统cache的一例故障及解决
    • Android Studio下运行开源项目9GAG遇到的问题
    • 手机安全卫士——进程管理,安全卫士进程管理
    • Android5.0开发范例大全 读书笔记(五),android5.0范例
    • msm8909+android5.1.1编译前配置及增加新项目和产品所需分支
    • Android之DOM解析XML,androiddomxml
    • Android基于回调的事件处理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有