GithubHelp home page GithubHelp logo

q315099997 / android-easyserialport Goto Github PK

View Code? Open in Web Editor NEW

This project forked from maybesix/android-easyserialport

0.0 0.0 0.0 235 KB

Android Serial Port,一个非常好用的串口封装,稳定性有保证

C 12.73% Java 72.47% Kotlin 9.95% CMake 4.84%

android-easyserialport's Introduction

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()

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

串口相关

串口操作类 → SerialPortHelper

isOpen                        : 是否开启串口
getBaudRate                   : 获取波特率
setBaudRate                   : 设置波特率
getPort                       :  获取串口名称
setPort                       :  设置串口名称
open                          :  打开串口
close                         :  关闭串口
sendHex                       :  以16进制发送
sendTxtString                 :  以文本发送
getLoopData                   :  获取循环发送的数据
setLoopData                   :  设置循环发送的数据
getDelay                      :  获取延迟
setDelay                      :  设置延时(毫秒)
startSend                     :  开启循环发送
stopSend                      :  停止循环发送
OnSerialPortReceivedListener  :  串口数据接收回调

串口数据基类 → ComPortData

getRecData   :  获取串口数据
setRecData   :  设置串口数据
getRecTime   :  获取接收时间
setRecTime   :  设置接受时间
getComPort   :  获取串口名称
setComPort   :  设置串口名称

串口数据处理相关

十六进制转换 → HexStringUtils

isOdd                  : 判断是否为奇数
hexString2Int          : 16进制字符串转int
hexString2Byte         : 16进制字符串转byte
byte2HexString         : byte转16进制字符串
byteArray2HexString    : byte数组转16进制字符串
hexString2ByteArray    : 16进制字符串转byte数组

CRC校验 → CrcUtils

isPassCRC     : 返回是否通过验证
getCrcString  : 获取16进制的crc字符串
toHexString   : int转16进制字符串
getCrc        : 传入bytes,计算得到CRC验证码
hexToByte     : 16进制字符串转byte数组

项目更新内容:

v1.1:

  1. 升级至androidx
  2. 去除不必要的依赖
  3. 支持链式调用配置监听事件、设置端口号、设置波特率
  4. 修改串口接收数据时格式化时间,现在改为时间戳

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

android-easyserialport's People

Contributors

maybesix avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.