- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一台配备 Blue Gecko BLE 的设备,在各种 Android 手机和平板电脑上似乎一切正常:连接、数据传输和断开后重新连接。注意:我们不配对刚刚连接的设备,也不使用自动连接。
现在的问题是:有时某些设备 - 电话设置连接在工作数周后停止运行。我不知道它何时或为什么会发生,但在那之后就不可能使用之前完美运行的同一部手机重新连接该设备。该设备仍然可以与其他手机正常工作。手机可以与其他设备配合使用。我们尝试了各种技巧:重启手机、卸载并重新安装应用程序、重置设备。这些都不起作用。我们能够重新连接的唯一方法是从手机设置中删除蓝牙数据(重置网络和蓝牙,或者只是从手机的应用程序设置中删除蓝牙数据)。原因是什么,我们该如何解决?有任何想法吗?
线索:
从手机查看 btsnoop_hci.log 似乎当连接开始失败时,对“Sent LE Create Connection”的响应是“Command disallowed”。
查看 logcat,我看到“得到状态 133 和状态 0”,这会导致我们的应用程序中的蓝牙重置。
每 5 秒检查一次连接状态,然后重新连接……如果需要。
发生问题时,无法使用同一部手机与其他应用程序连接到该设备。就像设备被列入黑名单一样,可以通过删除蓝牙数据来清除。
我希望有人能够帮助解决这个问题。
提前致谢!
编辑:我被要求提供一些 HCI LOG,所以就在这里。帧 28305 和 28309 具有创建连接命令,而帧 28306 和 28310 具有状态为“命令不允许 (0x0c)”的响应
No. Time Arrival Time Destination Info Protocol BD_ADDR Destination Source Unexpected event Initiator Filter Policy
28304 93430.042972 Aug 12, 2018 13:39:19.747836000 FLE Daylight Time host Rcvd Command Complete (LE Add Device To White List) HCI_EVT
Frame 28304: 7 bytes on wire (56 bits), 7 bytes captured (56 bits)
Encapsulation type: Bluetooth H4 with linux header (99)
Arrival Time: Aug 12, 2018 13:39:19.747836000 FLE Daylight Time
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1534070359.747836000 seconds
[Time delta from previous captured frame: 0.000870000 seconds]
[Time delta from previous displayed frame: 0.000000000 seconds]
[Time since reference or first frame: 93430.042972000 seconds]
Frame Number: 28304
Frame Length: 7 bytes (56 bits)
Capture Length: 7 bytes (56 bits)
[Frame is marked: False]
[Frame is ignored: False]
Point-to-Point Direction: Received (1)
[Protocols in frame: bluetooth:hci_h4:bthci_evt]
Bluetooth
[Source: controller]
[Destination: host]
Bluetooth HCI H4
[Direction: Rcvd (0x01)]
HCI Packet Type: HCI Event (0x04)
Bluetooth HCI Event - Command Complete
Event Code: Command Complete (0x0e)
Parameter Total Length: 4
Number of Allowed Command Packets: 1
Command Opcode: LE Add Device To White List (0x2011)
0010 00.. .... .... = Opcode Group Field: LE Controller Commands (0x08)
.... ..00 0001 0001 = Opcode Command Field: LE Add Device To White List (0x011)
Status: Success (0x00)
[Command in frame: 28303]
[Command-Response Delta: 0.87ms]
No. Time Arrival Time Destination Info Protocol BD_ADDR Destination Source Unexpected event Initiator Filter Policy
28305 93430.043242 Aug 12, 2018 13:39:19.748106000 FLE Daylight Time controller Sent LE Create Connection HCI_CMD Use White List. Ignore Peer Address
Frame 28305: 29 bytes on wire (232 bits), 29 bytes captured (232 bits)
Encapsulation type: Bluetooth H4 with linux header (99)
Arrival Time: Aug 12, 2018 13:39:19.748106000 FLE Daylight Time
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1534070359.748106000 seconds
[Time delta from previous captured frame: 0.000270000 seconds]
[Time delta from previous displayed frame: 0.000270000 seconds]
[Time since reference or first frame: 93430.043242000 seconds]
Frame Number: 28305
Frame Length: 29 bytes (232 bits)
Capture Length: 29 bytes (232 bits)
[Frame is marked: False]
[Frame is ignored: False]
Point-to-Point Direction: Sent (0)
[Protocols in frame: bluetooth:hci_h4:bthci_cmd]
[Coloring Rule Name: ___conversation_color_filter___06]
[Coloring Rule String: bthci_cmd.opcode == 0x200d]
Bluetooth
[Source: host]
[Destination: controller]
Bluetooth HCI H4
[Direction: Sent (0x00)]
HCI Packet Type: HCI Command (0x01)
Bluetooth HCI Command - LE Create Connection
Command Opcode: LE Create Connection (0x200d)
0010 00.. .... .... = Opcode Group Field: LE Controller Commands (0x08)
.... ..00 0000 1101 = Opcode Command Field: LE Create Connection (0x00d)
Parameter Total Length: 25
Scan Interval: 2048 (1280 msec)
Scan Window: 128 (80 msec)
Initiator Filter Policy: Use White List. Ignore Peer Address (0x01)
Peer Address Type: Public Device Address (0x00)
BD_ADDR: 00:00:00_00:00:00 (00:00:00:00:00:00)
Own Address Type: Random Device Address (0x01)
Connection Interval Min: 24 (30 msec)
Connection Interval Max: 40 (50 msec)
Connection Latency: 0 (number events)
Supervision Timeout: 2000 (20 sec)
Min CE Length: 0 (0 msec)
Max CE Length: 0 (0 msec)
[Response in frame: 28306]
[Command-Response Delta: 0.607ms]
No. Time Arrival Time Destination Info Protocol BD_ADDR Destination Source Unexpected event Initiator Filter Policy
28306 93430.043849 Aug 12, 2018 13:39:19.748713000 FLE Daylight Time host Rcvd Command Status (LE Create Connection) HCI_EVT
Frame 28306: 7 bytes on wire (56 bits), 7 bytes captured (56 bits)
Encapsulation type: Bluetooth H4 with linux header (99)
Arrival Time: Aug 12, 2018 13:39:19.748713000 FLE Daylight Time
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1534070359.748713000 seconds
[Time delta from previous captured frame: 0.000607000 seconds]
[Time delta from previous displayed frame: 0.000607000 seconds]
[Time since reference or first frame: 93430.043849000 seconds]
Frame Number: 28306
Frame Length: 7 bytes (56 bits)
Capture Length: 7 bytes (56 bits)
[Frame is marked: False]
[Frame is ignored: False]
Point-to-Point Direction: Received (1)
[Protocols in frame: bluetooth:hci_h4:bthci_evt]
[Coloring Rule Name: ___conversation_color_filter___01]
[Coloring Rule String: bthci_evt.status == 0x0c]
Bluetooth
[Source: controller]
[Destination: host]
Bluetooth HCI H4
[Direction: Rcvd (0x01)]
HCI Packet Type: HCI Event (0x04)
Bluetooth HCI Event - Command Status
Event Code: Command Status (0x0f)
Parameter Total Length: 4
Status: Command Disallowed (0x0c)
Number of Allowed Command Packets: 1
Command Opcode: LE Create Connection (0x200d)
0010 00.. .... .... = Opcode Group Field: LE Controller Commands (0x08)
.... ..00 0000 1101 = Opcode Command Field: LE Create Connection (0x00d)
[Command in frame: 28305]
[Command-Response Delta: 0.607ms]
No. Time Arrival Time Destination Info Protocol BD_ADDR Destination Source Unexpected event Initiator Filter Policy
28307 93430.044054 Aug 12, 2018 13:39:19.748918000 FLE Daylight Time controller Sent LE Create Connection Cancel HCI_CMD
Frame 28307: 4 bytes on wire (32 bits), 4 bytes captured (32 bits)
Encapsulation type: Bluetooth H4 with linux header (99)
Arrival Time: Aug 12, 2018 13:39:19.748918000 FLE Daylight Time
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1534070359.748918000 seconds
[Time delta from previous captured frame: 0.000205000 seconds]
[Time delta from previous displayed frame: 0.000205000 seconds]
[Time since reference or first frame: 93430.044054000 seconds]
Frame Number: 28307
Frame Length: 4 bytes (32 bits)
Capture Length: 4 bytes (32 bits)
[Frame is marked: False]
[Frame is ignored: False]
Point-to-Point Direction: Sent (0)
[Protocols in frame: bluetooth:hci_h4:bthci_cmd]
Bluetooth
[Source: host]
[Destination: controller]
Bluetooth HCI H4
[Direction: Sent (0x00)]
HCI Packet Type: HCI Command (0x01)
Bluetooth HCI Command - LE Create Connection Cancel
Command Opcode: LE Create Connection Cancel (0x200e)
0010 00.. .... .... = Opcode Group Field: LE Controller Commands (0x08)
.... ..00 0000 1110 = Opcode Command Field: LE Create Connection Cancel (0x00e)
Parameter Total Length: 0
[Response in frame: 28308]
[Command-Response Delta: 2.721ms]
No. Time Arrival Time Destination Info Protocol BD_ADDR Destination Source Unexpected event Initiator Filter Policy
28308 93430.046775 Aug 12, 2018 13:39:19.751639000 FLE Daylight Time host Rcvd Command Complete (LE Create Connection Cancel) HCI_EVT
Frame 28308: 7 bytes on wire (56 bits), 7 bytes captured (56 bits)
Encapsulation type: Bluetooth H4 with linux header (99)
Arrival Time: Aug 12, 2018 13:39:19.751639000 FLE Daylight Time
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1534070359.751639000 seconds
[Time delta from previous captured frame: 0.002721000 seconds]
[Time delta from previous displayed frame: 0.002721000 seconds]
[Time since reference or first frame: 93430.046775000 seconds]
Frame Number: 28308
Frame Length: 7 bytes (56 bits)
Capture Length: 7 bytes (56 bits)
[Frame is marked: False]
[Frame is ignored: False]
Point-to-Point Direction: Received (1)
[Protocols in frame: bluetooth:hci_h4:bthci_evt]
[Coloring Rule Name: ___conversation_color_filter___01]
[Coloring Rule String: bthci_evt.status == 0x0c]
Bluetooth
[Source: controller]
[Destination: host]
Bluetooth HCI H4
[Direction: Rcvd (0x01)]
HCI Packet Type: HCI Event (0x04)
Bluetooth HCI Event - Command Complete
Event Code: Command Complete (0x0e)
Parameter Total Length: 4
Number of Allowed Command Packets: 1
Command Opcode: LE Create Connection Cancel (0x200e)
0010 00.. .... .... = Opcode Group Field: LE Controller Commands (0x08)
.... ..00 0000 1110 = Opcode Command Field: LE Create Connection Cancel (0x00e)
Status: Command Disallowed (0x0c)
[Command in frame: 28307]
[Command-Response Delta: 2.721ms]
No. Time Arrival Time Destination Info Protocol BD_ADDR Destination Source Unexpected event Initiator Filter Policy
28309 93434.163337 Aug 12, 2018 13:39:23.868201000 FLE Daylight Time controller Sent LE Create Connection HCI_CMD Use Peer Address
Frame 28309: 29 bytes on wire (232 bits), 29 bytes captured (232 bits)
Encapsulation type: Bluetooth H4 with linux header (99)
Arrival Time: Aug 12, 2018 13:39:23.868201000 FLE Daylight Time
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1534070363.868201000 seconds
[Time delta from previous captured frame: 4.116562000 seconds]
[Time delta from previous displayed frame: 4.116562000 seconds]
[Time since reference or first frame: 93434.163337000 seconds]
Frame Number: 28309
Frame Length: 29 bytes (232 bits)
Capture Length: 29 bytes (232 bits)
[Frame is marked: False]
[Frame is ignored: False]
Point-to-Point Direction: Sent (0)
[Protocols in frame: bluetooth:hci_h4:bthci_cmd]
[Coloring Rule Name: ___conversation_color_filter___06]
[Coloring Rule String: bthci_cmd.opcode == 0x200d]
Bluetooth
[Source: host]
[Destination: controller]
Bluetooth HCI H4
[Direction: Sent (0x00)]
HCI Packet Type: HCI Command (0x01)
Bluetooth HCI Command - LE Create Connection
Command Opcode: LE Create Connection (0x200d)
0010 00.. .... .... = Opcode Group Field: LE Controller Commands (0x08)
.... ..00 0000 1101 = Opcode Command Field: LE Create Connection (0x00d)
Parameter Total Length: 25
Scan Interval: 96 (60 msec)
Scan Window: 48 (30 msec)
Initiator Filter Policy: Use Peer Address (0x00)
Peer Address Type: Public Device Address (0x00)
BD_ADDR: SiliconL_23:5e:25 (90:fd:9f:23:5e:25)
Own Address Type: Random Device Address (0x01)
Connection Interval Min: 24 (30 msec)
Connection Interval Max: 40 (50 msec)
Connection Latency: 0 (number events)
Supervision Timeout: 2000 (20 sec)
Min CE Length: 0 (0 msec)
Max CE Length: 0 (0 msec)
[Response in frame: 28310]
[Command-Response Delta: 8.734ms]
No. Time Arrival Time Destination Info Protocol BD_ADDR Destination Source Unexpected event Initiator Filter Policy
28310 93434.172071 Aug 12, 2018 13:39:23.876935000 FLE Daylight Time host Rcvd Command Status (LE Create Connection) HCI_EVT
Frame 28310: 7 bytes on wire (56 bits), 7 bytes captured (56 bits)
Encapsulation type: Bluetooth H4 with linux header (99)
Arrival Time: Aug 12, 2018 13:39:23.876935000 FLE Daylight Time
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1534070363.876935000 seconds
[Time delta from previous captured frame: 0.008734000 seconds]
[Time delta from previous displayed frame: 0.008734000 seconds]
[Time since reference or first frame: 93434.172071000 seconds]
Frame Number: 28310
Frame Length: 7 bytes (56 bits)
Capture Length: 7 bytes (56 bits)
[Frame is marked: False]
[Frame is ignored: False]
Point-to-Point Direction: Received (1)
[Protocols in frame: bluetooth:hci_h4:bthci_evt]
[Coloring Rule Name: ___conversation_color_filter___01]
[Coloring Rule String: bthci_evt.status == 0x0c]
Bluetooth
[Source: controller]
[Destination: host]
Bluetooth HCI H4
[Direction: Rcvd (0x01)]
HCI Packet Type: HCI Event (0x04)
Bluetooth HCI Event - Command Status
Event Code: Command Status (0x0f)
Parameter Total Length: 4
Status: Command Disallowed (0x0c)
Number of Allowed Command Packets: 1
Command Opcode: LE Create Connection (0x200d)
0010 00.. .... .... = Opcode Group Field: LE Controller Commands (0x08)
.... ..00 0000 1101 = Opcode Command Field: LE Create Connection (0x00d)
[Command in frame: 28309]
[Command-Response Delta: 8.734ms]
private void connectBLEDevice() {
Log.d(TAG, "Start connect...");
if (btIsConnected) {
Log.e(TAG, "connectBLEDevice: do nothing because btIsConnected");
return;
}
Log.d(TAG, "connectBLEDevice: currentDevice = " + currentDevice);
Log.d(TAG, "connectBLEDevice: BT CONNECTION STATE = " + bluetoothManager.getConnectionState(currentDevice, BluetoothProfile.GATT) + " (0 = disconnected, 1 = connecting, 2 = connected, 3 = disconnecting)");
if (currentDevice != null) {
if (bluetoothManager.getConnectionState(currentDevice, BluetoothProfile.GATT) == BluetoothProfile.STATE_CONNECTED
|| bluetoothManager.getConnectionState(currentDevice, BluetoothProfile.GATT) == BluetoothProfile.STATE_CONNECTING
|| bluetoothManager.getConnectionState(currentDevice, BluetoothProfile.GATT) == BluetoothProfile.STATE_DISCONNECTING) {
Log.d("debug", "connectBLEDevice: connectBLEDevice ALREADY CONNECTED --> do nothing");
if(deviceConnectionRetryCount%30 != 0){
return;
}else { // RESET BT IF not communicating but BT claims to be connected for too long
Log.d("debug", "connectBLEDevice: STILL NOT COMMUNICATING for too long (2-3min) --> try to reconnect");
}
}
}
Log.e(TAG, "connectBLEDevice: Starting service discovery");
if (btGatt == null) {
// I was told there should be delay before connecting after disconnection (this could be accessed if user start and stop the service very fast)
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
Log.d("debug", "connectBLEDevice: connectGatt in BLESERVICE");
btGatt = currentDevice.connectGatt(BleService.this, false, gattCb);
}
}, 500);
} else {
Log.d(TAG, "connectBLEDevice: btGatt != null --> Disconnect BLE");
btGatt.disconnect();
// I was told there should be delay before connecting after disconnection
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
try {
boolean success = btGatt.connect();
if (!success || (deviceConnectionRetryCount > 0 && deviceConnectionRetryCount%10==0)) {
Log.d("debug", "connectBLEDevice: connect in BLESERVICE Failed OR retried 10 times (~ 1min) --> reset BT");
resetBluetooth();
}else{
Log.d("debug", "connectBLEDevice: connect in BLESERVICE Success");
}
}
catch (Exception e){
Log.e(TAG, "connectBLEDevice: Unable to connect BLE device (null pointer) --> reset BT", e);
resetBluetooth();
}
}
}, 500);
}
}
private void resetBluetooth() {
Log.e(TAG, "*** Reseting Bluetooth! ***");
if (mGattManager != null) {
mGattManager.cancelCurrentOperationBundle();
disconnect(currentDevice);
mGattManager = null;
}
if (btGatt != null) {
btGatt.disconnect();
refreshDeviceCache(btGatt);
try {
btGatt.close();
}
catch (Exception e){
Log.e(TAG, "An exception occurred while closing btGatt");
}
}
initBluetooth();
btGatt = null;
}
最佳答案
不要在 android P 之后调用 refreshDeviceCache(btGatt)。
关于android - BLE 设备在完美运行数周后停止与 Android 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52000776/
我正在使用 Tkinter 在 python 上写一个小游戏(顺便说一下,我不允许使用任何其他非内置模块)并且我想在主窗口上播放背景歌曲,这是那个包含标题,以及转到其他窗口和内容的按钮... 所以问题
我有一个 Azure WebJob,它在一个非常简单的应用服务标准:1 Small(计划)上运行。 现在,我的 WebJob(有 5 个函数正在运行)出现问题 - 我想停止 5 个正在运行的函数中的
我在 MacOS Lion 上使用 XCode 4.2。在模拟器中调试 iPhone/iPad 应用程序时,我使用 XCode 工具栏上的“停止”按钮(产品 | 停止)退出应用程序。在此之后,XCod
我刚刚下载了android开放源代码项目,并尝试使用make来构建它,我收到了以下消息: build/core/prebuilt.mk:91: *** recipe commences before
我以前从未制作过 makefile,但我们已经收到了这个,但是,如果我尝试运行它,它只会说, missing separator. stop. 我不知道可能出了什么问题 - 我已经确保空格只按制表符。
好吧,这段代码非常基本。用户将答案输入文本框,如果等于“第一+第二”,他们就得到一分。然后,他们有 5 秒钟的时间回答下一个数学问题。如果他们这样做了,函数“doCalculation”将再次运行,他
我在 viewController 中有一个循环动画 - (void)moveAnimating { [UIView animateWithDuration:2.0f animations:^
当我有一个待处理的 ASIFormDataRequest(作为异步任务启动)仍在执行并且用户按下后退按钮(为了弹出 View )时,我的 viewController 出现问题。 有什么方法可以停止该
我们正在使用 flashdevelop 和 flash CS 3 开发基于 flash 的游戏。我们正在使用 flash CS3 发布 swc,swc 将作为库在 flashdevlop 中使用。 一
我在线程中有一个连接,因此我将其添加到运行循环中以获取所有数据: [[NSRunLoop currentRunLoop] run]; [connection scheduleInRunLoop
你好,我做了一个 php 套接字服务器来从 plc 获取数据,plc 被配置为 tcp 套接字客户端。 我有一个严重的问题,如果本地网络出现故障,似乎功能 socket_accept 停止,plc 无
这个问题已经有答案了: How to stop a setTimeout loop? (10 个回答) 已关闭 8 年前。 请帮助获得正确的函数或方法来停止 setTimeout 函数。 我一直在尝试
我正在运行一个多项目SBT(v0.13)构建,并且希望它在子项目中遇到的第一个错误(编译)时快速失败(停止)。 当前的行为是,当某项无法在子项目中进行编译时,构建将继续(以编译所有其他子项目)。 一旦
我有播放.wav文件中声音的代码,但是我无法停止播放歌曲,甚至无法退出程序直到播放结束。因为这是一首5分钟的歌曲,所以这是一个问题。这是我如何播放wav的代码: public class EasySo
我正在寻找一种解决方案,该如何控制从JSF应用程序播放音频文件。 我不需要完整的解决方案,只需引用我可以用来控制播放音频文件(开始/停止/更改声音)的组件即可。 我尝试搜索过去的问题,但没有成功。 我
我已经在test.ps1中编写了以下函数,在运行该脚本以启动/停止/ ..时我想做一个选择: function getState($SeviceName) { $server = @('hos
我必须设置一个 10 分钟的计时器,它会重定向到主屏幕。此外,它必须在每个操作(例如按下按钮)时重置。我找到了这个计时器:https://github.com/fengyuanchen/vue-cou
我正在制作一个聊天应用程序,功能之一就是发送声音。发送的HTML如下: LOL Stop Play 第一次发送时,“自动播放”效果很好。因此,现在我
我基本上希望页面能够接受用户输入的时间(以秒为单位)。 之后我希望当用户按下“开始”按钮时开始倒计时按下暂停按钮时“暂停”。还有一个重置按钮,以便用户可以从头开始倒计时。 这是我到目前为止得到的:
我需要停止 $.each 循环,加载图像,然后继续循环。我有 Canvas ,可以在其中加载对象图像。对象以正确的顺序排列在数组中。现在,当我尝试从数组加载对象时,存在一个问题:由于尺寸不同,并且它们
我是一名优秀的程序员,十分优秀!