一、 添加依赖
dependencies {
implementation 'com.github.kongqw:AndroidSerialPort:1.0.1'
} 二、 使用方法
package com.bug01.tryserial;

import com.kongqw.serialportlibrary.SerialPortManager;
import com.kongqw.serialportlibrary.listener.OnOpenSerialPortListener;
import com.kongqw.serialportlibrary.listener.OnSerialPortDataListener; import java.io.File; public class SerialUtil {
private SerialPortManager mSerialPortManager = new SerialPortManager();
private static SerialUtil instance = null; // 此处使用单例模式
public static SerialUtil getInstance() {
if (instance == null) {
synchronized (SerialUtil.class) {
if (instance == null) {
instance = new SerialUtil();
instance.mSerialPortManager.setOnSerialPortDataListener(instance.onSerialPortDataListener);
instance.mSerialPortManager.setOnOpenSerialPortListener(instance.onOpenSerialPortListener);
}
}
}
return instance;
} private OnSerialPortDataListener onSerialPortDataListener = new OnSerialPortDataListener() {
@Override
public void onDataReceived(byte[] bytes) {
System.out.println("收到了数据。");
} @Override
public void onDataSent(byte[] bytes) {
System.out.println("发送了数据。");
}
}; private OnOpenSerialPortListener onOpenSerialPortListener = new OnOpenSerialPortListener() {
@Override
public void onSuccess(File device) {
System.out.println("链接" + device.getName() +"成功");
} @Override
public void onFail(File device, Status status) {
System.out.println("链接" + device.getName() +"失败");
}
}; /**
* 链接串口
* @return
*/
public boolean Connect() {
return Connect("ttysWK1");
} /**
* 链接串口
* @param PortName 设备节点名称
* @return
*/
public boolean Connect(String PortName) {
return mSerialPortManager.openSerialPort(new File("dev/" + PortName), 9600);
} /**
* 写入数据
* @param val
*/
public void write(String val) {
mSerialPortManager.sendBytes(val.getBytes());
} public void write(byte[] val) {
mSerialPortManager.sendBytes(val);
}
}

后面我想了一下,有可能会有人不知道自己用的是哪个节点,那你就遍历出来,挨个测试一下。

遍历串口测试代码:

    public void trySerialTest() {
SerialPortFinder serialPortFinder = new SerialPortFinder();
SerialPortManager mSerialPortManager;
ArrayList<Device> devices = serialPortFinder.getDevices();
System.out.println("获取到节点数量为:" + devices.size());
Device device = null;
mSerialPortManager = new SerialPortManager(); mSerialPortManager.setOnSerialPortDataListener(new OnSerialPortDataListener() {
@Override
public void onDataReceived(byte[] bytes) {
System.out.println("收到数据");
} @Override
public void onDataSent(byte[] bytes) {
}
}); mSerialPortManager.setOnOpenSerialPortListener(new OnOpenSerialPortListener() {
@Override
public void onSuccess(File device) {
System.out.print("串口链接成功,节点为:");
System.out.println(device.getName());//打印节点ID
} @Override
public void onFail(File device, Status status) {
System.out.print("串口链接失败,节点为:");
System.out.println(device.getName() + status);
}
}); for (Device dev : devices
) {
boolean openSerialPort = mSerialPortManager.openSerialPort(dev.getFile(), 9600);
if (openSerialPort) {
mSerialPortManager.sendBytes("send something".getBytes()); try {
Thread.sleep(3000);//给点时间用来接收
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} System.out.println("结束测试");
mSerialPortManager.closeSerialPort();
}

RS232通信(Android)的更多相关文章

  1. NSK DD马达 直驱电机 RS232通信连接

    NSK DD马达 通信连接 通信测试平台 驱动器:NSK EDC系列 电机:NSK PS1006KN系列 电机线:UVW对应红白黑. 电源线:Main和Ctrl电路220V交流电供电即可. 测试软件: ...

  2. RS-232通信原理

    rs232串口通信原理 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆).大多数计算机包含两个基于RS232的串口.串口同时也是仪器 ...

  3. Android 使用Socket进行通信(Android)

    一.服务器程序 服务器程序需要在PC上运行,该程序比较的简单,因此不需要建立Android项目,直接定义一个JAVA类,并且运行该类即可.它仅仅建立ServerSocket监听,并使用Socket获取 ...

  4. 和socket、rs232通信遇到的糟糕问题。备查!

    procedure Tfrm_FoldingCloth.btn1Click(Sender: TObject); var SND:array of byte; begin if Not cnrs232. ...

  5. Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

    转载地址:http://blog.csdn.net/mad1989/article/details/9147661 ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...

  6. 基于android的Socket通信

    一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户 ...

  7. 【朝花夕拾】Android性能篇之(七)Android跨进程通信篇

    前言 只要是面试高级工程师岗位,Android跨进程通信就是最受面试官青睐的知识点之一.Android系统的运行由大量相互独立的进程相互协助来完成的,所以Android进程间通信问题,是做好Andro ...

  8. Android中线程通信的方式

    Android 跨线程通信 android 中是不允许在主线程中进行 网络访问等事情的因为UI如果停止响应5秒左右的话整个应用就会崩溃,到Android4.0 以后 Google强制规定,与网络相关的 ...

  9. Android Socket通信详解

    一.Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客 ...

随机推荐

  1. IT行业中文资源网址集绵

    1. IT网址:https://github.com/ityouknow/awesome-list 2.后端架构师网址:https://github.com/xingshaocheng/archite ...

  2. JDK12----------java环境变量配置

    https://jingyan.baidu.com/article/e5c39bf511bb3939d6603370.html

  3. DcotrineFixtureBundle学习

    根据官方文档对Fixture进行学习 首先使用 composer require --dev doctrine/doctrine-fixtures-bundle 来导入扩展 之后注意,如果symfon ...

  4. spark rdd df dataset

    RDD.DataFrame.DataSet的区别和联系 共性: 1)都是spark中得弹性分布式数据集,轻量级 2)都是惰性机制,延迟计算 3)根据内存情况,自动缓存,加快计算速度 4)都有parti ...

  5. Python垃圾回收机制--完美讲解!

    转自: http://www.jianshu.com/p/1e375fb40506 先来个概述,第二部分的画述才是厉害的. Garbage collection(GC) 现在的高级语言如java,c# ...

  6. mysql安装了半天参考了文章搞定了

    https://blog.csdn.net/yelllowcong/article/details/79641313 mysql -uroot -pbrucelee 总结下: 1.安装时注意具体的路径 ...

  7. vue cli搭建项目

    1.首先电脑要在安装node环境下才能运行 2.全局安装webpack:npm install webpack -g 3.安装vue脚手架: npm install vue-cli -g 4.新建文件 ...

  8. [LeetCode] Shortest Distance to a Character 到字符的最短距离

    Given a string S and a character C, return an array of integers representing the shortest distance f ...

  9. 传统方式和插件方式 分别实现 分页 功能 pageHelper 插件

    实现分页  这里提供两种方式  一种是传统的分页方式  一种是基于pageHelper插件 实现的分类     推荐使用后者 前者是一般开发的方式   思路  先手动创建一个 pageUtil 工具 ...

  10. 人工智能--AI篇

    AI背景 在当今互联网信息高速发展的大背景下,人工智能(AI)已经开始走进了千家万户,逐渐和我们的生活接轨,那具体什么是AI呢? 什么是人工智能(AI)? 人工智能:简单理解就是由人制造出来的,有一定 ...