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<byte[]> SendDatasList = new ArrayList<byte[]>();
|
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();
|
}
|
}
|
}
|
}
|
}
|