2 Star 17 Fork 14

MybeSix / Android-EasySerialPort

Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Without author's permission, this code is only for learning and cannot be used for other purposes.
Clone or Download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

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!

Repository Comments ( 0 )

Sign in to post a comment

About

非常好用、非常稳定的Android串口封装 久经两年多项目考验,一直很稳定 expand collapse
Android
Cancel

Releases

No release

Android-EasySerialPort

Contributors

All

Activities

Load More
can not load any more
Android
1
https://git.oschina.net/maybesix/Android-XHLibrary.git
git@git.oschina.net:maybesix/Android-XHLibrary.git
maybesix
Android-XHLibrary
Android-EasySerialPort
master

Search

182229 41614e54 1850385 182230 7885ed45 1850385