Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在windows中侦听和接受BLE连接请求_C#_Windows_Bluetooth Lowenergy_Gatt - Fatal编程技术网

C# 在windows中侦听和接受BLE连接请求

C# 在windows中侦听和接受BLE连接请求,c#,windows,bluetooth-lowenergy,gatt,C#,Windows,Bluetooth Lowenergy,Gatt,我一直在尝试使用蓝牙低能耗将iOS设备连接到windows,我发现windows API非常容易实现。。不清楚 windows作为外围设备,iOS设备作为中央设备 我认为我在iOS设备上的Swift代码很好,它与BLE设备(比如我的空调设备)配合使用。我在iOS端所做的是: -正在启动可删除广告的扫描 -收到广告后,如果制造商数据是我正在寻找的,我会尝试连接到外围设备 在窗口方面,我: -准备我的广告包 -发表 目前,我在iOS上收到软件包,我启动连接尝试。。。什么也没有!(甚至没有调用didF

我一直在尝试使用蓝牙低能耗将iOS设备连接到windows,我发现windows API非常容易实现。。不清楚

windows作为外围设备,iOS设备作为中央设备

我认为我在iOS设备上的Swift代码很好,它与BLE设备(比如我的空调设备)配合使用。我在iOS端所做的是: -正在启动可删除广告的扫描 -收到广告后,如果制造商数据是我正在寻找的,我会尝试连接到外围设备

在窗口方面,我: -准备我的广告包 -发表

目前,我在iOS上收到软件包,我启动连接尝试。。。什么也没有!(甚至没有调用didFailToConnect)

我想我在windows方面遗漏了一些东西,我想可能有某种连接请求侦听器?我需要说“是,我接受此连接!”或“否,我不接受!”并且由于我的代码中不存在此项,因此连接请求从未得到响应?我在棒球场吗

在Google、StackOverflow和WindowsAping上,我找不到如何做到这一点,如果我真的需要这样做,或者我正在尝试的东西甚至可以这样做

不用说,任何帮助都将不胜感激。这是我在windows端的C#代码,出于测试目的,它是一个简单的控制台应用程序,然后停留在一个丑陋的循环中,直到我也需要它时才终止:

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");
        }
    }
}

我期待着你的回复,希望你能帮助我走出这一困境,非常感谢

也许您的
while(true)
循环正在阻塞线程,而不是使用
Console.ReadKey()
停止执行,直到按下一个键。很好,我已经用你的建议替换了我的丑陋循环,但遗憾的是,它没有改变任何东西,即使它改变了,我仍然无法在windows端知道已经建立了连接请求/连接。好的,我已经有一段时间没有为可编程设备编程了,但是如果我没有记错的话,你没有建立到一个可移动设备的连接,你从centra订阅了字符的更改,所以出版商不知道是否有人连接过,它只是广播字符的更改。我知道这不完全是C#,但这些可以帮助你理解ble基础设施和角色:看看“蓝牙低能耗”教程,它们真的很棒。检查这个示例,我认为你需要正确设置UUID/主/次数据,以便iOS端正确接收它@Gusman,谢谢你的建议,我试图在iOS端发现可用的服务,iOS告诉我必须连接到外围设备才能这样做。当我过去使用ble气候阅读器(BeeWi SmartClim)时,连接是必要的。因此,我确实觉得我缺少了一些与Windows端的连接有关的东西,但我会花时间阅读您的建议,谢谢。也许您的
while(true)
循环正在阻塞线程,而不是使用
Console.ReadKey()
停止执行,直到按下一个键。很好,我已经用你的建议替换了我的丑陋循环,但遗憾的是,它没有改变任何东西,即使它改变了,我仍然无法在windows端知道已经建立了连接请求/连接。好的,我已经有一段时间没有为可编程设备编程了,但是如果我没有记错的话,你没有建立到一个可移动设备的连接,你从centra订阅了字符的更改,所以出版商不知道是否有人连接过,它只是广播字符的更改。我知道这不完全是C#,但这些可以帮助你理解ble基础设施和角色:看看“蓝牙低能耗”教程,它们真的很棒。检查这个示例,我认为你需要正确设置UUID/主/次数据,以便iOS端正确接收它@Gusman,谢谢你的建议,我试图在iOS端发现可用的服务,iOS告诉我必须连接到外围设备才能这样做。当我过去使用ble气候阅读器(BeeWi SmartClim)时,连接是必要的。因此,我确实觉得我遗漏了一些与Windows端连接有关的内容,但我会花时间阅读您的建议,谢谢。