一、 添加依赖
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. Windows安装activemq

    1.Windows下载解压就可以了,官网:http://activemq.apache.org/ 8161查看端口 61616消息服务端口 2.浏览器访问localhost:8161测试 3.可以在c ...

  2. springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三)

    例: package com.example.demo.service; import com.example.demo.dao.UserDao; import com.example.demo.do ...

  3. jmeter测试wordpress使用base64进行鉴权

    1.下载插件 对密码进行加密 2.安装插件 3.使用插件 4.使用base64对上面获取到的密码进行二次加密 echo -n "用户:密码" | base64 将以上命令键入lin ...

  4. Java Web项目漏洞:检测到目标URL存在http host头攻击漏洞解决办法

    检测到目标URL存在http host头攻击漏洞 详细描述 为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HTTP_HOST ...

  5. zTree 3-- jQuery 树插件笔记

    地址:http://www.treejs.cn/v3/demo.php#_507 数据结构json,里可以自定义属性. var zNodes =[ { name:"父节点1 - 展开&quo ...

  6. 第二篇flask响应方式

    响应三件套 1.Flask中的HTTPResponse @app.route('/home') # app中的route装饰器 def home(): # 视图 return '登陆成功' #HTTP ...

  7. vue入门1(搭建项目)

    安装node.js 安装cnpm npm install -g cnpm --registry=http://registry.npm.taobao.org 安装vue-cli脚手架构建工具 npm ...

  8. django——用户认证组件

    用户认证 auth模块 1 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1.1 .authenti ...

  9. 【IT小常识】如何将IE手动升级或降级

    我们从浏览器任意下载一个我们需要安装的IE版本.可能部分电脑的IE版本不是微软正版的IE版本,所以无法通过更新来获取我们想要的IE版本. 下面,详细的讲一下如何如何手动升级IE或者吧IE降级. 一. ...

  10. Lecture4_1&4_2.多维随机变量及其概率分布

    1.二维随机变量(X,Y)的联合分布函数: F(x,y)=P(X≤x,Y≤y) 2.二维随机变量(X,Y)关于X的边缘分布函数: FX(x)=P(X≤x) =P(X≤x,Y<+∞) =F(x,+ ...