Передача данных по Bluetooth.

Ответить
Evgeny
Сообщения: 2
Зарегистрирован: 03 сен 2013, 14:21

Передача данных по Bluetooth.

Сообщение Evgeny » 03 сен 2013, 15:34

Проблема в следующем, после определенного количества переданных байт(зависит от телефона, на huawei ~ 500, на nexus 4 ~ 1700) от Андроида к Ардуино передача обрывается, и приложение зависает после чего вылетает.
Вопрос заключается в том, как это исправить, такое ощущение, что перполняется буфер, но методов его очистки я не нашел. Пробовал [JAVA]OutputStream.flush();[/JAVA] не помогло
Передачу и подключение делаю через отдельный поток:

Код: Выделить всё

   class ConnectedThread extends Thread{

	BluetoothAdapter bluetooth1;
	private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
	
	BluetoothSocket clientSocket;
    
	private  BluetoothSocket mmSocket;
	private OutputStream mmOutStream;
	OutputStream tmpOut = null;

	    private static final String TAG = "bluetooth1";
	public ConnectedThread()
	{
		bluetooth1 = BluetoothAdapter.getDefaultAdapter();
		 bluetooth1.enable();
		BluetoothDevice device = bluetooth1.getRemoteDevice("00:13:02:01:72:69");
	
	  try {
	      mmSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
	    } catch (IOException e) {
	      
	    }
	  bluetooth1.cancelDiscovery();
	
	   try
	   {
		mmSocket.connect();  
	   }
	   catch(IOException e)
	   {}
	   try {
           tmpOut = mmSocket.getOutputStream();
         
       } catch (IOException e) { }
       mmOutStream = tmpOut;
   }
	public void write(String message) {
            Log.d(TAG, "...Данные для отправки: " + message + "...");
         byte[] msgBuffer = message.getBytes();
            try {
                mmOutStream.write(msgBuffer);
                }
            } 
            catch (IOException e) {
                Log.d(TAG, "...Ошибка отправки данных: " + e.getMessage() + "...");     
              }
            }
             }
Соединение между Arduino и Android устанавливается по нажатию на кнопку следующим образом:

Код: Выделить всё

 mConnectedThread = new ConnectedThread();
		mConnectedThread.start();
Само сообщение отправляется по событию изменения значения ProgressBar - onProgressChanged

Код: Выделить всё

 
          public void onProgressChanged(SeekBar seekBar, int progress,
			boolean fromUser) {
 mConnectedThread.write("48");}

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Передача данных по Bluetooth.

Сообщение KamiSempai » 03 сен 2013, 16:43

С Bluetooth никогда не работал, а с Ардуино тем более, но мне, что-то не нравится класс ConnectedThread.
Вы этот код от куда-то взяли или самостоятельно написали?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

megaservis
Сообщения: 4
Зарегистрирован: 30 окт 2013, 11:33

Re: Передача данных по Bluetooth.

Сообщение megaservis » 30 окт 2013, 18:59

Всем привет ,принимайте новенького пришел я к вам с поклоном вот отсюда http://bezkz.su/forum/сайт посвящен устройствам на микроконтроллерах.
Мне как и многим разработчикам устройств на микроконтроллерах и просто радиолюбителям будет очень интересна тема работа с Bluetooth но как говориться с android руки еще коротки.
Подскажите куда копать среда разработки установлена ,простые программы опробованы ,есть опыт программирования на Си может есть уже на сайте простой пример программы для работы с Bluetooth. Хочется не просто скопировать но и самому разобраться как настроить ,какие команды, ну и написать простейшую программу например на 3 кнопки.Первой кнопка подключиться к Bluetooth устройству ,второй кнопкой при нажатии передали значение 1,а третей кнопкой значение 0 (по типу включили ,выключили светодиод).

Ответить