Android-EasySerialPort

非常好用、非常稳定的Android串口封装

久经两年多项目考验,一直很稳定

使用说明

第一步,在gradle(Project)下添加

allprojects {

repositories {

...

maven { url 'https://www.jitpack.io' }

}

}

第二步,导入依赖

dependencies {

implementation 'com.github.maybesix:Android-XHLibrary:v1.0.0'

}

在需要实现Activity或者Service中这样写:

SerialPortHelper serialPort;

String port = "/dev/ttyHSL1";

int baudRate = 9600;

//串口程序初始化

serialPort = new SerialPortHelper(port, baudRate, this);

//打开串口

serialPort.open();

串口发送:

//发送十六进制

serialPort.sendHex("A55A0010002096");

//发送文本

serialPort.sendHex("hello world");

串口接收:实现SerialPortHelper.OnSerialPortReceivedListener接口

public class MainActivity extends AppCompatActivity implements SerialPortHelper.OnSerialPortReceivedListener {

...

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

...

}

...

@Override

public void onSerialPortDataReceived(ComPortData comPortData) {

//处理接收的串口消息

String s = HexStringUtils.byteArray2HexString(comPortData.getRecData());

Log.i(TAG, "onReceived: " + s);

}

}

或者可以使用构造者链式调用(kotlin写法)

serialPort = EasySerialPort.Builder()

.setBaudRate(9600)

.setPort("")

.setSatesListener(object : EasySerialPort.OnStatesChangeListener {

/**

* 打开的状态回调

*

* @param isSuccess 是否成功

* @param reason 原因

*/

override fun onOpen(isSuccess: Boolean, reason: String) {

Log.i("EasySerialPort", "是否开启成功:$isSuccess,原因:$reason")

Toast.makeText(

applicationContext,

"是否开启成功:$isSuccess,原因:$reason",

Toast.LENGTH_SHORT

).show()

}

/**

* 关闭的状态回调

*/

override fun onClose() {

Log.i("EasySerialPort", "已关闭")

Toast.makeText(applicationContext, "已关闭", Toast.LENGTH_SHORT).show()

}

})

.setListener {

//处理接收的串口消息

val s: String = HexStringUtils.byteArray2HexString(it.recData)

Log.i("EasySerialPort", "onReceived: $s,time:${it.recTime}")

textView.text = s

}

.build()

至此,串口的打开、发送、接收就全部完成了。

串口相关

isOpen : 是否开启串口

getBaudRate : 获取波特率

setBaudRate : 设置波特率

getPort : 获取串口名称

setPort : 设置串口名称

open : 打开串口

close : 关闭串口

sendHex : 以16进制发送

sendTxtString : 以文本发送

getLoopData : 获取循环发送的数据

setLoopData : 设置循环发送的数据

getDelay : 获取延迟

setDelay : 设置延时(毫秒)

startSend : 开启循环发送

stopSend : 停止循环发送

OnSerialPortReceivedListener : 串口数据接收回调

getRecData : 获取串口数据

setRecData : 设置串口数据

getRecTime : 获取接收时间

setRecTime : 设置接受时间

getComPort : 获取串口名称

setComPort : 设置串口名称

串口数据处理相关

isOdd : 判断是否为奇数

hexString2Int : 16进制字符串转int

hexString2Byte : 16进制字符串转byte

byte2HexString : byte转16进制字符串

byteArray2HexString : byte数组转16进制字符串

hexString2ByteArray : 16进制字符串转byte数组

isPassCRC : 返回是否通过验证

getCrcString : 获取16进制的crc字符串

toHexString : int转16进制字符串

getCrc : 传入bytes,计算得到CRC验证码

hexToByte : 16进制字符串转byte数组

项目更新内容:

v1.1:

升级至androidx

去除不必要的依赖

支持链式调用配置监听事件、设置端口号、设置波特率

修改串口接收数据时格式化时间,现在改为时间戳

如果这个项目对你有帮助,请点个star!

