蓝牙技术是一个成本很低,并且传输距离很短的无线技术。蓝牙是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换,对于一些希望创建PANS的人来说,蓝牙技术非常普遍了。蓝牙是基于数据包、有着主从架构的协议。一个主设备至多可和同一微微网中的七个从设备通讯。所有设备共享主设备的时钟。分组交换基于主设备定义的、µs为间隔运行的基础时钟。两个时钟周期构成一个625µs的槽,两个时间隙就构成了一个1250µs的缝隙对。在单槽封包的简单情况下,主设备在双数槽发送信息、单数槽接受信息。而从设备则正好相反。封包容量可长达1、3、或5个时间隙,但无论是哪种情况,主设备都会从双数槽开始传输,从设备从单数槽开始传输。蓝牙是一个标准的无线通讯协议,基于设备低成本的收发器芯片,传输距离近、低功耗。由于设备使用无线电(广播)通讯系统,他们并非是以实际可见的线相连,然而准光学无线路径则必须是可行的。射程范围取悦于功率和类别,但是有效射程范围在实际应用中会各有差异。多数蓝牙应用是为室内环境而设计的,由于墙的衰减和信号反射造成的信号衰落会使得射程远小于蓝牙产品规定的射程范围。要使用蓝牙无线技术,设备必须能够解译某些蓝牙配置文件,蓝牙配置文件定义了可能的应用,并规定了蓝牙设备之间通信的一般行为。这些配置文件包括对通信参数和控制的最初设定。配置文件能够节约在双向链路起效之前重新发送参数的时间。广泛的蓝牙配置文件描述很多不同种类的应用或设备用例。每个局域网都可以在该设备上被动态的建立。我们为了在JAVA平台上开发蓝牙软件,JCP定义了一套标准JSR82标准也就是JAVA蓝牙技术标准。
蓝牙协议栈
蓝牙协议栈允许采用多种方法,M和Object xchange(OBEX),在设备之间发送和接收文件。如果想发送和接收流数据(而且想采用传统的串口应用程序,并给它加上蓝牙支持),M更好反过来,如果想发送对象数据以及关于负载的上下文和元数据,则OBEX最好。图5-1显示了协议栈的细节。
图5-1蓝牙协议栈
1、栈的最底层是HCI,即主机控制器接口(Host Controller Interface)。这一层顾名思义就是主机(计算机)和控制器(蓝牙设备)之间的接口。可以看到,其他所有的层都要经过HCI。
2、HCI上面的一层是L2CAP, 即逻辑链接控制器适配协议(Logical Link Controller Adaptation Protocol)。这一层充当其他所有层的数据多路复用器。
3、接下来一层是BNEP,即蓝牙网络封装协议(work Encapsulation Protocol)使用BNEP, 可以在蓝牙上运行其他网络协议,例如IP、TCP和UDP。
4、M称作虚拟串口协议(virtual serial port protocol),因为它允许蓝牙设备模拟串口的功能。
5、M层上面实现的,如果想把数据以对象(例如文件)的形式传输,那么OBEX很有用。
6、SDP是服务发现协议(Service Discovery Protocol)层,用于在远程蓝牙设备上寻找服务。
7、最后两层是AVCTP和AVDTP,用于蓝牙上音频和视频的控制和发布。AVCTP和AVDTP是蓝牙协议中增加的相对较新的层;如果想控制媒体播放器的功能或者想以立体声播放音频流,则要使用它们。
蓝牙规范用例
初始化:所有具备蓝牙功能的应用程序必须先要初始化蓝牙栈。
服务器:建立一个服务,然后等待一个客户端来连接。
客户端:搜索服务,然后尝试与服务器建立连接。
图5-2 蓝牙规范用例图
JSR-82 API简介
JSR-82是用于蓝牙无线技术的官方Java API。可使用这个API创建可执行以下功能的应用程序:
判断和检测自己的蓝牙设备的属性
发现设备通信范围内的蓝牙设备
在远程蓝牙设备上搜索服务
创建可以与远程蓝牙服务器通信的蓝牙客户机应用程序
创建能够为蓝牙客户机的请求提供服务的蓝牙服务器应用程序
JSR-82包含两个包,。
在MIDlet中一个典型蓝牙功能应用程序中的一些元素,如下:
1、本地设备类:
图5-3 LocalDevice类
本地设备提供了方法来返回关于本地设备的信息,并且能够进入Bluetooth
manager:
. getBluetoothAddress()返回蓝牙设备地址。
.getDeviceClass()返回设备类。
.getFriendlyName()返回设备友好名称,蓝牙设备名通常是用户在蓝牙控制中心为其设置的我们将会在后面看到。
.getRecord()返回一个指定蓝牙连接的服务记录。
手机蓝牙APP介绍 来自淘豆网m.daumloan.com转载请标明出处.