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