安卓串口开发类库,含演示源码

关于安卓串口开发,这篇文章写的比较明白:

https://blog.csdn.net/qq_35952946/article/details/78863871

但是用这个方案代码会报错:

java.lang.UnsatisfiedLinkError: dlopen failed: ××××.so: has text relocations

这个因为编译的 so 文件太旧了。

下面的示例源码中,修改了上述问题,并提供演示示例,可正常运行。

使用方法:

获取串口列表

SerialPortFinder serialPortFinder = new SerialPortFinder();
return serialPortFinder.getAllDevices();

  

打开/关闭串口:

///dev/ttyS1后面的数字1,是串口编号,根据实际情况修改
final SerialPortUtils portUtils = new SerialPortUtils("/dev/ttyS1",57600,0);
portUtils.openSerialPort();
portUtils.closeSerialPort();

  

处理收到的数据:

//串口数据监听事件
        portUtils.setOnDataReceiveListener(new SerialPortUtils.OnDataReceiveListener() {
            byte[] mBuffer;
            Handler handler = new Handler();

            @Override
            public void onDataReceive(byte[] buffer, int size) {
                Log.d(TAG, "收到数据:" + Byter.byteToHex(buffer));
                //
                //在线程中直接操作UI会报异常:ViewRootImpl$CalledFromWrongThreadException
                //解决方法:handler
                //
                mBuffer = buffer;
                handler.post(runnable);
            }
            //开线程更新UI
            Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    recvContent.setText("size:"+ String.valueOf(mBuffer.length)+"数据监听:"+ Byter.byteToHex(mBuffer));
                }
            };
        });

  

代码文件稍后上传

猜你喜欢

转载自www.cnblogs.com/lifang-biz/p/11770299.html