Hier Bitte.
Senden 1 und 2 werden jeweils einer anderen Klasse zeitlich gesteuert
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
import java.util.UUID;
import android.R.integer;
import android.app.AlertDialog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
import android.bluetooth.BluetoothSocket;
import android.content.DialogInterface;
import android.os.Handler;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;
public class EsbinBlueCon {
Timmer t = new Timmer();
private static final String LOG_TAG = "EsbinBlueCon";
public BluetoothAdapter adapter;
public BluetoothSocket socket = null;
public Set<BluetoothDevice> pairedDevices;
public OutputStream stream_out = null;
public InputStream stream_in = null;
public boolean is_connected = false;
public String mac_adresse; // MAC Adresse des Bluetooth Adapters
public UUID myUUid =
UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
public float tempC = 0;
public float tempUM = 0;
public boolean is_send = false;
public boolean is_send2 = false;
public boolean sendErr= false;
public boolean setTempUM= false;
public String HEXTEMPC;
public String HEXTEMPUM;
public void verbinden(){
Log.d(LOG_TAG, "Verbinde mit " + mac_adresse);
BluetoothDevice remote_device =
adapter.getRemoteDevice(mac_adresse);
try {
socket =
remote_device.createRfcommSocketToServiceRecord(myUUid);
Log.d(LOG_TAG, "Socket erstellt");
} catch (Exception e) {
Log.e(LOG_TAG, "Socket Erstellung fehlgeschlagen: " +
e.toString());
}
adapter.cancelDiscovery();
// Socket verbinden
try {
socket.connect();
Log.d(LOG_TAG, "Socket verbunden");
is_connected = true;
} catch (IOException e) {
is_connected = false;
Log.e(LOG_TAG, "Socket kann nicht verbinden: " +
e.toString());
}
// Socket beenden, falls nicht verbunden werden konnte
if (!is_connected) {
try {
socket.close();
} catch (Exception e) {
Log.e(LOG_TAG,
"Socket kann nicht beendet werden: " +
e.toString());
}
}
// Outputstream erstellen:
try {
stream_out = socket.getOutputStream();
Log.d(LOG_TAG, "OutputStream erstellt");
} catch (IOException e) {
Log.e(LOG_TAG, "OutputStream Fehler: " + e.toString());
is_connected = false;
}
// Inputstream erstellen
try {
stream_in = socket.getInputStream();
Log.d(LOG_TAG, "InputStream erstellt");
} catch (IOException e) {
Log.e(LOG_TAG, "InputStream Fehler: " + e.toString());
is_connected = false;
}
}
private Timer timer1 = new Timer();
public long CTime(){
Log.e(LOG_TAG, "CTIME: " + t.getTotalTime());
return t.getTotalTime();
}
public void checkSenden (){
try {
if(stream_in.available() > 0){
t.end();
}else{
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void senden() {
t.start();
if( is_send==true){
is_send2=false;
byte[] message = new byte[]{0x3e, 0x02, 0x00};
byte[] msgBuffer = (message);
if (is_connected) {
Log.d(LOG_TAG, "Sende Nachricht: " + message);
Log.d(LOG_TAG, "STARTTIME");
try {
stream_out.write(msgBuffer);
} catch (IOException e) {
Log.e(LOG_TAG,
"Bluetest: Exception beim Senden: " +
e.toString());
}
}
Log.e(LOG_TAG, "is_send (senden): " + is_send);
Log.e(LOG_TAG, "is_send2:(senden): " + is_send2);
}
}
public void empfangen() {
checkSenden();;
if( is_send==true){
byte[] buffer = new byte[4]; // Puffer
int laenge; // Anzahl empf. Bytes
try{
if (stream_in.available() > 0) {
String msg="";
laenge = stream_in.read(buffer);
for (int i = 0; i < laenge; i++) {
msg += String.format("%02x", buffer[i]);
HEXTEMPC=msg;
Log.d(LOG_TAG, "MessageMSG 1: " +msg);
if(msg.length()==4){
float decim = Integer.parseInt(msg,16);
tempC = ((decim-1000)/10);
}
}
if(msg.length()==2){
Log.d(LOG_TAG, "MESSFEHLER1");}
// String msg2="";
// t.end();
Log.d(LOG_TAG, "Anzahl empfangender Bytes: " +
String.valueOf(laenge));
Log.d(LOG_TAG, "MessageMSG 1LL: " + laenge);
// Message zusammensetzen und in HEX
konvertieren + umrechnen:
//Log.d(LOG_TAG, "MessageMSG 1L: " +
msg.length());
Log.d(LOG_TAG, "Message: " + tempC);
} //else{Log.e(LOG_TAG, "NICHTS EMPF");
buffer=null;
is_send=false;
is_send2=true;
Log.e(LOG_TAG, "is_send (empfangen): " + is_send);
Log.e(LOG_TAG, "is_send2:(empfangen): " + is_send2);
} catch (Exception e) {
Log.e(LOG_TAG, "Fehler beim Empfangen: " +
e.toString());
}
}
}
public void senden2() {
if( is_send2==true) {
is_send = false;
byte[] message = new byte[]{0x3e, 0x02, 0x02};
byte[] msgBuffer = (message);
if (is_connected) {
Log.d(LOG_TAG, "Sende Nachricht 2: " + message);
try {
stream_out.write(msgBuffer);
} catch (IOException e) {
Log.e(LOG_TAG,
"Bluetest: Exception beim Senden: " +
e.toString());
}
}
Log.e(LOG_TAG, "is_send (senden2): " + is_send);
Log.e(LOG_TAG, "is_send2:(senden2): " + is_send2);
}
}
public void empfangen2() {
Log.d(LOG_TAG, "SetTempUmg"+setTempUM);
if (is_send2 == true) {
byte[] buffer1 = new byte[4]; // Puffer
int laenge; // Anzahl empf. Bytes
try {
if (stream_in.available() > 0) {
Log.d(LOG_TAG, "NICHTS EME2");
String msg = "";
// String msg2="";
laenge = stream_in.read(buffer1);
Log.d(LOG_TAG,
"Anzahl empfangender Bytes2: " +
String.valueOf(laenge));
// Message zusammensetzen und in HEX konvertieren +
umrechnen:
for (int i = 0; i < laenge; i++) {
msg += String.format("%02x", buffer1[i]);
HEXTEMPUM = msg;
Log.d(LOG_TAG, "MessageMSG 2: " + msg);
if (msg.length() == 4) {
float decim = Integer.parseInt(msg, 16);
tempUM = ((decim - 1000) / 10);
}
if (msg.length() == 2) {
Log.d(LOG_TAG, "MESSFEHLER2");
}
}
Log.d(LOG_TAG, "Message 2: " + tempUM);
buffer1 = null;
is_send2 = false;
is_send = true;
Log.e(LOG_TAG, "is_send (empfangen2): " + is_send);
Log.e(LOG_TAG, "is_send2:(empfangen2): " + is_send2);
} else {
Log.e(LOG_TAG, "NICHTS EMPF2");
} //else Toast.makeText(this, "Nichts empfangen",
Toast.LENGTH_LONG).show();
//Toast.makeText(this, "Nichts empfangen",
Toast.LENGTH_LONG)
// .show();
} catch (Exception e) {
Log.e(LOG_TAG, "Fehler beim Empfangen2: " + e.toString());
}
}
}
public void trennen() {
if (is_connected && stream_out != null) {
is_connected = false;
is_send=false;
is_send2=false;
Log.d(LOG_TAG, "Trennen: Beende Verbindung");
try {
stream_out.flush();
socket.close();
} catch (IOException e) {
Log.e(LOG_TAG,
"Fehler beim beenden des Streams und
schliessen des Sockets: "
+ e.toString());
}
} else
Log.d(LOG_TAG, "Trennen: Keine Verbindung zum beenden");
}