我怎样才能估算出BLE模块的功耗?
我正在为带有BLE模块的设备编写一个iOS应用程序,该设备在连接时会始终如一地宣传几个字节.我们正在尝试估算BLE模块的功耗,以便我们可以估算设备的电池寿命.我已经搜寻了,Google正在寻找适当的估计方法,但是我空了.是否有一种方法可以采用发送的字节数,乘以数据发送并提出功率消耗的粗略近似的频率? 解决方案 典型的BLE SOC(即多合一应用 +无线电芯片)通常会消耗: 在深度睡眠中几百个NA, 2到10 µA,当时RTC跟踪时间(在广告或连接时需要在广播事件之间) , 10至30 mA时CPU或无线电运行(计算数据,TX,RX). RX和TX功耗大致相同. BLE外周的寿命基本上由3个主要状态组成: 闲置(不广告,未连接).大多数人会告诉您的设备已关闭.除非它具有物理功率开关,否 广告(在连接发生之前).每50毫秒每50毫秒大约需要5毫秒的外围设备运行.这是您的设备实际使用大多数电源的时候,因为广告需要经常发送许多数据包.平均功耗在1-10 MA范围
8 2023-06-03
编程技术问答社区
IOS上背景任务的React-native原生模块的可能性
我的问题:我有一个与医疗BLE设备通信的应用程序.我的一切都在起作用,但我的问题是,当iOS用户将应用程序放置在后台时,我会停止/处理通过蓝牙发送的消息. Android似乎不断收到这些消息,但是从我发现的iOS上,JS桥被拆除,并且没有解决此问题的解决方案.手机必须继续处理从BLE设备发送的数据. 我的想法是这个,这是我对所有人的问题. 是否可以为iOS创建一个本机模块,该模块将始终运行并进行以下操作:获取通知时获取BLE数据.将这些数据存储到文件系统中,并在应用程序在后台时将其推向网络服务?当应用程序返回前景时,能够能够读取FS创建的文件并显示有关它们的一些数据也是很棒的.这是可能的吗? 您知道另一种可以起作用的选项吗? 任何帮助都非常感谢. 解决方案 好的,当我沿着本地路径和iOS蓝牙schtuff上阅读时,我发现了本文" nofollow noreferrer"> core bluetooth节目指南,特别是提到了一个Plist设置. 通过添加 u
IOS蓝牙低能量连接间隔
我正在为蓝牙低能设备构建一个应用程序.我试图弄清楚如何在iPhone侧设置连接间隔. 我在外围设备上定义了最小和最大连接间隔.但是,我希望iPhone应用使用最长的连接间隔.有什么方法可以在应用程序中设置连接间隔或至少一种影响它的方法? 谢谢 解决方案 有两种可能性: 案例1 如果您的应用程序是主人,则无法从应用程序更改连接间隔.没有API.您的外围应要求更改连接间隔.有关可接受的连接间隔值,请选中此文档( .pdf )在3.6连接参数. 案例2 如果您的应用程序是外围设备,则可以在CbperipheralManager中使用 setDesiredConnectionLatency 方法.更多详细信息: 其他解决方案 您可以从外围发送连接参数更新请求,最小连接间隔更接近高位.不确定您是否可以在iPhone上影响它.
6 2023-06-02
编程技术问答社区
Cordova: 在后台模式下扫描iBeacons/BLE(iOS和Android)。
我已经实施了Cordova/ionic应用程序(用于iOS/Android的混合动力),该应用程序在后台模式下扫描IBEACONS并通知用户,如果找到了信标.我正在使用以下插件: iBeacon扫描: cordova-plugin-ibeacon Petermetz 背景模式: Cordova-Plugin-Background-Mode by Katzer 通知: cordova-plugin-local notifications by katzer 到目前为止(在iOS和Android上)都很好.这里的问题是,苹果会拒绝我的应用程序表格发布到App Store(请参阅 https://github.com/katzer/cordova-plugin-background-mode/issues/77 ). 另一个问题是,似乎背景信标扫描正在消耗大量电池容量.使用此背景插件,完整的应用程序在后台运行,而不仅仅是特定功能/服务. 你们中的任何人是否知道是否有用于在
0 2023-05-25
编程技术问答社区
如何编程阅读和打开Android应用程序的蓝牙位置权限设置
我正在Android Studio设计一个应用程序. 它扫描BLE(Bluettoth低能)设备. 一旦尝试扫描,我就会收到以下弹出消息: 所需位置权限 从Android M(6.0)开始,系统需要批准应用程序 为了扫描BLE设备的位置访问. 没有确定按钮或其他任何东西. 是否有一种方法可以在扫描之前添加(kotlin)代码 (a)检查该应用程序的用户是否已经授予蓝牙位置权限, (b)如果尚未授予,请编程启动/打开用户的设置页面 预先感谢 Garrett 添加了额外的信息/问题...... 谢谢 user18309290 您的回复. 我浏览了文档,以及我发现的其他示例,我将以下代码拼凑在一起,这些代码可行,也许不起作用. 行为: 第一次启动应用程序时,Android OS提示用户允许访问设备的位置: Allow YourApp to access this device's location? Wh
2 2023-05-25
编程技术问答社区
蓝牙低能耗-重复更新一个特征值
我想写下蓝牙低能的值在短时间内反复反复(可能是用例,想象一下鼠标). 128位UUID的特征是 20字节长.因此,可以写入单个低能交易. 写入以50 Hz的速度出现,每20ms . 因此,写了20 * 50 * 8 = 8 kbit/s . 我正在使用命令/写入模式的写入来编写特征.因此,在属性层上没有任何确认. 没有连接其他其他蓝牙或蓝牙低能设备. WLAN什么都没有执行.在测试期间没有读取或编写其他特征. i通过发送包含iPhone 4s的序列编号的数据包来测试程序.序列号由每个发送的数据包递增. 在接收方,可编程的开发委员会,其中包含 csr1000 使用BLE芯片,用于接收数据包并将接收到的序列编号打印到串行连接. 我的问题如下: 一段时间后,数据包开始下降.第一个〜100个数据包工作正常 @ 50 Hz.从那时起,数据包开始掉落. 0x00 - 0x46 received 0x47, 0
0 2023-05-23
编程技术问答社区
安卓系统连接缓慢
我正在编写一个Android应用程序以连接到BLE外围设备. Android 4.4.2,Galaxy Nexus. 我在设备上有一个指示连接状态的LED. 问题是 connectgatt()呼叫接收ConnectionStateChange STATE_CONNECTED的持续时间是如此不一致.有时这很快,但是大多数时间需要5s或更多.关闭/关闭蓝牙没有任何效果. 我用 ti ble 加密狗在PC上尝试了 ti btool ,它总是很快建立连接. 我也尝试使用iPhone 5s,也很快. 有人也经历了这个问题吗? 有没有机会改善这一点? 解决方案 传递到connectgatt()autoconnect参数请求背景连接,同时传递false请求直接连接. Bluetoothgatt#Connect()总是请求背景连接. 背景连接(根据4.4.2 AOSP的Bluedroid源)的扫描间隔为1280ms,窗口为11.25ms.这对应于约0.9%的
0 2023-05-23
编程技术问答社区
在Wireshark中,BLE每个连接间隔的数据包数量
我需要确切知道我的ble可以处理多少个间隔.外围设备根据其数据表,每个间隔处理6个数据包,但我无法找出中央可以处理多少数据包.中央装置是摩托罗拉摩托车(2代),运行Android 5.0.2. 通过检查他BTSNOOP_HCI.LOG文件,我已经能够识别多个连接参数,例如连接间隔(我的情况下为7.5ms).我的问题是,可以通过检查Wireshark中的谈判数据包来确定可以在单个群体间隔内交换多少包包. . 解决方案 在规格中,连接事件中的最大数据包数量没有.连接事件最多只能持续(Connection Interval -150µs)(请参阅6.b.4.5.1). 限制(如果有的话)在物理中,两侧.大多数HCI FirmWares每个连接事件限制为4-5个数据包. 其他解决方案 由主侧的控制器决定了连接事件应打开多长时间(只要有更多的数据包从任何一侧都有更多的数据包).奴隶对此无话可说. 对于中央主机,创建连接时以及更新连接参数时,有两个HCI参数minim
4 2023-05-16
编程技术问答社区
Android-BLE连接参数和在SQLite数据库中存储BLE传感器数据
我正在开发一个Android应用程序,该应用以每秒约8000个字节的速率从BLE传感器接收数据. 我的应用程序中的连接逻辑基于Google的蓝牙示例.有用.我什么都没有更改,也没有明确设置任何连接参数,例如连接事件之间的间隔(我认为Android 4.4 API都不支持). 我正在使用Android版本4.4.2进行两台Android手机进行测试 一台电话谈判7.5ms的间隔,并每个连接事件交换三个20字节数据包.其他电话在连接事件和交换之间进行了48.75毫秒的谈判,每个事件的有效数据传输速率大约相同). 我的问题是,我正在尝试从BLE服务活动中记录数据,因为它进入了SQLITE数据库.该记录适用于7.5ms间隔的电话.然而, 该应用程序以48.75ms的间隔锁定手机. (通常,该电话的连接稳定得多).我认为这是因为它正在处理19个数据包的处理. 我的问题: 1.无论如何,我是否可以使用7.5ms的间隔来制作两个手机(以及任何未来的设备),因为这似乎更好?有
10 2023-05-16
编程技术问答社区
需要帮助来解析血糖仪安卓BLE上的膳食类型
需要帮助以在血管上解析Android BLE. 这是我的数据: [27,5,0,-28,7,7,8,24,17,18,41,-29,1,102,-80,-8,0,0] 我也发现了这个: C3:存在字段,如果位于位的关键 标志字段设置为1 这是我的枚举 public static Meal from(final int code) { switch (code) { case 1: return PREPRANDIAL; case 2: return POSTPRANDIAL; case 3: return FASTING; case 4: return CASUAL; case 5: return BEDTIME; default:
4 2023-05-16
编程技术问答社区
在OS X 10.11 El Capitan上的蓝牙低能量滞后/延迟问题
我一直在开发一个Mac OS X应用程序,该应用程序通过蓝牙低能连续发送命令到硬件设备.在优胜美地下,该应用程序运行良好,命令传输的测量往返潜伏期为7-12毫秒.该命令以至少2秒和最大0.2秒的稳定间隔发送到自定义BLE服务. 现在,我在过去几个月中还没有开发(该应用程序尚未生存),然后升级到El Capitan,现在同一应用的延迟 500-1500 ms ,这使整个事情绝对无法使用.我假设升级到El Capitan是原因,但我无法确定. 我检查的内容: 我在运行El Capitan的多个MacBook Pros上测试了,延迟总是那么糟糕. 无论发送到设备信息服务),命令具有很高的延迟,并且随着发送的每条消息而变化很大. 我是否使用我们自己的应用程序,名为" LightBlue"发送HEX字符串的第三方应用程序或Apple自己的"蓝牙资源管理器"开发人员工具(可以在开发人员资源中下载). li> 谁能暗示我可能导致这一点,或者只是告诉我在他们的环境中一切都很好
0 2023-05-14
编程技术问答社区
如何将corebluetooth从Objective C移植到Objective C++?
我希望在正在从事的项目中获得一些帮助.我目前正在尝试重新设计此代码 然后在设置中:acv = [[acviewController alloc] init]; 但是,每当我尝试调用诸如[acv RenderHearTrateMeasurement]之类的函数时;我明白了 实例方法' - renderHearTrateMeasurement'找不到(返回类型默认为'id') 任何帮助将不胜感激! 最好, 古斯塔夫 解决方案 如果我正确理解您,您希望能够从C ++调用Objective-C方法. 让我们假设您在myClass.h中定义了一个Objective-C类,如下所示: @interface MyClass : NSObject -(instancetype)initWithA:(int)a andB:(int)b; @end 一个非常简单的类,带有两个ints的初始化. 要从C ++访问它,您将在mycppclass.hpp中进行以下操作:
0 2023-05-07
编程技术问答社区
目标C-BLE设备制造商数据比较
我的任务是将制造商数据与字符串进行比较以显示BLE设备. -(void)centralManager:(CBCentralManager *):didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI { NSString *manufac=[advertisementData objectForKey:CBAdvertisementDataManufacturerDataKey]; NSString *string=@"57394423 4334445 55"; if([string isEqualToString:manufac]) NSLog(@"yes it is the device"); else NSLog(@"sorry
0 2023-05-07
编程技术问答社区
刷新许多蓝牙外围设备的RSSI值
我正在尝试通过几个蓝牙外围设备在iOS(6带BLE)上的RSSI指示器. 我可以使用scanforperipheral获得RSSI: NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], CBCentralManagerScanOptionAllowDuplicatesKey, nil]; [_manager scanForPeripheralsWithServices:nil options:options]; 与: 相结合 - (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSD
2 2023-05-06
编程技术问答社区
如何解决CBPeripheralManager'的发送队列已满?
我在CBPeripheralManager的方法中有问题. - (BOOL)updateValue:(NSData *)value forCharacteristic:(CBMutableCharacteristic *)characteristic onSubscribedCentrals:(NSArray *)centrals 根据Apple documentation,如果可以发送更新,则它将返回YES如果基础发送队列已满. 我得到了NO.我应该如何解决此问题? 解决方案 当输出队列已满时,您需要延迟发送响应. 工人队列方案. 解决此问题的最简单方法是创建 worker queue 发送并创建一个调度块,该块将项目带出并将其发送出去. When the queue is full, the current chunk is placed back on the head of the queue and after receiving the " no
0 2023-05-06
编程技术问答社区
延长一个iBeacon的延迟
我一直在玩iOS 7中的新的IBEACONS.当我在这些范围之间穿越时,很快.有什么方法可以调整延迟吗?我发现我必须非常缓慢地移动设备,否则我不知道何时越过这些阈值. 解决方案 不,您将无法调整信标延迟.正如苹果在区域监视指南: 为了防止虚假通知,iOS不提供区域 在满足某些阈值条件之前的通知. 具体而言,用户的位置必须越过区域边界, 远离该边界的最小距离,并保持 在通知之前,至少20秒钟的距离为 报告. 苹果没有定义延迟是什么,似乎不够快. 您可以进行权衡 - 使用核心蓝牙实施信标,并在使用RSSI扫描和范围时收听cbperipheral广告事件: CentralManager:diddiscovervoverperipheral:advertisementData:rssi: 如果您使用的是自定义信标,例如 radiusnetworks virtualibeacon vm image 您可以调整广告.另一侧您的应用程序必须在前景中运行,即使您的应
0 2023-05-06
编程技术问答社区
BTLE 4.0-ConnectBlue低能耗串口服务
我正在寻找一种通过串行端口(RS232)到iPhone从嵌入式设备加载数据的方法.该应用需要在AppStore上,而我们的公司不属于MFI计划. 在您说,这是无法完成的,我们正在研究蓝牙低能4.0作为可能的解决方案.我们可以创建一个设备,该设备可以将ConnectBlue的OBS421模块变成串行端口适配器(速度突发限制).为此,ConnectBlue提供了自己的 有人在使用此协议方面有任何经验吗?如果是这样,您是否可以提供以这种方式建立通信的示例(目标C)代码? 是否有人向Apple提交了一个应用程序,而不会因侵犯MFI规则而遭到拒绝? 另一个问题..我试图连接的设备仅支持Ezii Escape Computer Computer命令集标准(" EZ2 2.0"及更高的PROG ID)中的串行命令.它们看起来不同于常见的att-commands.示例:Gc100. 知道我是否可以通过ConnectBlue的LE-SPS发送此类命令? 您的帮助非常
2 2023-05-06
编程技术问答社区
使用CoreBluetooth(BLE)从CentralManager向PeripheralManager发送数据
我的应用程序在两个iOS设备(均为6.1.4)上运行,其中一个设备充当中央,一个设备充当外围. 我已经成功地从外围到中心的通知(设置为通知的特征)正好可以. 但是,我想写一个从中心到外围的值,到特定的写作特征,但总是失败. peripheral:didWriteValueForCharacteristic:error:代表的方法立即被调用,其中错误描述说: "一个或多个参数无效" 我一直在寻找任何线索,但尚未提出错误. 这就是我在外围方面设置特征的方式: [[CBMutableCharacteristic alloc] initWithType: properties:CBCharacteristicPropertyWrite value:nil permissions:0]; 我看到,当我在中央方面发现特征时,我的可写的特征就在那里.我确实会存储一个参考文献,稍后我在编写价值时尝试使用.我写的值只是我将其转换为NSDA
0 2023-05-06
编程技术问答社区
有界和无界设备的区别是什么?
我是iOS和BLE的新手,如果这个问题非常基本,请对我很高兴. 边界设备和无界设备之间的区别是什么?我正在使用CBCentralManager在iOS中使用CBCentralManager,并试图弄清楚如何通过CBCentralManager配对它们. 解决方案 您不需要执行任何其他应用程序,如果需要,iOS将处理绑定. 有限的连接在某种程度上"配对"到iOS设备.一旦界定,他们将不会与任何其他设备通信.边界由操作系统(IOS)控制.当需要有界连接的设备与iOS设备通信时,iOS设备会提示视图,询问您是否希望连接到设备. 无界设备不断广播其服务,并允许任何iOS设备连接到它.该设备将不会绑定到特定的iOS设备,并且可以在另一个时间自由连接到另一个iOS设备.这是大多数BT4.0传感器的正常/推荐方法. 在这两种情况下,应用程序通常都会存储UUID,以便下次可以建立与同一设备的连接. 注意:尽管无界设备与iOS设备没有"配对",但它们只能与单个iOS设
0 2023-05-06
编程技术问答社区
更快地重新连接一个CBPeripheral
我正在开发一个应用程序,该应用程序连接并与不同的蓝牙低能外围设备连接并断开连接. 经过大量的互联网研究,我没有找到一种存储已经发现的服务和特征的方法,以便可以更快地重新连接. 目前,我发现每次重新连接后所需的服务和特征,这使我花费1.5到2秒. 某人是否有经验或解决方案来存储/缓存cbservice或cbcharacteristic,或者有人知道一种更快地重新连接的方法吗? 感谢您的任何帮助 解决方案 我尝试了存储器中的缓存外围,服务和特征对象,手动缓存不起作用.一旦与外围设置断开连接,服务和特征对象将不再有效使用.实际上,即使是cbperipheral也可以从您的下方变化 - corebluetooth具有内部行为,该设备将每隔几分钟更改设备每隔几分钟(如果Cbperipheral是另一个iOS设备). 但是,如果您正在为iOS 6开发开发,则有一种方法可以加快速度.如果您观看 在WWDC 2012上的高级蓝牙演讲,您会看到有关缓存服务的结局和特征.从本质上讲
2 2023-05-05
编程技术问答社区