天道酬勤,学无止境

在 C# 中为 iBeacon adsmet 设置 BluetoothLEAdvertisement.Flags(setting the BluetoothLEAdvertisement.Flags in C# for iBeacon advertisemet)

问题

MS 提供了发送和接收低功耗蓝牙广告的示例。 我看到了这个对分解 iBeacon 数据包非常有用的答案。 还有一个将 BluetoothLEAdvertisement.ManufacturerData 设置为 ibeacon 标准的示例。

请问如何设置BluetoothLEAdvertisement的Flags? 例如将值设置为:02-01-06

谢谢


编辑1:这是代码:

using System;
using System.Management;
using System.Text.RegularExpressions;
using Windows.Devices.Bluetooth.Advertisement;
using System.Runtime.InteropServices.WindowsRuntime;

namespace BLE_iBeacon
{
    class IBeacon
    {
        static void Main()
        {
            Console.WriteLine("Advertising as iBeacon. Press Enter to exit");

            // Create and initialize a new publisher instance.
            BluetoothLEAdvertisementPublisher publisher = new BluetoothLEAdvertisementPublisher();

            // Add a manufacturer-specific section:
            var manufacturerData = new BluetoothLEManufacturerData();

            // Set the company ID for the manufacturer data.
            // 0x004C   Apple, Inc.
            manufacturerData.CompanyId = 0x004C;

            byte[] dataArray = new byte[] {
                // last 2 bytes of Apple's iBeacon
                0x02, 0x15,
                // UUID E4 C8 A4 FC F6 8B 47 0D 95 9F 29 38 2A F7 2C E7
                0xE4, 0xC8, 0xA4, 0xFC,
                0xF6, 0x8B, 0x47, 0x0D,
                0x95, 0x9F, 0x29, 0x38,
                0x2A, 0xF7, 0x2C, 0xE7,
                // Major
                0x00, 0x00,
                // Minor
                0x00, 0x01,
                // TX power
                0xC5
            };

            manufacturerData.Data = dataArray.AsBuffer();

            // Add the manufacturer data to the advertisement publisher:
            publisher.Advertisement.ManufacturerData.Add(manufacturerData);

            publisher.Advertisement.Flags = BluetoothLEAdvertisementFlags.GeneralDiscoverableMode;

            publisher.Start();
            Console.Read();
            publisher.Stop();
        }
    }
}

编辑2:

在 C# 代码中,如果我不设置标志,我的 Windows 笔记本电脑会宣传原始数据包,如:

04 3E 27 02 01 
02 01 0D 45 84 D3 68 21 1B 1A FF 4C 00 
02 15 E4 C8 A4 FC F6 8B 47 0D 95 9F 29 38 2A F7 2C E7 
00 00 00 01 C5 BA

我的目的是使用树莓派作为 BLE 接收器。 我在这里使用了 Radius Networks 的代码。 您可以在ibeacon_scan脚本中看到,他们通过以下方式检查广告的数据包以查看它是否是 iBeacon:

if [[ $packet =~ ^04\ 3E\ 2A\ 02\ 01\ .{26}\ 02\ 01\ .{14}\ 02\ 15 ]]; then

因此之前的原始数据包将无法识别,因为缺少标志部分。 我想知道我是否可以用标志来宣传数据包,例如:

04 3E 2A 02 01 
02 01 0D 45 84 D3 68 21 1B **02 01 1A** 1A FF 4C 00 
02 15 E4 C8 A4 FC F6 8B 47 0D 95 9F 29 38 2A F7 2C E7 
00 00 00 01 C5 BA

而不是更改 pi 中的扫描脚本。

回答1

Windows 上的 iBeacon

以下代码在 Windows 10 机器上发布 iBeacon:

// Create and initialize a new publisher instance.
BluetoothLEAdvertisementPublisher publisher = new BluetoothLEAdvertisementPublisher();

// Add a manufacturer-specific section:
var manufacturerData = new BluetoothLEManufacturerData();

// Set the company ID for the manufacturer data.
// 0x004C   Apple, Inc.
manufacturerData.CompanyId = 0x004c;

