日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

蓝牙协议服务与特征值

發(fā)布時(shí)間:2023/12/19 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 蓝牙协议服务与特征值 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文摘自BLE4.0教程二 藍(lán)牙協(xié)議之服務(wù)與特征值分析 - Asam - 博客園 https://www.cnblogs.com/asam/p/8676369.html,僅用于自己學(xué)習(xí)查看,如果各位博客想看更詳細(xì)的內(nèi)容,可以打開(kāi)原博主的博客了解,這篇文章寫(xiě)得很好的。

1.關(guān)于服務(wù)與特征值的簡(jiǎn)述

之前說(shuō)到藍(lán)牙的連接過(guò)程,那藍(lán)牙連接之后具體是如何傳數(shù)據(jù)的呢。這里做一下簡(jiǎn)要說(shuō)明。

藍(lán)牙4.0是以參數(shù)來(lái)進(jìn)行數(shù)據(jù)傳輸?shù)模捶?wù)端定好一個(gè)參數(shù),客戶端可以對(duì)這個(gè)參數(shù)進(jìn)行讀,寫(xiě),通知等操作,這個(gè)東西我們稱之為特征值(characteristic

但一個(gè)參數(shù)不夠我們用,比如我們這個(gè)特征值是電量的值,另一個(gè)特征值是設(shè)備讀取的溫度值。

那這時(shí)候會(huì)有多個(gè)特征值,并且我們還會(huì)對(duì)它們分類,分出來(lái)的類我們稱之為服務(wù)(service)。

一個(gè)設(shè)備可以有多個(gè)服務(wù),每一個(gè)服務(wù)可以包含多個(gè)特征值。為了方便操作,每個(gè)特征值都有他的屬性,例如長(zhǎng)度(size),權(quán)限(permission),值(value),描述(descriptor),如下圖。

2.ATT與GATT

我們剛才介紹服務(wù)與特征值,那具體我們是怎么去實(shí)現(xiàn)的呢.

藍(lán)牙4.0版本推出了低功耗規(guī)范,引入了兩個(gè)核心協(xié)議:ATT(Attribute Protocol)GATT(Generic Attribute Protocol).這兩個(gè)協(xié)議主要目標(biāo)是BLE,但是也可以運(yùn)行在傳統(tǒng)藍(lán)牙上(BR/EDR)。

ATT主要是規(guī)定了"屬性"的定義,GATT則是將這些"屬性"包裝成我們上面所講的服務(wù)、特征值等。

那我們是怎么搭建起來(lái)我們的服務(wù)的呢?
大概可以概述為,由一個(gè)個(gè)屬性搭建起來(lái)的東西。如下圖,每一個(gè)屬性就會(huì)告訴使用者說(shuō),我是什么,我?guī)в惺裁矗隳軐?duì)我做什么,即描述,值,權(quán)限

序號(hào)

描述

權(quán)限

屬性1

我是 服務(wù)A的開(kāi)頭

只讀

服務(wù)號(hào)0001

屬性2

我是 特征值1的開(kāi)頭

只讀

特征值1的值放在屬性3里

特征值1的值類型

特征值1的值權(quán)限

屬性3

我是 特征值1的值

/

0

屬性4

我是 特征值1的特殊操作

讀寫(xiě)

關(guān)閉

屬性5

我是 特征值2的開(kāi)頭

只讀

屬性6

我是 特征值2的值

/

屬性7

我是 特征值2的特殊操作

讀寫(xiě)

屬性8

我是 服務(wù)B的開(kāi)頭

只讀

服務(wù)號(hào)0002

上圖是一個(gè)簡(jiǎn)單的表述,真正的屬性表如下圖。

Handle

Type

Permission

Value

39

0x2800

(GATT Primary Service UUID)

Read

E0:FF(2 bytes)

(0xFFE0 = simple keys service custom UUID)

40

0x2803

(GATT Characteristic Declaration UUID)

Read

10:29:00:E1:FF(5 byte)

(0xFFE1 = Simple keys value custom UUID)

(0x0029 = handle 41)

(0x10 = characteristic properties :notify only)

41

0xFFE1

(simple keys state)

(none)

00(1 byte)

(value indicates states of keys)

42

0x2902

(GATT Client Characteristic Configuration UUID)

Read and Write

00:00(2 byte)

(value indicates whether notifications or indications are enabled)

43

0x2800

(GATT Primary Service UUID)

Read

A1:DD(2 byte)

(0xDDA1 = Other Service custom UUID)

屬性的定義是這樣的

Handle

Type

Permission

Value

Handle:其實(shí)上面那張屬性表,在程序里只是一個(gè)數(shù)組而已,所以Handle這個(gè)值其實(shí)我們是不需要專門(mén)去存的,他只是一個(gè)索引而已。

Type:屬性的類型,也即UUID ,藍(lán)牙標(biāo)準(zhǔn)組織已經(jīng)對(duì)UUID進(jìn)行了分類。

如上表中,服務(wù)的Type就是0X2800,所以每到一個(gè)服務(wù),就會(huì)有一個(gè)Type類型為0x2800的屬性出現(xiàn)。

而特征值Declaration 的Type就是0x2803。至于特征值Value的Type可以是用戶自定義的。

Permission:屬性的訪問(wèn)權(quán)限,一般有Read、Write、notifications、indications

Value:屬性的值最長(zhǎng)可達(dá)512字節(jié)

總結(jié)

以上是生活随笔為你收集整理的蓝牙协议服务与特征值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。