我在Android上创建应用程序,我必须与Microchip的RN4020蓝牙低功耗模块进行通信。我必须与这个模块建立联系以交换数据,几天前一切正常。
现在昨天我突然想到,如果我故意与RN4020失去连接或终止连接,我无法重新连接到它,因为要重新连接我的应用程序,我必须先听取直接广告,这只是在设备是在给定时刻没有连接。我用UART检查了我的RN4020给我的信息。如果我没有联系设备并连接/断开多次UART给我
连接
连接结束
连接
连接结束
连接
连接结束
...
现在如果我粘贴设备,相同的代码只给了我
连接
即使Android Monitor
中的Android Studio
标签确认已断开连接并关闭BluetoothGatt
,我的RN4020也不同意。
我还从Play Store
下载了另一个可以连接到BLE设备和读/写特性的免费应用程序。同样的事发生在那里。如果没有使用RN4020创建绑定,我可以连接和断开连接多次我没有问题但是当创建绑定时,我的手机只是保持连接到RN4020,除非我完全关闭蓝牙。然后在重新打开之后,我可以抓住它的直接广告,但是当我连接时,我再也无法断开连接。
任何人都可以告诉我这是什么意思吗?
编辑:还有一件事 - 当我在手机上转到Application Manager
时(Galaxy S4 active / Lolipop),点击运行 - >蓝牙我可以看到它有点状态1进程和11个服务正在运行。其中一项服务是BleAutoConnectService
。但无论如何,如果我将其关闭,它不会改变任何东西。
编辑nr 2:当我昨天和我的朋友Sony Xperia(我认为是Z
)进行测试时,发生了这种情况:当与RN4020建立新的联系时,我收到了以下消息: UART
连接
ConnParam:0006,0000,07D0
保税
ConnParam:0027,0000,07D0
ConnParam:0006,0000,07D0
ConnParam:0027,0000,07D0
连接结束
所以至少那个手机在绑定后断开连接。这就是数据表中关于ConnParam
所说的内容:
当连接和连接参数由对等方更新时 设备,消息“ConnParam”被发送到UART。消息“ConnParam” 有三个16位参数,即连接间隔,从属 延迟和监督超时分别。
当我向RN4020发送' 命令以显示有关它的重要信息时,它给了我
Bonded = FFFFFFFFFFFF, 1 // 1代表私人/随机MAC地址
但使用我的设备我刚刚获得
连接
保税
和' D' 命令给了我
Bonded = FFFFFFFFFFFF, 0 // 0代表公共MAC地址
所以昨天我决定睡觉,但今天一切正常。我可以连接和断开设备是否与我自己的手机绑定了多少次。我不知道为什么会发生这种情况以及如何处理这种随机行为。