BLUETOOTH. нужна помощь

Ответить
GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

BLUETOOTH. нужна помощь

Сообщение GRAF_COLLIOSTRO » 13 фев 2015, 11:40

Ребят, направьте меня куда копать, пожалуйста.

есть устройство с BLUETOOTH - делает замеры. суть приложения андройд - сохранить данные о замерах с привязкой к карте GOOGLE.

как бы вопросов не возникает, кроме самого контакта по BLUETOOTH!!!

устройство без проблем коннектится к планшету. дальше оно отвечает в режиме com-порта... низкоуровневый бинарный запрос - на него приходит ответ. Вот пример:

Request
01 10 01 70 16 F0 07 02 2F 10 02 64 00 C8 00 03 1F C7 04
Answer
01 10 16 F0 01 70 16 02 2F 10 00 02 08 00 64 00 16 9F 7A D5 41 08 00 C8 00 16 AC 57 BE 41 03 3B 2D 04

под WIN32 победил за сутки - всё работает.

А как организовать это на андройде??? примера полного не прошу, хотябы направьте, как получить такого рода доступ к блютусине???

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: BLUETOOTH. нужна помощь

Сообщение GRAF_COLLIOSTRO » 13 фев 2015, 12:17

вот нашёл что мне нужно: BluetoothSocket
http://developer.android.com/intl/ru/re ... ocket.html

кто работал с этим??? как со стримом общаться???

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: BLUETOOTH. нужна помощь

Сообщение doter.ua » 13 фев 2015, 12:54

Поиск по проектам гитхаба по тегам + по расширению файла.
https://github.com/search?utf8=%E2%9C%9 ... rchresults
Например один из результатов: https://github.com/marcuspimenta/Chat-B ... rvice.java
или вот еще
https://github.com/arcBlin/AndroidBluet ... hread.java
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: BLUETOOTH. нужна помощь

Сообщение GRAF_COLLIOSTRO » 13 фев 2015, 18:26

Огромное СПАСИБО! почти уже победил)

тока походу в отдельный поток надо выкидывать( как-то очень криво оно работает у меня( коннект есть!!! теперь буду отлаживать...

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: BLUETOOTH. нужна помощь

Сообщение GRAF_COLLIOSTRO » 04 мар 2015, 14:59

эммм... всёжтаки ещё нужна помощь(((

получил сокет... законнектил... mmSocket.isConnected() выдаёт true. Имею в итоге mmInStream и mmOutStream для входа и выхода.

не получается кинуть байты( вот что делаю:

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

public void onClickWRITE(View view) {
sendData("01 10 01 90 16 F0 04 02 23 10 6F 00 03 89 B9 04");	 
// sendData("0x01 0x10 0x01 0x90 0x16 0xF0 0x04 0x02 0x23 0x10 0x6F 0x00 0x03 0x89 0xB9 0x04");
// sendData("0110019016F0040223106F000389B904");
	    	    } 
как всёжтаки правильно то??? мне нужно чтобы закинулся массив байт вот в таком виде:"01 10 01 90 16 F0 04 02 23 10 6F 00 03 89 B9 04"

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

private void sendData(String message) {
	byte[] msgBuffer = message.getBytes();

	try {
		mmOutStream.write(msgBuffer);
	} catch (IOException e) {};
}
где я неправ?) подключенное устройство не отвечает на запрос, хотя под вин32 аналогичный запрос возвращает нормальные данные.

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: BLUETOOTH. нужна помощь

Сообщение GRAF_COLLIOSTRO » 16 мар 2015, 11:12

победил OUTSTREAM
если кому надо, делаю вот так:

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

byte[] temp = { (byte) 0x01,
		          (byte) 0x10,
		          (byte) 0x01,
		          (byte) 0xA0,
		          (byte) 0x01,
		          (byte) 0xF0,
		          (byte) 0x04,
		          (byte) 0x02,
		          (byte) 0x23,
		          (byte) 0x10,
		          (byte) 0x64,
		          (byte) 0x00,
		          (byte) 0x03,
		          (byte) 0xBE,
		          (byte) 0xF8,
		          (byte) 0x04};


 try {
    	            mmOutStream.write(temp);
    	        } catch (IOException e) { };

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: BLUETOOTH. нужна помощь

Сообщение GRAF_COLLIOSTRO » 16 мар 2015, 11:24

теперь прошу помощи распарсить входящий стрим.

не получается(((

onClickREAD:

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

 byte[] buffer;
	  int bytesAvailableCount = 0;
	  int bytesReadCount = 0;
	  StringBuilder receivedString = new StringBuilder();
      String line = "";
	  
	   try {
          bytesAvailableCount = mmInStream.available();
          Log.d(LOG_TAG, "получено " + bytesAvailableCount+"байт");}
	  catch (IOException e) {};
	  
	  buffer = new byte[bytesAvailableCount];
	  
	  try {
	  bytesReadCount = mmInStream.read(buffer, 0, buffer.length);
	  }
	  catch (IOException e) {};
таким образом приходят 22 байта... мне нужно взять последовательно 18+17+16+15 байт и получить из этого значение во float

не соображу как это реализовать((( Помогите, пожалуйста!

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: BLUETOOTH. нужна помощь

Сообщение GRAF_COLLIOSTRO » 16 мар 2015, 11:39

вот так у меня работает это в делфи:

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

   for i := 1 to 20 do cpd.ReadByte(reg[i]); //прочитал побайтно в массив
   s:= format('%.2x',[reg[18]])+format('%.2x',[reg[17]])+format('%.2x',[reg[16]])+format('%.2x',[reg[15]]); // слепил всё в стринге
   p:=StrToInt('$'+s);//дальше преобразую к float
   float:=PSingle(@p)^;
   ONO:= FloatTostr(float);

очень нужна помощь с синтаксисом android.java

как такое реализовать?

хотябы подскажите в каком направлении копать??? как стрим считать побайтно в массив???

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: BLUETOOTH. нужна помощь

Сообщение doter.ua » 16 мар 2015, 11:45

Input Output stream java
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: BLUETOOTH. нужна помощь

Сообщение GRAF_COLLIOSTRO » 16 мар 2015, 14:09

дошёл вот до чего:

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

byte[] buffer;

 buffer = new byte[bytesAvailableCount];
 	  try {
	  bytesReadCount = mmInStream.read(buffer, 0, buffer.length);
	  }
	  catch (IOException e) {};
     
	  StringBuilder sb = new StringBuilder(8);
	  sb.append(String.format("%02x", buffer[18] & 0xff));
	  sb.append(String.format("%02x", buffer[17] & 0xff));
	  sb.append(String.format("%02x", buffer[16] & 0xff));
	  sb.append(String.format("%02x", buffer[15] & 0xff));
	  s=sb.toString();

теперь у меня в s лежит стринговое значение "01071A0D"

дело за малым) как его конвертировать во float ???

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: BLUETOOTH. нужна помощь

Сообщение GRAF_COLLIOSTRO » 17 мар 2015, 09:35

Всё. можно закрывать топик. победил от А до Я

вот подсказали как преобразовать во float http://stackoverflow.com/questions/1071 ... at-in-java

если будут вопросы по блютус сокету, как говорится, ВЕЛКОМ!

теперь пойду ваять интерфес и маленько оптимизирую всё под свои нужды. Спасибо всем, кто помогал в освоении!

Ответить