// Create the payload
var writer = new DataWriter();
byte[] dataArray = new byte[] {
    // last 2 bytes of Apple's iBeacon
    0x02, 0x15,
    // UUID e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0
    0xe2, 0xc5, 0x6d, 0xb5, 
    0xdf, 0xfb, 0x48, 0xd2, 
    0xb0, 0x60, 0xd0, 0xf5, 
    0xa7, 0x10, 0x96, 0xe0,
    // Major
    0x00, 0x00,
    // Minor
    0x00, 0x01,
    // TX power
    0xc5
};
writer.WriteBytes(dataArray);

manufacturerData.Data = writer.DetachBuffer();

// Add the manufacturer data to the advertisement publisher:
publisher.Advertisement.ManufacturerData.Add(manufacturerData);

publisher.Start();

邻近 UUID

对此进行测试时,我的 iOS 设备无法识别您提供的 Proximity UUID。 我猜这是因为你自己生成了它,所以应用程序不知道要寻找什么。 相反,我使用了这个答案中的接近度 UUID,它将 Windows 10 设备标识为 AirLocate iBeacon。

旗帜

Windows 10 目前不允许开发人员为蓝牙 LE 广告设置标志。 幸运的是,要将 Windows 设备识别为 iBeacon,您不需要这些标志!

回答2

理想情况下,您希望将标志字节设置为 0x1a,但其他值可能仍然有效。 要设置的重要标志是 General Discoverable (0x02)。

您可以在此处使用BluetoothLEAdvertisementFlags是位值的枚举。

