Перейти к содержанию
Fire Monkey от А до Я

Android23

Пользователи
  • Постов

    3
  • Зарегистрирован

  • Посещение

Весь контент Android23

  1. Спасибо за информацию, но это все же не то. Нужно именно на c++ в Rad Studio. Желательно без сторонних компонентов. Меня полностью устраивает компонент BluetoothLE, с единственной проблемой, о которой я написал выше. Может все же кто то владеет информацией ? Я так понимаю что мне нужно ка то установить свойство Indicate, но как это сделать я не пойму.
  2. Что вы имеете ввиду ? Можно какую то конкретную ссылку на рекомендации ?
  3. Здравствуйте. Написано приложение для Android на основе примера HeartRateMonitor из примеров RAD Studio. Стандарный пример HeartRateMonitor не удается проверить - при компиляции выдает ошибку. Мой пример запускается и работает,находит нужное устройство и сервис.После того, как все подключено и найдено - я запускаю уведомления FBLEDevice->SetCharacteristicNotification( HRMEASUREMENTGattCharact1, true); Но в событие BluetoothLE1CharacteristicRead компоненты попадает только если в таймере крутится FBLEDevice->ReadCharacteristic(нужная характеристика). Если не запустить таймер, то в событие BluetoothLE1CharacteristicRead не попадает никак. В примере HeartRateMonitor от Rad Studio не используется ни таймер ни поток и судя по всему идет постоянный опрос устройства и вывод данных нужной характеристики. Вот часть кода, которая выполняется после поиска устройства void __fastcall TForm3::BluetoothLE1EndDiscoverDevices( TObject* const Sender, TBluetoothLEDeviceList* const ADeviceList) { Memo1->Lines->Add(IntToStr(ADeviceList->Count) + " device found:"); for (int i = 0; i < ADeviceList->Count; i++) { Memo1->Lines->Add(ADeviceList->Items[0]->DeviceName); Memo1->Lines->Add(""); } FBLEDevice = NULL; if (ADeviceList->Count > 0) { FBLEDevice = ADeviceList->First(); } if (FBLEDevice == NULL) { Memo1->Lines->Add("Device not found!"); } else { FServicesDiscovered = false; FBLEDevice->DiscoverServices(); if (FBLEDevice->Services->Count == 0) { Memo1->Lines->Add("No services found!"); } else { TBluetoothGattCharacteristicList* CharList = NULL; TBluetoothGattDescriptorList* Descriptor = NULL; for (int i = 0; i < FBLEDevice->Services->Count; i++) { CharList = FBLEDevice->Services->Items[i]->Characteristics; Memo1->Lines->Add( FBLEDevice->Services->Items[i]->UUIDName + " : " + GUIDToString(FBLEDevice->Services->Items[i]->UUID)); for (int j = 0; j < CharList->Count; j++) { Memo1->Lines->Add("--> " + CharList->Items[j]->UUIDName + " : " + GUIDToString(CharList->Items[j]->UUID)); Descriptor = CharList->Items[j]->Descriptors; for (int k = 0; k < Descriptor->Count; k++) { Memo1->Lines->Add( "--> " + Descriptor->Items[k]->UUIDName + " : " + GUIDToString(Descriptor->Items[k]->UUID)); } } } FHRGattService = NULL; HRMEASUREMENTGattCharact1 = NULL; HRMEASUREMENTGattCharact2 = NULL; FHRGattService = FBLEDevice->GetService(HRSERVICE); if (FHRGattService != NULL) { Memo1->Lines->Add("Service found!"); HRMEASUREMENTGattCharact1 = FHRGattService->GetCharacteristic( HRMEASUREMENT_CHARACTERISTIC1); HRMEASUREMENTGattCharact2 = FHRGattService->GetCharacteristic( HRMEASUREMENT_CHARACTERISTIC2); } else { Memo1->Lines->Add("Service not found"); } FBLEDevice->SetCharacteristicNotification( HRMEASUREMENTGattCharact1, true); } К то в теме , подскажите что не так ? Как сделать без таймера. Чтобы в событие BluetoothLE1CharacteristicRead попадало тогда, когда действительно придут данные с характеристикой от клиента. Если кто может разобраться, пример Rad Studio находится в папке \CPP\Multi-Device Samples\Device Sensors and Services\Bluetooth
×
×
  • Создать...