Форум программистов, компьютерный форум, киберфорум
C++ Builder: FireMonkey
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 46

Сопряжение с Bluetooth устройством в Android

04.03.2017, 13:19. Показов 5270. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа, пишу в Embarcadero 10.1 Berlin под андроид
Использую компонент TBluetooth.
Не могу осуществить сопряжение. Онибки не выдается, просто ничего не происходит. Вызов Pair() возвращает ноль.


В че причина?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Bluetooth1->Enabled=true;
Bluetooth1->DiscoverDevices(5000);
Memo1->Lines->Clear();
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Bluetooth1DiscoveryEnd(TObject * const Sender, TBluetoothDeviceList * const ADeviceList)
 
{
   int n;
 
TBluetoothDeviceList *BL = new  TBluetoothDeviceList;
TBluetoothDevice *BTDevice;
TBluetoothAdapter *BTAdapter;
TBluetoothManager *BTManager;
BL=Bluetooth1->LastDiscoveredDevices;
for (int i=0;i<BL->Count;i++)
{
 Memo1->Lines->Add(BL->List[i]->DeviceName+" "+AnsiString(BL->List[i]->IsPaired));
 Memo1->Lines->Add(BL->List[i]->Address);
 if (BL->List[i]->DeviceName.SubString(1,5)=="MyBT")
 {
 
       n=i;
       BTDevice=BL->List[i];
          Bluetooth1->Pair(BTDevice);
           Memo1->Lines->Add("Connecton to "+ AnsiString(BTDevice->DeviceName));
               Application->ProcessMessages();
 }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.03.2017, 13:19
Ответы с готовыми решениями:

Как удалить сопряжение с отключенным устройством на ноуте?
Хочу передать файл через блютуз на планшет,раньше сопряжение было,потом на планшете удалила.А теперь я передать ничего не могу.Пишет вот...

Сопряжение Bluetooth gamepad с PC
Добрый день. Приобрел недавно на ebay Bluetooth gamepad. В комплект входили: геймпад, шнур usb (для подзарядки, при подключении к компу он...

Microsoft Designer Bluetooth: не происходит сопряжение с ноутбуком
Добрый день. Приобрел девайс Microsoft Designer к ноутбуку Acer Aspire V3-772, который на борту имеет bluetooth 4.0 После того как я...

7
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
04.03.2017, 13:47
Доброго!
Как я понял вы стараетесь применить стандартный пример...Не совсем понятно что Вы этим кодом собираетесь делать..но, сразу в глаза бросается Ваше сравнение
Цитата Сообщение от zheka1980 Посмотреть сообщение
if (BL->List[i]->DeviceName.SubString(1,5)=="MyBT")
Вы сравниваете 5 символов с 4 символами. Пишите тогда уж так
C++
1
if(BL->List[i]->DeviceName.Pos("MyBT") )...
1
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 46
04.03.2017, 15:11  [ТС]
Как что делать? Я хочу осуществить сопряжение с устройством, чтобы потом подключаться и слать данные.

Стандартный пример кстати тоже не осуществляет спаривание)))
1
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 448
05.03.2017, 19:05
Стандартный пример не работал из-за этого
C++
1
2
const String ServiceGUI = _D("{00001101-0000-1000-8000-00805F9B34FB}"); // работает
const String ServiceGUI = _D("{B62C4E8D-62CC-404B-BBBF-BF3E3BBB1378}"); // стандартный пример не работает
Добавлено через 8 минут
Лучше выполнять подключение в потоке, если устройство не в зоне видимости форма повисает секунд на 20.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(ScanDevices()) // если найдены устройства и вкл синезуб
      {
       if(PairedDevices())      //выводим на форму подключённые уст-ва
         {
          if(needConnect || Form1->CheckBoxAutoConnect->IsChecked)  //если нужно подключиться
            {
             if(ConnectDevices(Form1->ComboBoxPaired->ItemIndex))   // подключаемся к выбранному устройству
               {
                Synchronize(ConnectVisual);
                Synchronize(Config);
               }
            }
         }
      }
    ShowBtError(connectStatus);  //если какая то ощибка показываем её

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
bool __fastcall BtTheard::ScanDevices(void)
{
 bool answer = 0;
 try
    {
     FBluetoothManager = TBluetoothManager::Current;
     FAdapter = FBluetoothManager->CurrentAdapter;
     if(FBluetoothManager->ConnectionState == TBluetoothConnectionState::Connected)
       {
        FPairedDevices = FBluetoothManager->GetPairedDevices();
        connectStatus = NO_ERROR;
        answer = 1;
       }
    }
 catch(Exception &ex)
      {
       connectStatus = BT_POWER_OFF; // включите бт
      }
 return answer;
}
//---------------------------------------------------------------------------
bool __fastcall BtTheard::PairedDevices(void)
{
 if(FPairedDevices->Count > 0)
   {
    if(!timeOut.showDevice)
      {
       timeOut.showDevice = TIME_OUT_SHOW_DEVICE;
       Synchronize(PairedDevicesVisual);
      }
    return 1;
   }
 else connectStatus = BT_NO_PARED_DIVICE;
 return 0;
}
//---------------------------------------------------------------------------
void __fastcall BtTheard::PairedDevicesVisual(void)
{
 Form1->ComboBoxPaired->Clear();
 for(int i = 0; i < FPairedDevices->Count; i++)
    {
     Form1->ComboBoxPaired->Items->Add(FPairedDevices->Items[i]->DeviceName);
    }
 Form1->ComboBoxPaired->ItemIndex = 0;
}
//---------------------------------------------------------------------------
bool __fastcall BtTheard::ConnectDevices(uint8_t num)
{
 Disconnect();       //на всякий
 try
    {
     FAdapter = FBluetoothManager->CurrentAdapter;
     TBluetoothDevice *LDevice = FPairedDevices->Items[num];
     FSocket = LDevice->CreateClientSocket(StringToGUID(ServiceGUI), false);
     if(FSocket != NULL) FSocket->Connect();
    }
 catch(Exception &ex)
      {
       Disconnect();
       connectStatus = BT_SEARCH_DEVICE;
       return 0;
      }
 connect = 1;
 needConnect = 1;
 return 1;
}
//---------------------------------------------------------------------------
void __fastcall BtTheard::Disconnect(void)
{
 if(FSocket != NULL)
   {
    FSocket->Free();
    delete FSocket;
    FSocket = NULL;
   }
 connect = 0;
}
1
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
05.03.2017, 19:06
И ни кого не смутил код что выше, что там цикл не останавливается, что отсутствует подключение, а только проба перебора. Подозреваю и на совет сравнения ТС тоже забил.
0
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 46
06.03.2017, 08:42  [ТС]
Да подправил я эту проверку имени, проблема не в ней была.