我的 C# 非常生疏,但您可以尝试直接使用以下命令设置标志十六进制值: publisher.Advertisement.Flags = 0x1A;

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • setting the BluetoothLEAdvertisement.Flags in C# for iBeacon advertisemet
    MS provided samples to send and receive Bluetooth Low Energy advertisements. I saw this very helpful answer for breaking down the iBeacon packet. There's also an example for setting BluetoothLEAdvertisement.ManufacturerData as the ibeacon standards. May I ask how can I set the Flags of the BluetoothLEAdvertisement? For example set the value to: 02-01-06 Thanks Edit 1: Here's the code: using System; using System.Management; using System.Text.RegularExpressions; using Windows.Devices.Bluetooth.Advertisement; using System.Runtime.InteropServices.WindowsRuntime; namespace BLE_iBeacon { class
  • iBeacon:didRangeBeacons不再被呼叫,必须重置设备才能使其再次工作(iBeacon: didRangeBeacons stops getting called, must reset device for it to work again)
    问题 我使用的是自定义BeaconManager委托,因此信标范围不取决于视图控制器的生命周期。 一切正常,但偶尔(1-2天)信标范围将停止工作,并且didRangeBeacons将永远不会被调用。 解决此问题的唯一方法是让我重置iPhone,一旦执行此操作,它就可以完美运行。 下面是我正在使用的代码。 基本流程是,当我的ViewController调用ViewDidLoad时,它会向AppDelegate发送通知,告诉它开始对信标进行测距,因此我从不告诉它停止,因为无论用户在何处导航,我都希望它继续对信标进行测距在应用程序中。 我想知道我的代码是否引起了这个问题,或者这仅仅是蓝牙的一个错误。 谢谢你的帮助! 信标管理器 #import "BeaconManager.h" #import "AppDelegate.h" @interface BeaconManager()<CLLocationManagerDelegate> @property (nonatomic, strong) CLLocationManager *locationManager; @property (nonatomic, strong) CLBeaconRegion *beaconRegion; @end @implementation BeaconManager + (id)sharedManager
  • 如何在 C# 中为大型 HTTP 请求设置 HttpWebRequest.Timeout(How to set HttpWebRequest.Timeout for a large HTTP request in C#)
    问题 我不知道如何处理 HttpWebRequest.Timeout。 之前,我曾经为 Socket 对象设置超时,它很简单:超时设置发送或接收数据块的最长时间。 但是,似乎 HttpWebRequest.Timeout 设置了整个 HTTP 请求的超时时间。 如果请求很大(例如,我使用 HTTP PUT 上传大文件),则可能需要数小时。 这导致我设置: ... request.Timeout = System.Threading.Timeout.Infinite; Stream requestStream = request.GetRequestStream(); for (something) { ... requestStream.Write(b, 0, b.Length); } 但是,这是否意味着如果与服务器的网络连接卡住了,我最终会遇到 requestStream.Write 永远不会抛出“操作超时”异常? 所以超时的概念在这种情况下不起作用? 理想情况下,我希望 .Timeout 设置只影响单个 requestStream.Write。 我可以根据需要拥有尽可能多的 Write(),前提是每个 Write() 的值都不会超过 .Timeout 值。 或者我需要实现我自己的基于 Socket 的机制来实现吗? 另外,在设置断点时,我发现 requestStream
  • 如何调试 iBeacons 和 Passbook(How to debug iBeacons and Passbook)
    问题 我有一个通行证(所有工作都在处理,推送,注册,拉动刷新,位置等),我已经在上面创建了一个信标阵列。 它有一个字典,其中包含 Estimote iBeacon 的 UUID、消息、主要和次要。 "beacons": [ { "proximityUUID":"B9407F30-F5F8-466E-AFF9-25556B57FE6D", "major":5723, "minor":49600, "relevantText":"Welcome to goldstar" } ], 我可以在 Estimote 应用程序中看到 iBeacon,但在我的 Passbook 的锁定屏幕上没有收到任何消息。 这有什么窍门吗? 消息出现的时间是否有一些限制? 无论是安装通行证还是在设备的 Xcode 控制台中,我都没有收到任何错误。 我曾经在https://essentialtechnologies.ca/coffee_demo/的passkit生成器来创建一个iBeacon显示演示通,并且它正在与我的iBeacon显示。 我将该通行证中的代码复制/粘贴到我的通行证中,但不起作用。 如何调试 iBeacon 和 Passbook? 回答1 为了在锁定屏幕上显示 iBeacon 消息,需要提供几项内容。 蓝牙必须开启必须开启定位服务(设置 -> 隐私 -> 定位服务) Passbook
  • iOS7设备可以充当iBeacon吗?(Can an iOS7 device act as an iBeacon?)
    问题 iOS7设备可以充当iBeacon并确定其他iOS7设备何时进入其范围吗? 这些其他iOS7设备是否需要打开蓝牙? 回答1 具有BluetoothLE的iOS设备可以充当iBeacon。 在https://developer.apple.com/downloads/index.action?name=WWDC%202013#中查看AirLocate示例代码。 成为iBeacon不会提供有关范围内设备的反馈,因此您必须自己实现。 也就是说,您必须拥有检测iBeacon的设备,然后告诉iBeacon他们已经通过其他方式看到了它。 回答2 是的,iOS设备可以从iPhone 4s及更高版本充当信标(需要蓝牙4.0)。 您可以通过将字典从[CLBeaconRegion externalDataWithMeasuredPower:]传递到[CBPeripheralManager startAdvertising:]来发布信标。 发布信标不会在设备上给您任何反馈,您必须扫描其他人来发布信标。 至于后台,您不能在后台发布信标,为此您的应用程序需要在前台运行。 可以在后台扫描。 回答3 是的,iOS7设备可以充当iBeacon。 如果您在所有电话上都安装了应用程序,则可以完全按照建议的方式进行操作,并且还可以编写Web服务。 这将允许电话A在附近时看到电话B和C:
  • iBeacons的三角剖分示例(Triangulate example for iBeacons)
    问题 我正在研究使用多个iBeacon进行“粗略”室内位置定位的可能性。 该应用程序是一种“博物馆”设置,并且能够形成一个网格,该网格具有用于放置不同对象的位置的网格,而不是形成单个信标的网格(尽管这可能也不是不可能的)。 是否有使用多个信标进行三角定位到某种位置的示例,经验或某种逻辑来帮助我自己编写呢? 回答1 我一直在做一些实验,以使用三个信标获得精确的位置。 三边测量结果 不幸的是,结果在质量方面令人非常失望。 主要有两个问题: 在不受控制的环境中,您会发现金属和其他会影响信号的物体,信标的接收信号强度经常变化,因此似乎无法获得5米以下的误差范围。 根据用户处理接收器设备的方式,读数也会发生很大变化。 如果用户将他/她的手放在蓝牙天线上,则该算法将以低信号作为输入,因此信标将被认为距离设备很远。 请参阅此图像以查看蓝牙天线的精确位置。 可能的解决方案 在与一位苹果的工程师交谈后,我积极劝阻我不要这样下去,我现在更倾向于使用的选择是蛮力。 尝试每隔X米设置一个信标(X是系统中允许的最大误差),因此我们可以通过计算网格上哪个信标最接近该设备并假设该信标在该信标网格上跟踪给定设备的位置。设备在同一位置。 三边测量算法 但是,出于完整性考虑,我在下面介绍了三边测量算法的核心功能。 它基于本文的第3段(“已知三个距离”)。 - (CGPoint
  • iBeacon在后台-用例(iBeacon in the background - Use cases)
    问题 有关iBeacon及其背景功能的SO问题越来越多,在这一点上有些困惑。 我一直在测试AirLocate项目。 iBeacon具有2种“功能”:区域监视和测距。 区域监视仅限于20个区域,并且可以在(侦听设备的)后台运行,并且具有不同的委托来通知侦听应用程序(和用户)该区域的进入/退出-即使应用程序在后台或电话被锁定。 测距仅在前景中起作用,但是将返回(向监听设备发送)所有找到的iBeacon及其属性(UUID等)的数组(无限制?)。 此外,监视20个区域是设备限制。 如果用户使用地理围栏提醒,则其他使用区域监视的应用程序; 这将降低该数字。 所以我们是说我无法部署一个购物中心范围内(超过100个商店)的应用程序,而该应用程序在后台或手机被锁定时,该应用程序使用商店iBeacons向用户发送“特定于商店”的通知吗? 我收集到广告设备(信标)也必须在前台,以对收听设备可以“进入”的区域做广告。 我们是说,如果商店的拥有者拥有iOS设备; 例如,我不能要求他至少在早期使用他的iPhone作为广告设备(信标)来节省他的钱-因为该应用程序可能不会一直处于前台? 因此,在iBeacon + MLB的情况下,应用使用单个UUID(或<20 UUID)来确定进入门,然后将要求用户解锁手机/将应用带到前台使用它(找到座位等)? 然后,我可以将iBeacon称为单个位置/事件(商店,公园等)功能
  • 带有BLE加密狗的RaspberryPi是否可以检测iBeacons?(Can RaspberryPi with BLE Dongle detect iBeacons?)
    问题 我从Radius Networks购买了一个开发人员套件,其中包括ioGear GBU521 BLE 4.0 dongle和Raspberry Pi 。 我还购买了他们的RadBeacon iBeacons 。 他们俩都像广告一样工作,但是我对自己得到的东西感到惊讶。 我以为RaspPi可以检测到iBeacons 。 而是将工具包设置为创建iBeacon 。 我的用例是检测forklift何时进入特定房间,以便将工作发送给他们。 我的想法是在叉车上放一个iBeacon,然后放一个RaspPi来搜索iBeacon。 并且当检测到iBeacon(叉车)时,您可以得出结论,它就在附近。 我将RaspPi连接到LAN ,并使其通过REST or similar传达信息。 我知道我可以放入合适的Android or Apple device并以这种方式完成操作,但是我不明白为什么该加密狗无法检测到这些iBeacons并告诉我它们的UUID's是什么? 我想念什么? 回答1 是的! 您可以使用Raspberry Pi扫描iBeacons。 我们在下面组合了一个脚本来执行此操作,您也可以按照以下步骤自己进行操作: 启动进行蓝牙LE扫描的后台进程: sudo hcitool lescan --duplicates & 使用--duplicates设置
  • 树莓 iBeacon 未检测到(Raspberry iBeacon not detecting)
    问题 我最近试图在树莓派上的 BLE 加密狗(剑桥硅无线电)上配置 ibeacon。 参考:http://developer.radiusnetworks.com/2013/10/09/how-to-make-an-ibeacon-out-of-a-raspberry-pi.html 我收到这条消息: HCI Command: ogf 0x08, ocf 0x0008, plen 44 1E 02 01 1A 1A FF 4C 00 02 15 E2 C5 6D B5 DF FB 48 D2 B0 60 D0 F5 A7 10 96 E0 00 00 00 00 C9 00 00 00 00 00 00 00 00 00 00 00 00 00 > HCI Event: 0x0e plen 4 01 08 20 12 该应用程序甚至找不到信标。 虽然我可以看到加密狗在这个命令上闪烁着一些光: sudo hciconfig hci0 leadv 0 但什么都没有被检测到。 因此,从应用商店中打开一个名为 LIGHTBLUE 的应用,它会检测到具有不同 UUID 的蓝牙。 我已经尝试了很多次了。 并已完成教程中的所有步骤。 但是这个蓝牙设备不会出现。 另外,我很想知道 0x08 和 0x0008 是什么,如果我想投射不同的 UUID,我该怎么办? 但那是后半部分... 现在,THE
  • iBeacon 区域监控:重启手机时不恢复,除非我设置了位置背景模式?(iBeacon Region monitoring: Not resumed when rebooting the phone EXCEPT if I set location background mode?)
    问题 我一整天都在测试我的应用程序对信标的监控。 一般来说它工作正常: 前台工作中的通知后台工作通知 但 重新启动后它不起作用,直到我启动任何使用 BluetoothLE 的应用程序 在我这样做之后,它也适用于我的应用程序! 但是,如果我在 plist 中设置 UIBackgroundMode 位置,即使在重新启动后,我的应用程序也会很好地收到区域通知。 所以……是这样吗? 或者这里有什么交易? :D 这是在 ios 7.1.1 下顺便说一句 代码非常少:https://github.com/RadiusNetworks/ibeacon-background-demo/blob/master/BackgroundDemo/BDAppDelegate.m 回答1 我做了两件事: 首先,我减少了应用程序启动的时间 >> 主要是在应用程序移动到前台时才做一些事情。 那是第 1 步,但对于真正的应用程序,我单独处理这只是解决方案的一半 然后我发现有问题的应用程序试图在设备被锁定时在后台访问钥匙串,我也将其移到了稍后的位置,并且 BING 成功了!
  • 使用 ibeacons 时确定确切位置的工具(Tools to determine exact location when using ibeacons)
    问题 我们正在与一位零售客户合作,他想知道在整个商店中使用多个 iBeacon 是否有助于跟踪客户在商店内时的确切位置(当然,当他们安装了客户的应用程序时)。 我想知道有哪些软件工具可以用于此目的? 很明显,在基本层面上,可以根据设备与多个(至少 2 个)iBeacon 的相对距离来确定设备的位置。 如果是这样,难道没有工具可以帮助解决这个问题吗? 谢谢 回答1 显然,由于 RSSI 值(蓝牙信号)的不一致,这不太可能很好地工作。 但是,这是您可能想要采取的方向(改编自大量 stackoverflow 研究): 过滤RSSI 每当信标被测距时,我都会使用滚动过滤器,使用 0.1 的 kFilteringFactor: rollingRssi = (beacon.rssi * kFilteringFactor) + (rollingRssi * (1.0 - kFilteringFactor)); 我用它来获得滚动精度值(以米为单位)。 (感谢大卫!) - (double)calculateAccuracyWithRSSI:(double)rssi { //formula adapted from David Young's Radius Networks Android iBeacon Code if (rssi == 0) { return -1.0; // if we
  • iBeacon:获得主要和次要-仅查找uuid(iBeacon: get major and minor - only looking for uuid)
    问题 我正在使用空中定位示例,仅通过uuid监视iBeacons。 当我进入输入的区域事件时,如果我仅查找uuid,则似乎无法从触发该事件的信标/区域中获取主要和次要信息(如果我正在监视具有指定的专业和辅修专业)-有人知道这样做的方法吗/我遗漏了什么? 我真的不想开始测距-似乎我不需要。 (用例是说,许多商店都带有具有相同uuid的信标,然后发出OS通知,其中包含有关该商店的相关信息(通过查询主要和次要信息来获得)) 这基本上是我的工作: CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:@"blah"]; region.notifyOnEntry = YES; region.notifyOnExit = YES; region.notifyEntryStateOnDisplay = YES; [self.locationManager startMonitoringForRegion:region]; 然后在应用程序委托中: - (void) locationManager:(CLocationManager*)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion*)region
  • 如何在excel中为标题或第一行设置颜色[重复](How to set color for header or first row in excel [duplicate])
    问题 这个问题在这里已经有了答案: c# excel 如何更改特定行的颜色2 个回答 7年前关闭。 我正在阅读excel表以及导出读取的excel。 我想将填充(背景颜色)颜色设置为导出的 excel 表的标题行。我使用的是 C# +asp.net。 回答1 像这样的事情可能会有所帮助。 更改其他参数以获得所需的结果。 Microsoft.Office.Tools.Excel.Worksheet.Range["A1","B1"].Interior.Color = Excel.XlRgbColor.rgbDarkBlue; “A”和“B”代表您的范围。 希望能帮助到你。
  • 工厂模式:不从实现文件中调用 iBeacon 委托(Factory pattern : iBeacon Delegates are not called from implemention file)
    问题 我在信标扫描模块中引入了“工厂模式”。 我提到了 http://crosbymichael.com/objective-c-design-patterns-factory.html 在我的工厂类中,2 种信标模式在接口类“ PCGoogleBeacon.h ”和“ PCAppleBeacon.h ”之间切换。 //工厂头文件 typedef enum beaconMode { iBeacon, Eddystone } BeaconMode; @interface PCBeaconFinder : NSObject +(id) searchForBeaconMode:(BeaconMode) beaconMode; @end //工厂的实现 +(id) searchForBeaconMode:(BeaconMode) beaconMode { switch (beaconMode ) { case iBeacon: return [PCAppleBeacon new]; break; case Eddystone: return [PCGoogleBeacon new]; break; default: NSLog(@"UNKOWN BEACON MODE"); } } 在我的接口类实现文件中。 //Header file @protocol PCGetBeacon
  • 在 c# 中为 DataGridViewButtonColumn 设置图像(Set image for DataGridViewButtonColumn in c#)
    问题 我想在 c#.net 应用程序中为 DataGridViewButtonColumn 设置图像。我通过单元格绘制事件尝试了这个。为 DataGridViewButtonColumn 设置图像的任何其他方式。 请帮忙 回答1 你试过这个吗? DataGridView 图像按钮单元格 回答2 public partial class DataGridViewImageButtonColumn : DataGridViewButtonColumn { public DataGridViewImageButtonColumn() : base() { base.CellTemplate = new DataGridViewImageButtonCell(); } public override object Clone() { var col = (DataGridViewImageButtonColumn)base.Clone(); col.Image = Image; return col; } [DefaultValue(null)] [Category("Appearance")] [Description("DataGridViewImageButtonColumn_ImageDescr")] public Image Image { get; set; } public
  • 如何在 C# selenium 中为 IE 驱动程序设置相对路径(How to set a relative path in C# selenium for IE driver)
    问题 在下面的代码中,IEDriverServer.exe 在我的本地机器上可用。 我想在不同的机器上运行这段代码。 如何在 C# 中获取 IEDriverServer.exe 时设置相对路径。 InternetExplorerOptions options = new InternetExplorerOptions() { ForceCreateProcessApi = true, BrowserCommandLineArguments = "-private", IntroduceInstabilityByIgnoringProtectedModeSettings = true, IgnoreZoomLevel = true }; IWebDriver driver = new InternetExplorerDriver(Path.GetFullPath("C:\\Users\\kamal\\Documents\\Sample\\Sample\\bin\\Debug"), options); driver.Navigate().GoToUrl("https://www.google.com"); driver.Quit(); 回答1 如果文件的路径是 C:\Users\kamal\Documents\Sample\Sample\bin\Debug\IEDriverServer
  • iOS iBeacon / 蓝牙连接,当应用程序失效时(iOS iBeacon / Bluetooth connectivity when app is dead and gone)
    问题 我需要的: 一种可预测、可靠且可靠的方式,可在应用程序didExitRegion且设备已插入或在附近时启动 iBeacon 委托方法,例如didDetermineState 、 didRangeBeacons 、 didEnterRegion或didExitRegion 。 目前的情况 我正在为父母制作一个应用程序,供他们的孩子使用,帮助他们在重要时刻关闭手机。 该应用程序在 Objective-C 中,即使在应用程序生命周期结束后,它也需要保持与蓝牙设备的持久连接。 我已经尝试了很长时间来让它发挥作用,我得到了很多 SO 海报的帮助,目前我知道我必须在我的设备中使用 iBeacon 才能从终止状态启动(这是我使用它的唯一原因,我如果有另一种方式从终止启动应用程序,我会很乐意转储它)。 为了澄清,我需要在同一个设备(我已经构建)iBeacon 和可靠的 BT 连接中的两件事。 我需要此设备连接配对,因为这是从 BT 设备发送/接收命令的唯一方法。 我发现在后台触发的didRange或didEnter委托方法充其量是不可靠的。 它们并不总是立即启动,它们只启动几次,然后整个过程就会消失(我现在知道这个 10 秒窗口是终止应用程序的预期行为)。 我什至整整一整天都在不断地插入/拔出它,以寻找任何迹象表明该应用程序已经恢复正常,但没有任何反应...... 当应用程序打开时,一切正常
  • 如何在Datagridview C#中为特定列设置列标题文本(How to set column header text for specific column in Datagridview C#)
    问题 如何在Datagridview C#中为特定列设置列标题文本 回答1 在Column对象中有HeaderText属性,您可以在初始化网格后找到该列并设置其HeaderText,也可以通过DataGrid设计器在Windows窗体设计器中进行设置。 public Form1() { InitializeComponent(); grid.Columns[0].HeaderText = "First Column"; //.............. } 更多详细信息,请参见MSDN。 有关DataGrid的更多详细信息在这里。 回答2 有关信息,如果您要绑定到一个类,则可以通过DisplayNameAttribute以您的类型执行此操作: [DisplayName("Access key")] public string AccessKey { get {...} set {...} } 现在,自动生成的列上的标题文本将为“访问键”。 回答3 grid.Columns[0].HeaderText 或者 grid.Columns["columnname"].HeaderText 回答4 Dg_View.Columns.Add("userid","User Id"); Dg_View.Columns[0].Width = 100; Dg_View.Columns.Add(
  • 如何将数据发送到变成iBeacon的iphone?(How to send data to an iphone which is turned into a iBeacon?)
    问题 如何将数据发送到充当iBeacon的iPhone? 我正在寻找以下流程: 搜索附近的iBeacons 连接到一些iBeacon 在设备之间交换数据 有谁知道如何将不同的蓝牙功能放在一起使之成为可能? 提前 回答1 标准iBeacon是仅传输设备,移动设备可以看到它们,但实际上并不“连接”到它们或交换数据。 但是,您仍然可以按照自己的要求进行操作,无论您是否在所有设备上都有应用程序以及网络服务都可以进行数据传输。 这将允许设备A和B在附近时互相检测并交换数据。 就是这样: 您在设备A和B上的应用程序在充当iBeacon(通过应用程序特定的标识符和电话特定的标识符进行广告的存在)与范围内的iBeacon信号(包括应用程序特定的标识符)之间进行切换。 在其测距周期内,设备A上的应用程序将检测到来自设备B的iBeacon传输,其中包括您的应用程序标识符和设备B的设备标识符。 然后,应用程序A使用源“ A”和目标“ B”以及要传输的任何数据(例如“设备A向设备B打个招呼”)对Web服务进行“写入”调用。 该应用程序还将定期向Web服务发出“读取”调用。 在此示例中,设备B将读取发往B的任何信息,并且Web服务将返回一条记录,表明设备A已向其发送了一条消息,其中包含数据“设备A向设备B打个招呼”。 由于两部手机也都运行相同的过程,因此这种通信可以双向发生。 回答2
  • IBeacon 区域监控无法跨设备一致地工作(IBeacon region monitoring not work consistently across devices)
    问题 在使用简单的应用程序测试信标区域监控时,根据设备(不是设备型号,特定设备),我似乎得到了非常不一致的结果。 问题是在requestStateForRegion之后我没有收到该区域的CLRegionStateInside状态,并且在这些设备上根本没有调用didEnterRegion 。 startRangingBeaconsinRegion : 工作正常,但为了节省功率和处理,建议仅在didEnterRegion : 方法被调用时开始测距。 我在 6 台设备上对此进行了测试,它在其中一半(iPhone 5 的)上运行,但在一台 iPhone 5、一台5S和一台4S上不起作用。 我使用的信标是kontakt.io信标。 这是设置区域监控的代码 self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.delegate = self; NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:BEACON_UUID]; CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:@"regionIdentifier"]