Jump to content

JoEmbedded

Members
  • Content Count

    4
  • Joined

  • Last visited

Posts posted by JoEmbedded


  1. Hello Mike, 

    thanks for the link! I am using C++Builder/Delphi 10.4 Version 27.0.40680.420 (Community Edition) on Windows 11

     

    I wrote a complete Driver for Web-Bluetooth (Vanilla JS), which works excellent in Chrome/Edge on Win10/11 and Android and in a sandbox also on iOs. ( https://joembedded.github.io/ltx_ble_demo/ble_api ) 

    Since a BLE-Connection is bi-directional, it is possible to reduce the Client Side to the aboslute minimum and let the Embedded-Stack do all more difficult things. The advantages of JS are: NO APP to install,

    easy deployment and highportability. However: A nice PWA as UI is much more work than using RAD Studio 😉 

     

    In my case it seems, if a device is paired, everythink works fine with RAD Studio, but not if unpaired.

    But if as in my case one PC/Phone is used to set up many sensors, paring with each one does not make sense.

     

    De Docs to Rel10.x mention explicitely, that pairing is not necessary any more (Sorry, did not find this in English: https://docwiki.embarcadero.com/RADStudio/Sydney/de/Verwenden_von_Bluetooth_Low_Energy -> "BluetoothLE arbeitet nicht wie Classic Bluetooth, Sie müssen die Geräte nicht koppeln. " )

     

    Other question (as Alternative) : Would it be possible to Start Pairing from RAD?

     

    Thanks for Your Support!

    Best regards, Jo ( Joembedded.de )

     

     


  2. Hello Forum,

    I developed an IoT Sensor with BLE-Hardware (Nordic CPU, https://github.com/joembedded/Open-SDI12-Blue ), which works excellent and I can access it easily (and without pairing) via Web-Bluetooth API (HTML/JS) an Windows and Android.

     

    Now, while trying the same in RAD Studio (using WIndows 11), it seems ONLY paired devices are accepted for "DiscoverServices()". This makes (especially for BLE) no sense...

    I recognised a flag in the Windows Settings to "allow this for special APPs", like MS LE Explorer.

     

    I found for the "TBluetoothLEDevice*" entry a Flag "Paired"

     

    image.png.2e82e093ba8ca0c9a2529ff81baf4199.png

     

    Does anybody know, if there is a automatic solution? 

     

    Thanky for your help!

    Jo ( JoEmbedded.de )

     

    //This is from the RAD Studio BLE-Scanner-Demo (just C, but Data is same for Delphi)

    void __fastcall TTPDiscoverServices::Invoke(void){
    	TBluetoothLE *BLEh =  FForm->BluetoothLE1;
    	TBluetoothLEDeviceList *DLh = BLEh->DiscoveredDevices;
    	TBluetoothLEDevice* BTDev=  DLh->Items[FForm->ListBox1->ItemIndex];
    	bool bres;
    	if(!BTDev->Paired){
    		bres=false;
    		::MessageBox(NULL,L"Device not paired?",L"**Error**",MB_OK);
    	}else{
    		//original: if(!FForm->BluetoothLE1->DiscoveredDevices->Items[FForm->ListBox1->ItemIndex]->DiscoverServices())
    		bres = BTDev->DiscoverServices(); // Jo: Exception Win11 for unpaired Devices
    		::MessageBox(NULL,bres?L"Discover OK":L"Discover Error",L"**Discover**",MB_OK);
    	}
    	if(!bres) TThread::Synchronize(NULL, SynchronizeProc);
    }

     

     

     

     

     

     

×