0% ont trouvé ce document utile (0 vote)
80 vues3 pages

Connexion Bluetooth avec Arduino en Java

Ce document décrit une application Android permettant la communication par Bluetooth avec une carte Arduino. Il présente les classes et méthodes nécessaires pour se connecter à la carte, envoyer et recevoir des données via les flux Bluetooth.

Transféré par

Chiheb Halouani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
80 vues3 pages

Connexion Bluetooth avec Arduino en Java

Ce document décrit une application Android permettant la communication par Bluetooth avec une carte Arduino. Il présente les classes et méthodes nécessaires pour se connecter à la carte, envoyer et recevoir des données via les flux Bluetooth.

Transféré par

Chiheb Halouani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

// Importation des bibliothèques nécessaires

import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;

// Classe principale de l'application


public class MainActivity extends AppCompatActivity {

private BluetoothAdapter mBluetoothAdapter;


private BluetoothSocket mmSocket;
private BluetoothDevice mmDevice;
private OutputStream mmOutputStream;
private InputStream mmInputStream;
private Thread workerThread;
private byte[] readBuffer;
private int readBufferPosition;
private volatile boolean stopWorker;

// Méthode appelée lorsque l'application est lancée


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// Initialisation de l'adaptateur Bluetooth


mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

// Vérification de la disponibilité de Bluetooth sur l'appareil


if (mBluetoothAdapter == null) {
// Afficher un message d'erreur si Bluetooth n'est pas disponible
Toast.makeText(this, "Bluetooth non disponible",
Toast.LENGTH_SHORT).show();
return;
}

// Activation de Bluetooth si nécessaire


if (!mBluetoothAdapter.isEnabled()) {
Intent enableBluetooth = new
Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBluetooth, 0);
}

// Connexion à la carte Arduino via Bluetooth


try {
// Obtention de l'adresse MAC de la carte Arduino
String macAddress = "XX:XX:XX:XX:XX:XX"; // remplacez par l'adresse MAC
de votre carte Arduino
mmDevice = mBluetoothAdapter.getRemoteDevice(macAddress);

// Création d'un socket Bluetooth pour la connexion


UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
mmSocket.connect();
mmOutputStream = mmSocket.getOutputStream();
mmInputStream = mmSocket.getInputStream();
// Initialisation du thread pour la réception des données
beginListenForData();

} catch (IOException e) {
// Afficher un message d'erreur si la connexion échoue
// Méthode pour envoyer des données à la carte Arduino
public void sendData(String data) {
try {
mmOutputStream.write(data.getBytes());
} catch (IOException e) {
// Afficher un message d'erreur si l'envoi de données échoue
Toast.makeText(this, "L'envoi de données a échoué",
Toast.LENGTH_SHORT).show();
}
}

// Méthode pour recevoir des données de la carte Arduino


void beginListenForData() {
final Handler handler = new Handler();
final byte delimiter = 10; // Caractère de fin de ligne

stopWorker = false;
readBufferPosition = 0;
readBuffer = new byte[1024];

workerThread = new Thread(new Runnable() {


public void run() {
while (!Thread.currentThread().isInterrupted() && !stopWorker)
{
try {
int bytesAvailable = mmInputStream.available();
if (bytesAvailable > 0) {
byte[] packetBytes = new byte[bytesAvailable];
mmInputStream.read(packetBytes);
for (int i = 0; i < bytesAvailable; i++) {
byte b = packetBytes[i];
if (b == delimiter) {
byte[] encodedBytes = new
byte[readBufferPosition];
System.arraycopy(readBuffer, 0,
encodedBytes, 0, encodedBytes.length);
final String data = new
String(encodedBytes, "US-ASCII");
readBufferPosition = 0;

handler.post(new Runnable() {
public void run() {
// Traitement des données reçues
ici
// Par exemple, affichage des
données dans un TextView
TextView textView =
findViewById(R.id.textView);
textView.setText(data);
}
});
} else {
readBuffer[readBufferPosition++] = b;
}
}
}
} catch (IOException e) {
stopWorker = true;
}
}
}
});

workerThread.start();
}
}

Vous aimerez peut-être aussi