.NET 与 Windows RT 蓝牙 LE API - 重新启动 Windows 后无法读取或写入设备

     2023-04-13     253

关键词:

【中文标题】.NET 与 Windows RT 蓝牙 LE API - 重新启动 Windows 后无法读取或写入设备【英文标题】:.NET with Windows RT Bluetooth LE API - cannot read or write device after restarting Windows 【发布时间】:2017-04-05 09:45:46 【问题描述】:

我一直在为 Windows 8.1 及更高版本使用低功耗蓝牙的 WinRT API 开发应用程序。它工作了一段时间,但我遇到了一个严重的问题:Windows 重新启动后软件无法连接到设备。

如果我关闭并重新启动软件,它仍然无法配对。唯一有效的是,如果我取消配对并与设备重新配对。但是,考虑到我们用户的用例,这是完全不能接受的。设备固件不会有问题,因为它仍然能够与 iOS 配对和交互。

在调试中,每当我尝试使用txCharacteristic.WriteValueAsync(chunk, GattWriteOption.WriteWithoutResponse) 写入设备时,我都会收到“功能不正确”。但是,我知道这是正确的功能,因为这正是设备支持的功能,更不用说如果我取消配对并重新配对,代码也可以正常工作。此外,当我尝试展开 PresentationFormats 属性时出现此错误:

PresentationFormats 'this.txServiceCharacteristic.PresentationFormats' 引发了“System.AccessViolationException” System.Collections.Generic.IReadOnlyList System.AccessViolationException 类型的异常

所以这告诉我这是 Windows 的问题。我目前正在运行 10。

我尝试过更新设备驱动程序,将蓝牙服务设置为自动启动(从默认的手动“触发”启动),但似乎没有什么可以缓解这个问题。有谁知道是什么原因造成的,有什么解决办法吗?

谢谢!

编辑:显然,如果我将 GattProtectionLevel 从 EncryptionAndAuthenticationRequired 更改为 Plain,则错误已得到修复。但是,为什么仅在 Windows 重新启动后 EncryptionAndAuthenticationRequired 会是不正确的模式?

【问题讨论】:

【参考方案1】:

正如我在编辑中提到的,如果我将 GattProtectionLevelEncryptionAndAuthenticationRequired 更改为 Plain,错误就会得到修复。

现在,我们担心这意味着没有加密或身份验证。但是,在我们使用蓝牙数据包嗅探器确定之后,情况似乎并非如此。这是因为加密和身份验证的细节是在配对时完成的,而不是在连接时完成的。

根据documentation:

普通:使用默认保护级别。

Plain 不代表None。这意味着“使用设备所需的最低安全性”,或者本质上是根据配对时获得的信息自动进行的。

【讨论】:

有没有办法在 Windows 10 中使用蓝牙 LE 库 C# 与传感器或微控制器通信?

】有没有办法在Windows10中使用蓝牙LE库C#与传感器或微控制器通信?【英文标题】:IsthereawayuseBluetoothLElibrariesC#inWindows10tocommunicatewithsensorsormicro-controllers?【发布时间】:2017-12-0822:56:16【问题描述】:我花了一些时间寻找从DFRobots... 查看详情

有啥方法可以从 Windows 10 中的 c# 桌面应用程序使用蓝牙 LE?

】有啥方法可以从Windows10中的c#桌面应用程序使用蓝牙LE?【英文标题】:IsthereanywaytouseBluetoothLEfromac#desktopappinwindows10?有什么方法可以从Windows10中的c#桌面应用程序使用蓝牙LE?【发布时间】:2016-09-1622:07:01【问题描述】:我在网... 查看详情

使用 .Net Core 在 Raspberry Pi 上使用蓝牙 LE

】使用.NetCore在RaspberryPi上使用蓝牙LE【英文标题】:UtilizingbluetoothLEonRaspberryPiusing.NetCore【发布时间】:2019-05-2419:01:07【问题描述】:我想在.NETCore中构建GATT客户端。它将部署到运行RaspbianLite的RPi3控制多个BLE设备。.NetCoreFramework... 查看详情

蓝牙 LE 广告数据包格式与蓝牙规范不匹配

】蓝牙LE广告数据包格式与蓝牙规范不匹配【英文标题】:BluetoothLEAdvertismentPacketformatdoesn\'tmatchBluetoothspecifications【发布时间】:2020-06-2908:00:35【问题描述】:我正在尝试使用我的树莓派连接到蓝牙体重秤。因为我无法连接到它... 查看详情

btframework 如何与加密配对和绑定(蓝牙 LE 菜鸟问题)

】btframework如何与加密配对和绑定(蓝牙LE菜鸟问题)【英文标题】:btframeworkhowtopair&bondwithencryption(BluetoothLEnoobquestion)【发布时间】:2020-08-3114:57:21【问题描述】:我在尝试使用btframework(www.btframework.com)配对和绑定蓝牙LE设备... 查看详情

与 CC2540 蓝牙 LE 设备配对

