From 76407ef42394ff1046c508a106c0b51812df2a0f Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 10 十二月 2025 18:12:53 +0800
Subject: [PATCH] 钥匙柜开门添加 指纹方式
---
keyCabinet-android/app/src/main/java/android_serialport_api/SerialHelper.java | 227 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 227 insertions(+), 0 deletions(-)
diff --git a/keyCabinet-android/app/src/main/java/android_serialport_api/SerialHelper.java b/keyCabinet-android/app/src/main/java/android_serialport_api/SerialHelper.java
new file mode 100644
index 0000000..f91de72
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/android_serialport_api/SerialHelper.java
@@ -0,0 +1,227 @@
+package android_serialport_api;
+
+import com.doumee.keyCabinet.utils.usb.DevComm;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.security.InvalidParameterException;
+
+
+public abstract class SerialHelper{
+ private SerialPort mSerialPort;
+ private OutputStream mOutputStream;
+ private InputStream mInputStream;
+ private ReadThread mReadThread;
+ private SendThread mSendThread;
+ private String sPort="/dev/s3c2410_serial0";
+ private int iBaudRate=9600;
+ private boolean _isOpen=false;
+ private byte[] _bLoopData=new byte[]{0x30};
+ private int iDelay=500;
+ //----------------------------------------------------
+ public SerialHelper(String sPort,int iBaudRate){
+ this.sPort = sPort;
+ this.iBaudRate=iBaudRate;
+ }
+ public SerialHelper(){
+ this("/dev/s3c2410_serial0",9600);
+ }
+ public SerialHelper(String sPort){
+ this(sPort,9600);
+ }
+ public SerialHelper(String sPort,String sBaudRate){
+ this(sPort,Integer.parseInt(sBaudRate));
+ }
+ //----------------------------------------------------
+ public void open() throws SecurityException, IOException,InvalidParameterException{
+ mSerialPort = new SerialPort(new File(sPort), iBaudRate, 0);
+ mOutputStream = mSerialPort.getOutputStream();
+ mInputStream = mSerialPort.getInputStream();
+ mReadThread = new ReadThread();
+ mReadThread.start();
+ mSendThread = new SendThread();
+ mSendThread.setSuspendFlag();
+ mSendThread.start();
+ _isOpen=true;
+ }
+ //----------------------------------------------------
+ public void close(){
+ if (mReadThread != null)
+ mReadThread.interrupt();
+ if (mSerialPort != null) {
+ mSerialPort.close();
+ mSerialPort = null;
+ }
+ _isOpen=false;
+ }
+ //----------------------------------------------------
+ public void send(byte[] bOutArray, int nSize){
+ try
+ {
+ mOutputStream.write(bOutArray, 0, nSize);
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ //----------------------------------------------------
+ public void sendTxt(String sTxt){
+ byte[] bOutArray =sTxt.getBytes();
+ send(bOutArray, sTxt.length());
+ }
+ //----------------------------------------------------
+ private class ReadThread extends Thread {
+ @Override
+ public void run() {
+ super.run();
+ while(!isInterrupted()) {
+ try
+ {
+ if (mInputStream == null) return;
+ byte[] buffer=new byte[DevComm.MAX_DATA_LEN];
+ int size = mInputStream.read(buffer);
+ if (size > 0){
+ ComBean ComRecData = new ComBean(sPort,buffer,size);
+ onDataReceived(ComRecData);
+ }
+ try
+ {
+ Thread.sleep(50);
+ } catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ } catch (Throwable e)
+ {
+ e.printStackTrace();
+ return;
+ }
+ }
+ }
+ }
+ //----------------------------------------------------
+ private class SendThread extends Thread{
+ public boolean suspendFlag = true;
+ @Override
+ public void run() {
+ super.run();
+ while(!isInterrupted()) {
+ synchronized (this)
+ {
+ while (suspendFlag)
+ {
+ try
+ {
+ wait();
+ } catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+ send(getbLoopData(), 1);
+ try
+ {
+ Thread.sleep(iDelay);
+ } catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void setSuspendFlag() {
+ this.suspendFlag = true;
+ }
+
+ public synchronized void setResume() {
+ this.suspendFlag = false;
+ notify();
+ }
+ }
+ //----------------------------------------------------
+ public int getBaudRate()
+ {
+ return iBaudRate;
+ }
+ public boolean setBaudRate(int iBaud)
+ {
+ if (_isOpen)
+ {
+ return false;
+ } else
+ {
+ iBaudRate = iBaud;
+ return true;
+ }
+ }
+ public boolean setBaudRate(String sBaud)
+ {
+ int iBaud = Integer.parseInt(sBaud);
+ return setBaudRate(iBaud);
+ }
+ //----------------------------------------------------
+ public String getPort()
+ {
+ return sPort;
+ }
+ public boolean setPort(String sPort)
+ {
+ if (_isOpen)
+ {
+ return false;
+ } else
+ {
+ this.sPort = sPort;
+ return true;
+ }
+ }
+ //----------------------------------------------------
+ public boolean isOpen()
+ {
+ return _isOpen;
+ }
+ //----------------------------------------------------
+ public byte[] getbLoopData()
+ {
+ return _bLoopData;
+ }
+ //----------------------------------------------------
+ public void setbLoopData(byte[] bLoopData)
+ {
+ this._bLoopData = bLoopData;
+ }
+ //----------------------------------------------------
+ public void setTxtLoopData(String sTxt){
+ this._bLoopData = sTxt.getBytes();
+ }
+ //----------------------------------------------------
+ public int getiDelay()
+ {
+ return iDelay;
+ }
+ //----------------------------------------------------
+ public void setiDelay(int iDelay)
+ {
+ this.iDelay = iDelay;
+ }
+ //----------------------------------------------------
+ public void startSend()
+ {
+ if (mSendThread != null)
+ {
+ mSendThread.setResume();
+ }
+ }
+ //----------------------------------------------------
+ public void stopSend()
+ {
+ if (mSendThread != null)
+ {
+ mSendThread.setSuspendFlag();
+ }
+ }
+ //----------------------------------------------------
+ protected abstract void onDataReceived(ComBean ComRecData);
+}
\ No newline at end of file
--
Gitblit v1.9.3