阅读量:0
一、app目录下添加
implementation 'io.github.xmaihh:serialport:2.1.1'
1) 点击Sync Now更新依赖
2) AndroidManifest.xml文件添加读取设备信息权限
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
二、 使用
1) 创建MySerialPort.java文件
package com.youlian.weight.serialport; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.util.Log; import java.io.IOException; import java.util.Arrays; import tp.xmaihh.serialport.SerialHelper; import tp.xmaihh.serialport.bean.ComBean; import tp.xmaihh.serialport.utils.ByteUtil; public class MySerialPort { private SerialHelper serialHelper = null; private String Tag = "MySerialPort"; private Handler handler; private boolean isHexType = true; private Context context; public MySerialPort(String port, Context context){ this.context = context; serialHelper = new SerialHelper(port, 9600) { @Override protected void onDataReceived(ComBean paramComBean) { // String time = paramComBean.sRecTime; String rxText = new String(paramComBean.bRec); if (isHexType) { //转成十六进制数据 rxText = ByteUtil.ByteArrToHex(paramComBean.bRec); } // Log.d(Tag,"收到消息:"+rxText); handler = new Handler(Looper.getMainLooper()); String finalRxText = rxText; handler.post(new Runnable() { @Override public void run() { typeOperate(finalRxText); } }); } }; serialHelper.setStopBits(1); //设置停止位 serialHelper.setDataBits(8); //设置数据位 serialHelper.setParity(0); //设置校验位 serialHelper.setFlowCon(0); //设置流控 try { serialHelper.open(); }catch (IOException e){ Log.e(Tag,"串口打开失败"); } } /** * 返回指令判断 * @param data */ private void typeOperate(String data){ Log.d(Tag,"返回数据:" + data); } /** * 发送byte[] * @param bOutArray */ public void sendByte(byte[] bOutArray){ Log.e(Tag,"发送byte[]:"+ Arrays.toString(bOutArray)); serialHelper.send(bOutArray); } /** * 发送Hex * @param sHex */ public void sendHex(String sHex) { // Log.e(Tag, "发送Hex:" + sHex + ", 时间:" + getTime()); serialHelper.sendHex(sHex); } /** * 发送ASCII * @param sTxt */ public void sendTxt(String sTxt){ Log.e(Tag,"发送ASCII:"+sTxt); serialHelper.sendTxt(sTxt); } /** * 打开串口 */ public void open(){ try { serialHelper.open(); }catch (Exception e){ Log.e(Tag,"串口打开失败"); } } /** * 关闭串口 */ public void close(){ serialHelper.close(); } }
2) 实例化
import com.you.weight.serialport.MySerialPort; public static MySerialPort mySerialPort = null; // /dev/ttyS3是你自己插的串口名称 mySerialPort = new MySerialPort("/dev/ttyS3", MainActivity.this);