package android.serialport.api.sample; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import android.os.Message; public class KNX_ReceiveAndSend { public static List SendDatasList = new ArrayList(); private static KNX_Serialport mKNX_SerialPort; private static OutputStream mOutputStream; private static InputStream mInputStream; public static void Start(KNX_Serialport _KNX_SerialPort, OutputStream _OutputStream, InputStream _InputStream) { mInputStream = _InputStream; mKNX_SerialPort = _KNX_SerialPort; mOutputStream = _OutputStream; // 发送数据线程 // new SendThread().start(); new ReceiveThread().start(); } private static class SendThread extends Thread { @Override public void run() { super.run(); while (true) { try { Thread.sleep(100); for (int i = 0; i < SendDatasList.size(); i++) { try { Thread.sleep(100); } catch (Exception e) { } try { byte[] sendBytes = SendDatasList.get(i); try { mOutputStream.flush(); mOutputStream.write(sendBytes); } catch (Exception e) { e.printStackTrace(); } SendDatasList.remove(i); i--; } catch (Exception ex) { ex.getMessage(); } } } catch (Exception e) { e.getMessage(); } } } } private static class ReceiveThread extends Thread { @Override public void run() { super.run(); while (!isInterrupted()) { int size = 0; try { byte[] buffer = new byte[64]; if (mInputStream == null) { return; } size = mInputStream.read(buffer); for (int i = 0; i < size - 1; i++) { if ((buffer[i] & 0xFF) == 0xAA) { byte bytes[] = new byte[(int) buffer[i + 1]]; System.arraycopy(buffer, i, bytes, 0, bytes.length); // String str = ""; // for (int j = 0; j < bytes.length; j++) { // str += Integer.toHexString(bytes[j] & 0xFF)+"."; // } if (KNX.UART_Receive(bytes)) { // 物理地址不处理 // int individual_addr = // KNX.get_Individual_addr(); Message msg = new Message(); msg.arg1 = KNX.get_Group_addr(); msg.arg2 = KNX.get_State(); Fragment_KNX.mHandler.sendMessage(msg); } } } } catch (Exception e) { e.printStackTrace(); } } } } }