最近用到了藍牙,外部藍牙設備是讀卡器,給讀卡器發(fā)送指令,接受讀卡器返回數(shù)據(jù)。只設計到了中心模式。概念性的東西就不說了,自行百度吧。
藍牙的連接大體步驟:
1、建立中心角色—掃描外設(discover) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???
2、連接外設(connect)
3、掃描外設中的服務和特征(discover)
4、外設做數(shù)據(jù)交互(explore and interact)
5、斷開連接(disconnect)。
準備工作:
1、添加CoreBluetooth.framework

2、在用到藍牙的頁面加入?yún)f(xié)議 CBCentralManagerDelegate ?CBPeripheralDelegate
3、用到的屬性(中心管理者,外設(基本上每次只連接一個),特征。)
在viewDidLoad中對中心管理者進行初始化 ? ? ? [self centralManager];


開始連接:
1、檢查中心設備藍牙狀態(tài)、可用則搜索周邊外設

2、篩選符合條件的外設進行連接

3、連接外設成功(查找服務)、失敗等狀態(tài)對應不同的代理方法

4、發(fā)現(xiàn)服務,繼續(xù)向下查找特征characteristics,找到之后訂閱特征,開始監(jiān)聽,需要寫指令給藍牙設備的也是在這個方法里面寫。

讀取數(shù)據(jù)的唯一方法,那個value就是返回的數(shù)據(jù),一般還會做一些處理,每個設備都有不同的處理,這個值是十六進制的

其他的一些代理方法,監(jiān)控讀寫狀態(tài)

5、斷開連接


總結(jié):連接外設很簡單,難的是對寫入的數(shù)據(jù)和讀取數(shù)據(jù)的處理,進制類型的轉(zhuǎn)換,一般藍牙廠商會有文檔說明數(shù)據(jù)處理的規(guī)則,but我們的文檔并不準??。有問題的可以簡信我哦。