在进入更复杂的蓝牙问题之前,我想先清除我的基础知识。我有以下几个基本问题。
-
如果有两个蓝牙设备(手机和蓝牙显示器)。
-
假设有大量的蓝牙通信发生从手机到蓝牙显示器。两个设备都可以在任何时间向任何其他设备发送消息。通常的沟通设计方法是什么?是手机通过RFCOMM第一次向蓝牙设备发送连接请求,并通过RFCOMM创建一个Socket连接到蓝牙显示器,并且该连接一直保持,还是对于每条消息,Socket连接建立,然后Socket关闭,之后再次重新打开并关闭下一条消息?
-
如果连接打开直到设备在附近范围内,后果是什么
-
在使用手机和耳机的情况下,正常的通信方式是什么
1)一般情况下,蓝牙连接可以由任何一个设备发起。例如,使用电话和电脑,您可以从任何一端开始连接。使用手机和显示器或耳机时,一个设备上可能没有输入接口,因此您将从手机启动连接。设备还可以自动协商角色切换,以便它们交换主/从角色。
2)如果你有连续的数据交换,或者需要低延迟,连接通常会被保留。如果只有很少的消息要交换,断开连接将节省电力,因为设备通过交换空包来保持连接同步。
3)您无法与超出范围的设备保持连接。如果它们在一段超时时间内(以秒为数量级)不能通信,那么它们将失去同步并终止连接。
4)注意电话/耳机不使用RFCOMM连接,而是使用HSP(耳机配置文件)。同步语音数据的连接本质上不同于像RFCOMM这样的零星数据连接。
5)查看"真实"设备如何通信的好方法是使用像hcidump这样的工具,作为linux blueZ堆栈的一部分。这使您可以完全嗅探在连接设备时发生的协议消息。