Я использую связь ESP-32 Bluetooth, но когда я посылаю последовательные данные, они показывают данные мусора в Android Studio.Но отправка сообщения через Android на Arduino это нормально.Только RX андроида делает ошибки.Я пробую другое приложение, которое есть в PlayStore, и оно отлично работает как на RX, так и на TX
android Activity.java
handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case RECIEVE_MESSAGE: // if receive massage
byte[] readBuf = (byte[]) msg.obj;
String strIncom = new String(readBuf, 0, msg.arg1); // create string from bytes array
// Log.d(TAG, strIncom+"hhh");
sb.append(strIncom); // append string
int endOfLineIndex = sb.indexOf("\n"); // determine the end-of-line
if (endOfLineIndex > 0) { // if end-of-line,
String sbprint = sb.substring(0, endOfLineIndex);
// sb.setLength(0);
// extract string
sb.delete(0, sb.length()); // and clear
textView.setText("Data from Arduino: " + sbprint ); // update TextView
Log.d(TAG, sbprint);
}
Log.d(TAG, "...String:"+ sb.toString() + "Byte:" + msg.arg1 + "...");
break;
}
}
};
private class ConnectedThread extends Thread {
private final InputStream mInStream;
private final OutputStream mOutStream;
public ConnectedThread(BluetoothSocket socket) {
InputStream tmpIn = null;
OutputStream tmpOut = null;
// Get the input and output streams, using temp objects because
// member streams are final
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) { }
mInStream = tmpIn;
mOutStream = tmpOut;
}
public void run() {
byte[] buffer = new byte[256]; // buffer store for the stream
int bytes; // bytes returned from read()
// Keep listening to the InputStream until an exception occurs
while (true) {
try {
// Read from the InputStream
bytes = mInStream.read(buffer); // Get number of bytes and message in "buffer"
handler.obtainMessage(RECIEVE_MESSAGE, bytes, -1, buffer).sendToTarget(); // Send to message queue Handler
// handler.handleMessage(new Message());
} catch (IOException e) {
break;
}
}
}
/* Call this from the main activity to send data to the remote device */
public void write(String message) {
Log.d(TAG, "...Data to send: " + message + "...");
byte[] msgBuffer = message.getBytes();
try {
mOutStream.write(msgBuffer);
} catch (IOException e) {
Log.d(TAG, "...Error data send: " + e.getMessage() + "...");
}
}
}
}
Seraial Input: Hello Output: иногда "heo" "hll "
Может кто-нибудь подсказать мне, где я делаю не так