一、 添加依赖
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. python 列表 元组 字符串

    列表添加: list.append() list.extend() list.insert() 列表删除: list.remove()   #删除某一个元素 list.pop()  #删除某一个返回删 ...

  2. SQL窗口函数RANK(),Dense_Rank(),row_number(),NTILE()

    数据源 CREATE TABLE student( no int, ca ), name ), subject ), scorce int ); /* 数据 */ , ); , ); , ); , ) ...

  3. Android读写properties配置文件

    写这篇文章之前可以成功运行,文章后就各种找不到文件.所以并没有采用此种方式,后期完善.详见下篇解决方案. 配置文件读取很容易,修改需要注意权限,比如assets目录下就不允许修改. 配置文件的创建: ...

  4. day12.生成器;wraps初识

    生成器 在 Python 中,使用了 yield 的函数被称为生成器(generator). 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器. 在 ...

  5. web存储中cookie、session区别

    http协议是一种无状态的协议,浏览器对服务器的每一次请求都是独立的.为了使得web能够产生一些动态信息,就需要保存”状态”,而cookie和session机制就是为了解决http协议无状态而产生.c ...

  6. 自定义InputFormat和OutputFormat案例

    一.自定义InputFormat InputFormat是输入流,在前面的例子中使用的是文件输入输出流FileInputFormat和FileOutputFormat,而FileInputFormat ...

  7. Spring Data JPA入门

    1. Spring Data JPA是什么 它是Spring基于ORM框架.JPA规范封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据的访问和操作.它提供了包括增删改查等在内的常用功能, ...

  8. event.target 和 event.currentTarget 的区别

    event.target This property of event objects is the object the event was dispatched on. It is differe ...

  9. 对于服务器AdminServer, 与计算机Machine-0相关联的节点管理器无法访问

    控制台启动server时报"对于服务器server-1与计算机machin<!--StartFragment -->对于服务器AdminServer, 与计算机Machine-0 ...

  10. 【最短路+最大流】上学路线@安徽OI2006

    目录 [最短路+最大流]上学路线@安徽OI2006 PROBLEM SOLUTION CODE [最短路+最大流]上学路线@安徽OI2006 PROBLEM 洛谷P4300 SOLUTION 先在原图 ...