Skip to content

shorr/EZ-SerialPort

Repository files navigation

EZ-SerialPort

EZ-SerialPort是基于Google android-serialport-api 修改与扩展的Android串口操作库。

EZ-SerialPort简化了串口的配置与读写操作,支持了多串口通道的操作,支持了多页面串口数据的同时读取功能。

Demo效果如下:

screenshot

Gradle 依赖

在app的build.gradle 下添加:

添加依赖如下:

dependencies {
    compile 'cn.shorr:ez-serialport:0.1.0'
}

添加适合的CPU平台ABI,如:

defaultConfig {
	...

	ndk {
		abiFilters "armeabi", "armeabi-v7a", "x86"
	}
}

不配置将默认为所有平台的ABI。

使用

//1.开始串口连接
private void startSerialPortConnect() {
	//配置串口参数
    serialPortUtil = new SerialPortUtil(this,
            new SerialPortConfig("/dev/ttyMT1", 115200), //串口0
            new SerialPortConfig("/dev/ttyMT2", 38400) //串口1

    );
    //设置为调试模式,打印收发数据
    serialPortUtil.setDebug(true);
    //绑定串口服务
    serialPortUtil.bindService();

    //串口0数据读取监听(可在不同Activity中同时设置监听)
    serial0Read = new SerialRead(this);
    serial0Read.registerListener(0/*默认为0,此参数可省略*/, new Serial0ReadListener());
    //串口1数据读取监听(可在不同Activity中同时设置监听)
    serial1Read = new SerialRead(this);
    serial1Read.registerListener(1, new Serial1ReadListener());
}

//2.设置串口读取监听
private class Serial0ReadListener implements SerialRead.ReadDataListener {
    @Override
    public void onReadData(byte[] data) {
       
    }
}

//3.串口发送数据
SerialWrite.sendData(Context context, int port, byte[] data);
//如:串口0发送数据
SerialWrite.sendData(this, 0/*默认为0,此参数可省略*/, content.getBytes("GBK"));
//如:串口1发送数据
SerialWrite.sendData(this, 1, content.getBytes("GBK"));

//4.停止串口连接
private void stopSerialPortConnect() {
    serial0Read.unRegisterListener();
    serial1Read.unRegisterListener();
    serialPortUtil.unBindService();
}

//5.获取设备所有的串口信息
SerialPortFinder serialPortFinder = new SerialPortFinder();
String[] devices = serialPortFinder.getAllDevicesPath();

开发建议

由于Android各硬件平台与驱动的差异性,在接收串口数据,即在通过监听获取byte[]字节数组时,一条完整的指令数据有可能被无规律分隔为多条byte[]字节数组。所以此时,需要将多条byte[]字节数组拼接为一条完整的指令,以便于指令的解析工作。

所以,在串口数据格式制定的初期一定要做好相关工作。比如,可以在数据格式中指定开始标记数据长度结束标记等,这样可以方便数据的拼接以及校验等工作。

About

android serial port operation library

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages