串口 多个activity 安卓_Android-EasySerialPort
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相关推荐
- 串口 多个activity 安卓_一个Activity实时向另一个Activity发送消息
从网上找到一个类似的方法,供你参考一下 原理:假设有两个Activity:ActivityMain 和 ActivityNew,在 ActivityMain 中启动 ActivityNew,而在 Ac ...
- android type c 串口,type c和安卓接口区别 正式解决了USB永远插不准的
导语:说到接口,大家应该都不陌生,有人问什么叫type-c接口,另外,还有人想问type c和安卓接口区别,这到底怎么回事呢?事实上typec数据线是什么手机用的呢,下面是小编为大家整理的type c ...
- dpi shell命令 安卓_android 中 dumpsys 命令使用
adb shell dumpsys,默认打印出当前系统所有 service 信息,在后面可加上具体的服务名 需要列出当前运行的服务,可运行: adb shell dumpsys | findstr D ...
- edtext 从右边开始输入 安卓_Android开发之EditText属性详解
1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以".&quo ...
- java向另一activity输入_Android中调用另一个Activity并返回结果-以模拟选择头像功能为例...
场景 Android中点击按钮启动另一个Activity以及Activity之间传值: 在上面启动Activity和传值之后,怎样获取Acitvity的返回值.下面示例实现点击选择头像按钮,跳转到头像 ...
- java数据传递给安卓_Android数据传递的五种方法汇总
Android开发中,在不同模块(如Activity)间经常会有各种各样的数据需要相互传递,我把常用的几种 方法都收集到了一起.它们各有利弊,有各自的应用场景. 我现在把它们集中到一个例子中展示,在例 ...
- 红橙Darren视频笔记 启动不在清单文件注册的activity 安卓8有效
参考链接 https://www.jianshu.com/p/aa03c4458b9a https://www.jianshu.com/p/af148ab5ddf7 前提: 了解InvocationH ...
- codesys中打开linux端的串口_干货分享——安卓串口通信
1 引言 串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件.串口通信(Serial Communicatio ...
- listview mysql 安卓_Android——ListView与数据库的结合
前言 ListView与数据库结合使用也是一种非常常见的手段.例如歌单的ListView,在我们重新启动应用的时候数据依旧存在,如下图: 具体实现 一.准备Activity和ListView Acti ...
最新文章
- 深入理解计算机系统答案2.11,深入理解计算机系统 第十一章
- Java高级规范之二
- html中简单轮播图实现原理,常见轮播效果及其实现原理
- 微信 SQLite 数据库修复实践
- linux下一个apache+tomcat负载均衡和集群
- python网络爬虫系列(六)——数据提取 lxml模块
- python tar 多目录压缩脚本,使用tarfile(Python)只压缩给定目录中的文件
- CentOS部署Harbor镜像仓库,java分布式技术栈
- python正在处理中_协程和 asyncio
- Flutter进阶第9篇:检测网络连接,监听网络变化
- Flink 执行引擎:流批一体的融合之路
- 机房重构(4)——触发器的使用
- 怎么判断间隙过渡过盈配合_什么是间隙配合、过盈配合、过渡配合?它们在汽车上有哪些应用?...
- EasyRecovery注册码哪里有?
- vs2005的MSDN的下载
- C语言有负号的除法以及求余运算规则
- WORD表格排版案例之论文封面
- Android修改实战教程(漫放软件)
- Photoshop教程实例讲解
- 织梦搜索页是那个php,修改织梦DEDECMS搜索页支持dede标签调用的方法
热门文章
- 玩 High API 系列之:智能云相册
- SuperEdge正式成为CNCF沙箱项目,腾讯云携手六家厂商在边缘计算领域踏入新篇章
- 行,Python玩大了!​取代Excel,程序员:太牛!你怎么看?
- 确认!别再相信Python了! 程序员:就你敢说...
- 消息称苹果斥资2亿美元收购Xnor.ai;华为2000万英镑投资,加速发展HMS手机生态系统;国产SSD将迎来爆发……...
- 云栖大会 | 释放计算弹性,阿里云做了很多
- 华为鸿蒙网络,这回真翻脸了?被谷歌“除名”,官宣鸿蒙手机版,华为:走着瞧...
- android应用控制百度地图,Android中应用百度地图API开发地图APP实例-显示百度地图...
- 解决ssh正常登录sftp不能登录的问题
- 秒杀场景_Sentinel在秒杀场景的应用_05