】与CC2540蓝牙LE设备配对【英文标题】:PairingtoaCC2540BluetoothLEDevice【发布时间】:2012-09-1820:15:50【问题描述】:我正在尝试使用我的摩托罗拉RAZR连接到基于TI的CC2540的BLE设备(我有TI的密钥卡,以及connectblueOLP425的另一个设备),... 查看详情

iOS 上的蓝牙 LE 无法与许多服务和特性一起使用

】iOS上的蓝牙LE无法与许多服务和特性一起使用【英文标题】:BluetoothLEoniOScannotworkwithmanyservicesandcharacteristics【发布时间】:2014-07-2405:31:53【问题描述】:我开发了一个BLE应用程序,在我的iPhone应用程序中使用CoreBluetooth。我的iPh... 查看详情

从 Windows 上的 RSSI 检测蓝牙信号强度

】从Windows上的RSSI检测蓝牙信号强度【英文标题】:DetectingbluetoothsignalstrengthfromRSSIonWindows【发布时间】:2020-06-1110:28:10【问题描述】:我试图了解如何在Windows上以C#或C++访问蓝牙(不是LE)连接的RSSI。我的理解是没有直接的“Get... 查看详情

获取已连接的蓝牙 LE 设备列表

】获取已连接的蓝牙LE设备列表【英文标题】:GetlistofconnectedBluetoothLEdevices【发布时间】:2014-12-1703:31:53【问题描述】:我是蓝牙低功耗(LE)API的新手。有没有办法检查Android设备当前是否连接到任何蓝牙LE设备并可能获取这些设备... 查看详情

蓝牙 LE L2CAP CID 与 PSM

】蓝牙LEL2CAPCID与PSM【英文标题】:BluetoothLEL2CAPCIDvs.PSM【发布时间】:2017-04-2716:02:15【问题描述】:我一直在自学如何使用BlueZAPI用C语言为BLE设备编写程序。但是,我似乎对sockaddr_l2结构的一个特定方面感到困惑。我使用的定义... 查看详情

Windows/.Net 中的蓝牙 API?

】Windows/.Net中的蓝牙API?【英文标题】:BluetoothAPIsinWindows/.Net?【发布时间】:2010-09-1318:40:04【问题描述】:我正在编写一个蓝牙扫描仪,用于定位和识别本地附近的移动设备。这是我可以使用C#完成的事情,还是我需要进入C/C++A... 查看详情

用于模拟硬件的可编程蓝牙 LE 设备

】用于模拟硬件的可编程蓝牙LE设备【英文标题】:ProgrammableBluetoothLEdevicetoSimulateaHW【发布时间】:2016-03-0116:22:04【问题描述】:我正在编写一个与蓝牙LE硬件交互的移动应用程序。作为起点,我想要一个虚拟的蓝牙LE设备,可以... 查看详情

用于读取测量数据的蓝牙 LE 配置文件

】用于读取测量数据的蓝牙LE配置文件【英文标题】:BluetoothLEProfileforreadingmeasureddata【发布时间】:2012-10-2915:54:00【问题描述】:在过去的几个小时里,我阅读了很多有关蓝牙LE的信息,但我并不真正了解配置文件的工作原理。... 查看详情

是否可以在不针对设备的情况下通过蓝牙 LE 进行广播?

】是否可以在不针对设备的情况下通过蓝牙LE进行广播?【英文标题】:IsitpossibletobroadcastoverBluetoothLEwithouttargetingadevice?【发布时间】:2017-06-1822:02:12【问题描述】:我正在使用Xamarin和MvvmCross构建一个需要使用蓝牙LE的应用,但... 查看详情

C中的轻量级蓝牙LE库

】C中的轻量级蓝牙LE库【英文标题】:LightWeightBluetoothLElibraryinC【发布时间】:2021-07-1414:48:35【问题描述】:我一直在寻找一个简单的C语言蓝牙LE库,它允许我扫描BLE设备、连接并接收来自BLE设备的给定服务UUID的定期通知。直接... 查看详情

Android蓝牙LE:连接后未发现服务

】Android蓝牙LE:连接后未发现服务【英文标题】:AndroidBluetoothLE:Notdiscoveringservicesafterconnection【发布时间】:2014-06-0321:46:34【问题描述】:我正在尝试使用Android的低功耗蓝牙与BLE设备进行通信。第一次连接时,一切正常(连接到... 查看详情

ble入门20蓝牙5速率分析

参考技术A文章从以下几个问题着手分析蓝牙5的速率:蓝牙5定义的LE2MPHY以及蓝牙4.x协议LE1MPHY都称为未编码PHY,因为它们每位数据使用1个符号表示(与使用S=2或S=8的新LE编码PHY相比)。我们需要明白各大芯片厂商数据手册宣传的... 查看详情

选点(树的遍历)(代码片段)

...+10;intp[maxn],q[maxn],t[maxn];intlson[maxn],rson[maxn],cnt,len;voiddfs(intrt)if(!rt)return;dfs(lson[rt]);dfs(rson[rt]);q[++cnt]=p[rt]*(-1);intmain()intn; 查看详情