美文网首页AndroidAndroid开发
Android-XHLibrary 一个使用很方便的Androi

Android-XHLibrary 一个使用很方便的Androi

作者: MaybeSix | 来源:发表于2019-03-25 11:05 被阅读32次

    这是我第一次写博客,有不合适的地方还请大家见谅。

    项目地址:https://github.com/maybesix/Android-XHLibrary.git

    背景

    之前在一个项目中,需要使用Android开发板来做项目,其中的一个需求是使用串口。最开始是用厂家提供的串口示例程序,但是配置异常麻烦。需要so文件,gradle需要配置,需要导入libs等等。
    在第二个项目中,恰好又有串口的需求,但是开发版换了,使用之前的厂家的so文件,竟然出错没法运行。由于之前的厂家未提供相应的源码,所以无法查看是什么导致的so文件出错。所以借鉴网上的项目和谷歌的开源项目https://github.com/cepr/android-serialport-api来实现串口的调用。由于很多第三方库质量参差不齐,出了问题也不知道是什么原因。因此自己基于官方公布.so来封装串口库,最终用了很长的时间,才实现串口的功能。同样的问题,由于使用NDK去调用串口的程序,配置异常麻烦。
    所以,我抽时间把之前的程序梳理了一遍,方便后来者使用。

    优点

    1.使用方便

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

    SerialPortHelper serialPort;
    //串口程序初始化
    serialPort = new SerialPortHelper();
    //设置端口
    serialPort.setPort("/dev/ttyHSL1");
    //设置波特率
    serialPort.setBaudRate("9600");
    //设置接收消息监听
    serialPort.setSerialPortReceivedListener(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);
        }
    }
    

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

    2.适配性强

    在视美泰的3288全系列、使用未知名开发板、智洋核心板等都通过实际测试。可以用于实际的生产。

    相关方法介绍

    串口相关

    串口操作类 → 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数组
    

    相关文章

      网友评论

        本文标题:Android-XHLibrary 一个使用很方便的Androi

        本文链接:https://www.haomeiwen.com/subject/cpamvqtx.html