串口 多个activity 安卓_Android-EasySerialPort相关推荐

  1. 串口 多个activity 安卓_一个Activity实时向另一个Activity发送消息

    从网上找到一个类似的方法,供你参考一下 原理:假设有两个Activity:ActivityMain 和 ActivityNew,在 ActivityMain 中启动 ActivityNew,而在 Ac ...

  2. android type c 串口,type c和安卓接口区别 正式解决了USB永远插不准的

    导语:说到接口,大家应该都不陌生,有人问什么叫type-c接口,另外,还有人想问type c和安卓接口区别,这到底怎么回事呢?事实上typec数据线是什么手机用的呢,下面是小编为大家整理的type c ...

  3. dpi shell命令 安卓_android 中 dumpsys 命令使用

    adb shell dumpsys,默认打印出当前系统所有 service 信息,在后面可加上具体的服务名 需要列出当前运行的服务,可运行: adb shell dumpsys | findstr D ...

  4. edtext 从右边开始输入 安卓_Android开发之EditText属性详解

    1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以".&quo ...

  5. java向另一activity输入_Android中调用另一个Activity并返回结果-以模拟选择头像功能为例...

    场景 Android中点击按钮启动另一个Activity以及Activity之间传值: 在上面启动Activity和传值之后,怎样获取Acitvity的返回值.下面示例实现点击选择头像按钮,跳转到头像 ...

  6. java数据传递给安卓_Android数据传递的五种方法汇总

    Android开发中,在不同模块(如Activity)间经常会有各种各样的数据需要相互传递,我把常用的几种 方法都收集到了一起.它们各有利弊,有各自的应用场景. 我现在把它们集中到一个例子中展示,在例 ...

  7. 红橙Darren视频笔记 启动不在清单文件注册的activity 安卓8有效

    参考链接 https://www.jianshu.com/p/aa03c4458b9a https://www.jianshu.com/p/af148ab5ddf7 前提: 了解InvocationH ...

  8. codesys中打开linux端的串口_干货分享——安卓串口通信

    1 引言 串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件.串口通信(Serial Communicatio ...

  9. listview mysql 安卓_Android——ListView与数据库的结合

    前言 ListView与数据库结合使用也是一种非常常见的手段.例如歌单的ListView,在我们重新启动应用的时候数据依旧存在,如下图: 具体实现 一.准备Activity和ListView Acti ...

最新文章

  1. 深入理解计算机系统答案2.11,深入理解计算机系统 第十一章
  2. Java高级规范之二
  3. html中简单轮播图实现原理,常见轮播效果及其实现原理
  4. 微信 SQLite 数据库修复实践
  5. linux下一个apache+tomcat负载均衡和集群
  6. python网络爬虫系列(六)——数据提取 lxml模块
  7. python tar 多目录压缩脚本,使用tarfile(Python)只压缩给定目录中的文件
  8. CentOS部署Harbor镜像仓库,java分布式技术栈
  9. python正在处理中_协程和 asyncio
  10. Flutter进阶第9篇:检测网络连接,监听网络变化
  11. Flink 执行引擎:流批一体的融合之路
  12. 机房重构(4)——触发器的使用
  13. 怎么判断间隙过渡过盈配合_什么是间隙配合、过盈配合、过渡配合?它们在汽车上有哪些应用?...
  14. EasyRecovery注册码哪里有?
  15. vs2005的MSDN的下载
  16. C语言有负号的除法以及求余运算规则
  17. WORD表格排版案例之论文封面
  18. Android修改实战教程(漫放软件)
  19. Photoshop教程实例讲解
  20. 织梦搜索页是那个php,修改织梦DEDECMS搜索页支持dede标签调用的方法

热门文章

  1. 玩 High API 系列之:智能云相册
  2. SuperEdge正式成为CNCF沙箱项目,腾讯云携手六家厂商在边缘计算领域踏入新篇章
  3. 行,Python玩大了!​取代Excel,程序员:太牛!你怎么看?
  4. 确认!别再相信Python了! 程序员:就你敢说...
  5. 消息称苹果斥资2亿美元收购Xnor.ai;华为2000万英镑投资,加速发展HMS手机生态系统;国产SSD将迎来爆发……...
  6. 云栖大会 | 释放计算弹性,阿里云做了很多
  7. 华为鸿蒙网络,这回真翻脸了?被谷歌“除名”,官宣鸿蒙手机版,华为:走着瞧...
  8. android应用控制百度地图,Android中应用百度地图API开发地图APP实例-显示百度地图...
  9. 解决ssh正常登录sftp不能登录的问题
  10. 秒杀场景_Sentinel在秒杀场景的应用_05