串口 多个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!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux bluez语音传输,Linux BlueZ PCM 音频播放器

自己写的简单的实验代码,贴上来看看,有兴趣的话,大家可以交流/******************************************************************************//** …

光纤收发器的原理及应用_光纤收发器的工作原理及使用方法介绍

关于光纤收发器的工作原理以及使用方法这块,在这里飞畅科技的小编做了专门的整理,首先,我们来了解下什么是光纤收发器,光纤收发器是一种将短距离的双绞线电信号和长距离的光信号进行互换的以太网传输媒体转换单元,在很…

变频器按启动没反应_ABB变频器启动无反应维修那些事

[标题]常州凌科自动化是电路板芯片级维修服务商,有健全的维修中心,致力于各类复杂工控电气设备修复工作。我们有十年变频器维修经验的技术工程师、安装人员组成的强大技术队伍;充分利用自己己有的人才、测试设备、试验平台、为企业提供先进、…

C语言编程序1到100的素数,c语言输出100以内素数 c语言编程输出1到100之间素数并求和,在线等,急?...

C语言,编写函数判断一个整数是否为素数,在主函数中调用该函数并输出100以内的全部素数?参考代码:#include &ltstdio.h&gtint is_prime_number(int n){int iint result 1if(n1)return 0for(i2i&ltni ){if(n%i0){resul…

用jsonserve和axios做交互_详解解决使用axios发送json后台接收不到的问题

问题描述按照axios官网例子发起请求传递json,后台接受到的数据为空,一直卡在options阶段。尝试的方法开始以为是接口有问题,使用postman测试下,一切正常,百思不得其解,看了好多issue也解决不了,…

2020国开c语言程序设计1075,代号1253国开点大2017年6月春季学期本科期末考试《C语言程序设计》试题及答案.pdf...

试卷代号:1253座位号rn国家开放大学(中央广播电视大学)2017 年春季学期"开放本科"期末考试C 语言程序设计试题2017 年 6 月E自一、单项选择题(把合适的选项编号填写在括号内。每小题 2 分,共28 分)l. C 语言中的选择类语句有两条,它们是( )。A…

c语言内容逆置程序设计,C语言程序设计练习题含程序及参考答案.docx

C语言练习题(所提供的源程序均采用自定义函数方式解决,如不采用函数方式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能一一—验证,仅供参考使用)1定义一个函数intfun(inta,intb,intc),它的…

一阶系统单位阶跃响应的特点_一阶系统的阶跃响应有什么特点

一、一阶系统  用一阶微分方程描述的系统。二、一阶系统典型的数学模型   三、典型输入响应1。单位阶跃响应  。  y(t)的特点:  (1)由动态分量和稳态分量两部分组成。  (2)是一单调上升的指数曲线。  (3)当tT时,y0。632。(4)曲线的初始斜…

数学式子对应的c语言表达式是,把数学式写成C语言表达式

(1) 3.26*exp(x)1.0/3.0*pow((ab), 4)(2) 2*sqrt(x)(ab)/(3.0*sin(x))(3) g*m1*m2/(r*r)(4) double pi 3.142.0*pi*r pi*r*r cos(45.0*pi / 180.0 )(5) loan * rate * pow( (1rate) , month ) / ( pow( (1rate) , month) - 1)扩展资料:指针:如果一个变…

pandas 每一列相加_Python3 numpy amp; pandas 学习笔记

写在前面在用python做一些ML和DL的工作前,先看莫烦大佬的视频学习一下numpy和pandas这两个数据处理包,学习中记了一些笔记,便于自己日后查阅,同时发布到知乎希望能够帮助到其他小伙伴!视频如下:Numpy &…

c语言学生成绩查询系统2018,南昊网上阅卷学生成绩查询系统

2018南昊网上阅卷学生成绩查询系统开放了,这是面向南昊当地的中小学生们的一款优质的查询学习成绩的平台,只要登录自己的账号就能查询自己的成绩排名情况。对于老师来说这也是一款网上阅卷系统,是一个非常幼稚的学习平台。家长也可以登录本平…

python3 批量定义多个变量_Python3 基本数据类型详解

文章来源:加米谷大数据Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。等号…

控制cpu_I/O控制器及控制方式,了解一下

1、什么是I/O控制器由于CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制,这个电子部件就是I/O控制器,又称为设备控制器。I/O控制器是控制计算机输…

图形化c语言编程,「分享」C语言如何编写图形界面

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼贴吧内经常有人问C语言是不是只能用于字符终端界面开发,不能用于图形界面。大家也都有回答,需要其他的库。MFC,GTK,QT。本人近期刚用GTK库加上纯C写成了第一个LINUX实用程序。现在与大…

fpga初始化错误_FPGA低温启动失败

本文来源:https://blog.csdn.net/shanekong/article/details/29923925现象描述在给 medium 板光端机做低温试验时,分别给发送版、接收板断电重新启动,发现有的板子在 -40 可以启动,而有些板子在 -20 都不能启动,需要升…

在C语言中023是八进制数,C语言总结

十一天课的总结(仅仅为总结,具体请看前面的)一、顺序结构从上往下依次运行的代码结构计算机运行程序时,都是编译成二进制文件。计算机中又分为二进制:比如 101001001就是一个二进制数字八进制:比如 023767是一个八进制数字。前面…

机器人最新天赋符文天赋加点图_常德2020中小学机器人竞赛开赛 286名选手现场比拼技能...

尚一网讯(记者 肖志芳 文/图)自己设计机器人,还要操控他们完成各项高难度动作进行竞技对抗,这似乎挺难,但是许多中小学生却对此游刃有余。10月11日,常德市2020年中小学机器人竞赛在武陵区第一小学举行,来自全市143支代…

c语言在函数中只执行一次,请问大家,为什么我调用我定义的函数俩次,但是程序只执行一次...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include void gotoxy(int y,int x){COORD scrn;HANDLE hOuputGetStdHandle(STD_OUTPUT_HANDLE);scrn.Xx;scrn.Yy;SetConsoleCursorPosition(hOuput,scrn);}void put(int n,char ch){for(int i0;iprintf("%…

cmd imp导入dmp文件_这是一篇长篇入门级数据库讲解:oracle数据库数据导入导出步骤...

正如标题一样,本文内容主要介绍了浅谈入门级oracle数据库数据导入导出步骤,文章通过步骤解析介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧!!&…

学校门口的树C语言算法,C语言校园导游程序设计汇报.doc

C语言校园导游程序设计汇报《应用程序设计课程设计》报告班级:学号:姓名:指导教师:成绩评定:目录题目:设计一个校园导游程序,为来访的客人提供各种信息查询服务一.需求分析:此次课程…