Listening to and accepting a BLE Connect request i

2019-06-06 06:58发布

I've been trying to connect an iOS device to windows using Bluetooth low energy, and I find the windows BLE API very.. unclear.

The windows is acting as the peripheral and the iOS device the Central

I think that my Swift code on the iOS device is fine, it works with BLE devices (like a climate device I have) what I'm doing on the iOS side is: - Launching the scan for BLE Advertisements - Upon receiving an Advertisements, if the ManufacturerData is what I'm looking for, I try to connect to the peripheral.

On the windows side, I: - prepare my Advert package - publish it

For the moment, I receive the package on iOS, I launch the connection attempt... and nothing! (didFailToConnect isn't even called)

I think I'm missing something on the windows side, I imagine there's some kind of connection request listener? that I need to say "yes I accept this connection!" Or "no, I do not!" And as this does not exist in my code, the connection request is never answered? Am I in the ball park?

On googling, stackoverflowing and WindowsAPIing I can't find how to do this, if it's this that I do indeed need to do, or if what I'm trying can even be done in this manner!

It goes without saying that any help would be much appreciated. Here is my C# code on the windows side, for testing purposes, it's a simple console application that then stays in an ugly loop as to not terminate till I want it too:

namespace BluetoothClient
{
    class Program
    {
        static void Main(string[] args)
        {
            BluetoothLEAdvertisementPublisher publisher = new BluetoothLEAdvertisementPublisher();

            var manufacturerData = new BluetoothLEManufacturerData();
            manufacturerData.CompanyId = 0xFFFA;

            var writer = new DataWriter();
            writer.WriteString("Testme");

            manufacturerData.Data = writer.DetachBuffer();

            publisher.Advertisement.ManufacturerData.Add(manufacturerData);

            publisher.Start();

            publisher.StatusChanged += Publisher_StatusChanged;

            Console.Write("Started\n");

            while (true) { }
        }

        private static void Publisher_StatusChanged(BluetoothLEAdvertisementPublisher sender, BluetoothLEAdvertisementPublisherStatusChangedEventArgs args)
        {
            Console.Write("Status: "+args.Status+"\n");
        }
    }
}

I look forward to your kind replies and hope you can help me crawl out of this rut, much appreciated and thanks!

0条回答
登录 后发表回答