此文档为开发视界翻译转载者请注明出处(开发视界 www.sf.org.cn)否则追究法律责任 2、常用蓝牙数据类型 蓝牙在数据传输中定义了一系列标准的数据类型、结构和容器。 关于蓝牙协议如何工作可以参考网站www.bluetooth.com.完整的蓝牙说明书可以从http://www.bluetooth.org/spec/上下载。 蓝牙进行数据传输协议中使用的大部分数据和容器,设计的时候都是用尽量少的信息传递尽量多的信息。因为这个要求的限制,我们可以看到很多陌生的数据类型和容器类型。 本节介绍主要的数据类型和机构,以及Symbian操作系统提供的蓝牙应用开发接口。所有的这些应用程序都在S60的SDK的以下头文件中定义: bt_sock.h btdevice.h btextnotifiers.h btsdp.h bttypes.h 更多关于上述文件的定义信息,请阅读头文件内容。 (1)蓝牙设备地址 一个远程的蓝牙设备通过一个48位的地址被确认,这个地址在Symbian的开发接口类TBTDevAddr中可以体现。这个类定义在bttypes.h头文件中。 (2)通用身份识别(UUID) 通用身份识别(UUID)是通过SDP和说明来使用的。说明调用很多不同的UUID。所有的UUID都通过TUUID处理,其可以处理全长度、128位的UUID或者短的。TUUID类在头文件bttypes.h中定义。 (3)服务记录 一个蓝牙服务通过UUID识别,每一个服务都通过蓝牙服务记录来表示,服务记录包括UUID和一系列服务所提供的信息的属性。在Symbian OS的开发接口中并没有生命服务记录。相反,开发接口只是提供了蓝牙SDP数据库,实现服务记录的应用,同时提供一些列类,通过应用程序实现搜索可用服务以及服务的相关属性的功能。 (4)服务类和概况 服务类通过UUID来表示!这些类用于识别设备所提供的服务。另外,说明书可以从http://www.bluetooth.rog下载。每个服务类中还提供了服务的属性。 (5)服务记录语句 所有的服务记录都存储在SDP数据库中。SDP数据库通过一个32位的数据区分服务记录,或者服务记录语句。一个服务记录语句是通过TsdpServRecordHandle数据类型来表示的,该文件在btsdp.h头文件中定义。 (6)服务属性ID 每个服务都包含一组属性,这些属性都是通过不同的ID区分的,这个ID值是通过数据类型TsdpAttributeID 来表示的。这个数据类型不是一个类,实际上是一个16位的整数,该数据类型在头文件btsdp.h中定义。Symbian SDP数据库使用服务记录语句和ID属性区分不同的服务。该内容将在第四节“服务搜索”中讲述。 (7)SDP数据库 每个蓝牙设备都有一个本地的数据库,用来存储可以提供的服务。数据库是通过SymbianOS开发接口中的RSdpDatabase类表示的。这个类在头文件btsdp.h中定义。关于使用该类的更多信息,参考4.1。 (8)数据元素 表1说明了蓝牙的数据元素类型在Symbian操作系统中是如何表示的。他们直接的父类或者基类、头文件的定义。表格中列举的所有的数据类型都在头文件btsdp.h中定义。 Symbian系统的开发接口所有数据元素类都是从基类CSdpAttrValue衍生的。除了CSdpAttrValueDES和CSdpAttrValueDEA类,其余的类都是CSdpAttrValue基类直接衍生的。
|
蓝牙数据元素类型 |
Symbian 系统表示方式 |
|
Nil |
CSdpAttrValueNIL |
|
Unsigned Integer |
CsdpAttrValueUInt |
|
Signed Twos-Complement Integer |
CsdpAttrValueInt |
|
UUID (Universally Unique Identifier) |
CSdpAttrValueUUID |
|
Text String |
CsdpAttrValueString |
|
Boolean |
CsdpAttrValueBoolean |
|
Data Element Sequence (list) |
CSdpAttrValueDES |
|
Data Element Alternative (list) |
CSdpAttrValueDEA |
|
URL |
CSdpAttrValueURL | 表1:Symbian操作系统中的蓝牙数据类型 数据类型在头文件btsdp.h中定义。 (9) CSdpAttrValue数据类型值 列表中没有列举的所有数据类型都可以直接使用。所有数据类型都有相同的API,对CSdpAttrValueInt的描述如下: l NewIntL-该结构接受任何未定义的值,作为数据类型的缓冲。 l Tupe-该函数返回一个值,这个值代表存储在类中的数据的类型。 l DataSize-以位为单位返回数据类型。 l Int-自身访问数据的值。 l DoesIntFit-如果类所表示的数据类型符合某一个整数,则返回真。 l Des-将类处理过的数据返回给一个指针。 (10)服务搜索方式 Symbian系统的开发接口有自己的服务搜索形式。CSdpSearchPattern类定义在btsdp.h头文件中,该类在操作系统中作为一个搜索形式的对象来使用的。 对CSdpSearchPattern的学习,该类提供了创建TUUID的所有接口。这些接口用来在有效的范围内搜索服务。 (11)属性的搜索方法 与服务搜索的形式相似,Symbian系统开发接口也提供了一个类,用来创建一系列属性标志。CSdpAttrIDMatchList用来处理向远程SDP数据库发送询问属性信息的请求。他的公共接口与前面提到的服务搜索开发接口非常类似。 (12)属性范围 需要提到的一个CSdpSearchPattern和CSdpAttrIDMatchList的区别是后者支持TattrTange结构。该结构允许客户应用程序指定其所关心的属性值的范围。该结构在btsdp.h头文件中定义的。 |