Страница 1 из 1
BLUETOOTH. нужна помощь
Добавлено: 13 фев 2015, 11:40
GRAF_COLLIOSTRO
Ребят, направьте меня куда копать, пожалуйста.
есть устройство с 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 победил за сутки - всё работает.
А как организовать это на андройде??? примера полного не прошу, хотябы направьте, как получить такого рода доступ к блютусине???
Re: BLUETOOTH. нужна помощь
Добавлено: 13 фев 2015, 12:17
GRAF_COLLIOSTRO
вот нашёл что мне нужно: BluetoothSocket
http://developer.android.com/intl/ru/re ... ocket.html
кто работал с этим??? как со стримом общаться???
Re: BLUETOOTH. нужна помощь
Добавлено: 13 фев 2015, 12:54
doter.ua
Re: BLUETOOTH. нужна помощь
Добавлено: 13 фев 2015, 18:26
GRAF_COLLIOSTRO
Огромное СПАСИБО! почти уже победил)
тока походу в отдельный поток надо выкидывать( как-то очень криво оно работает у меня( коннект есть!!! теперь буду отлаживать...
Re: BLUETOOTH. нужна помощь
Добавлено: 04 мар 2015, 14:59
GRAF_COLLIOSTRO
эммм... всёжтаки ещё нужна помощь(((
получил сокет... законнектил... 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 аналогичный запрос возвращает нормальные данные.
Re: BLUETOOTH. нужна помощь
Добавлено: 16 мар 2015, 11:12
GRAF_COLLIOSTRO
победил 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) { };
Re: BLUETOOTH. нужна помощь
Добавлено: 16 мар 2015, 11:24
GRAF_COLLIOSTRO
теперь прошу помощи распарсить входящий стрим.
не получается(((
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
не соображу как это реализовать((( Помогите, пожалуйста!
Re: BLUETOOTH. нужна помощь
Добавлено: 16 мар 2015, 11:39
GRAF_COLLIOSTRO
вот так у меня работает это в делфи:
Код: Выделить всё
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
как такое реализовать?
хотябы подскажите в каком направлении копать??? как стрим считать побайтно в массив???
Re: BLUETOOTH. нужна помощь
Добавлено: 16 мар 2015, 11:45
doter.ua
Input Output stream java
Re: BLUETOOTH. нужна помощь
Добавлено: 16 мар 2015, 14:09
GRAF_COLLIOSTRO
дошёл вот до чего:
Код: Выделить всё
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 ???
Re: BLUETOOTH. нужна помощь
Добавлено: 17 мар 2015, 09:35
GRAF_COLLIOSTRO
Всё. можно закрывать топик. победил от А до Я
вот подсказали как преобразовать во float
http://stackoverflow.com/questions/1071 ... at-in-java
если будут вопросы по блютус сокету, как говорится, ВЕЛКОМ!
теперь пойду ваять интерфес и маленько оптимизирую всё под свои нужды. Спасибо всем, кто помогал в освоении!