const String ServiceGUI = _D("{00001101-0000-1000-8000-00805F9B34FB}"); // работает
А в каком месте это декларировано?
И еще - ващ код он для сопряженных устройств. Вы пробовали программно сопрягать несопряженные устройства?
0
11 / 11 / 2
Регистрация: 15.08.2011
Сообщений: 448
06.03.2017, 20:15
Нет программно сопрягать не пробовал.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <fmx.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.fmx"
TForm1 *Form1;
 
String Msg = "";
const String ServiceName = _D("Basic Text Server");
const String ServiceGUI = _D("{B62C4E8D-62CC-404B-BBBF-BF3E3BBB1378}");
C++
1
FSocket = LDevice->CreateClientSocket(StringToGUID(ServiceGUI), false);
Вот, если я правильно понял вас
0
1 / 1 / 0
Регистрация: 03.08.2014
Сообщений: 46
07.04.2017, 14:22  [ТС]
Что, советов больше не будет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.04.2017, 14:22
Помогаю со студенческими работами здесь

логика взаимодействия с bluetooth устройством
везде этот вопрос обходится стороной (может, невнимательно читаю). вот есть у меня блютус-гпс приемничек маленький. достаточно его...

Работа с устройством через bluetooth
Требуется сделать приложение на андройд чтобы оно соединялось с блютуз устройством и приняло от него данные. Идея создать блютуз передатчик...

Как разорвать соединение с Bluetooth low energy устройством на WP8.1
Здравствуйте! Заимел отладку SensorTag от TI. Написал приложение которое через GATT устанавливает соединение с устройством и считывает...

Связь сокетами с Android-устройством
Господа, сломал голову уже в поисках. Каким образом организовать передачу данных между клиентом на Андроиде и сервером на компьютере (оба...

C++ XE7 -Чтение файла с FTP устройством на Android и отображение его в TStringGrid
Добрый день! На FTP лежит файл report.txt. Его надо считать и отобразить в TStringGrid. Компилятор - Embarcadero C++ XE7 Платформа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru