У меня есть плата Arduino UNO, подключенная через Bluetooth к моему телефону Android. Все отлично. Любая команда с телефона Android получена и выполнена в Arduino. Но обратная связь от arduino глючная.
Это первые данные от Arduino
device information :
pin 4 set to 0
pin 5 set to 0
pin 6 set to 0
но вторые данные приходят вот так
change pin 4 to 1n :
pin 4 set to 0
pin 5 set to 0
pin 6 set to 0
что я ожидал, это
change pin 4 to 1
Вот код Android, который я получаю из интернета
mHandler = new Handler(){
public void handleMessage(android.os.Message msg){
if(msg.what == MESSAGE_READ){
String readMessage = null;
try {
readMessage = new String((byte[]) msg.obj, "UTF-8");
//readMessage[bytes] = '\0';
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
mReadBuffer.append(readMessage+"\n");
}
if(msg.what == CONNECTING_STATUS){
if(msg.arg1 == 1)
mBluetoothStatus.setText("Connected to Device: " + (String)(msg.obj));
else
mBluetoothStatus.setText("Connection Failed");
}
}
};
private class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream;
public ConnectedThread(BluetoothSocket socket) {
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) { }
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
public void run() {
byte[] buffer = new byte[1024];
int bytes;
while (true) {
try {
bytes = 0;
bytes = mmInStream.available();
if(bytes != 0) {
SystemClock.sleep(100);
bytes = mmInStream.available();
bytes = mmInStream.read(buffer, 0, bytes);
mHandler.obtainMessage(MESSAGE_READ, bytes, -1, buffer).sendToTarget();
}
} catch (IOException e) {
e.printStackTrace();
break;
}
}
}
public void write(String input) {
byte[] bytes = input.getBytes();
try {
mmOutStream.write(bytes);
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "Show Paired Devices", Toast.LENGTH_SHORT).show();
mReadBuffer.append("Error Sending Data\n");
}
}
public void cancel() {
try {
mmSocket.close();
} catch (IOException e) {
}
}
}
пожалуйста, помогите.