一種藍(lán)牙通訊方法和通訊裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,特別涉及一種藍(lán)牙通訊方法和通訊裝置。
【背景技術(shù)】
[0002]藍(lán)牙4.0 核心規(guī)范(Bluetooth Core Specificat1n Vers1n 4.0)是藍(lán)牙技術(shù)聯(lián)盟最新公布的藍(lán)牙技術(shù)規(guī)范,具有省電、成本低、3毫秒低延遲、超長有效連接距離、AES-128加密等特點(diǎn)?,F(xiàn)有技術(shù)中,移動(dòng)終端和藍(lán)牙4.0設(shè)備之間不能很好的進(jìn)行通訊。
【發(fā)明內(nèi)容】
[0003]本發(fā)明解決了移動(dòng)終端和藍(lán)牙4.0設(shè)備之間不能很好的進(jìn)行通訊的技術(shù)問題。
[0004]本發(fā)明提供了一種藍(lán)牙通訊方法,包括:
[0005]步驟S1:初始化中心設(shè)備對象,根據(jù)所述中心設(shè)備對象獲取第一設(shè)備對象;
[0006]步驟s2:根據(jù)所述第一設(shè)備對象,與對應(yīng)的目標(biāo)藍(lán)牙設(shè)備進(jìn)行配對,獲取第二設(shè)備對象;
[0007]步驟s3:根據(jù)所述第一設(shè)備對象或第二設(shè)備對象,獲取第三設(shè)備對象,從所述第三設(shè)備對象中獲取與預(yù)設(shè)服務(wù)標(biāo)識對應(yīng)的目標(biāo)服務(wù);
[0008]步驟s4:根據(jù)所述目標(biāo)服務(wù)獲取第一服務(wù),從所述第一服務(wù)中獲取與預(yù)設(shè)特征標(biāo)識對應(yīng)的目標(biāo)特征,保存所述目標(biāo)特征,使用所述目標(biāo)特征與所述目標(biāo)藍(lán)牙設(shè)備進(jìn)行通訊。
[0009]本發(fā)明還提供了一種通訊裝置,包括:中心模塊、第一獲取模塊、配對模塊、第二獲取模塊、第三獲取模塊、第四獲取模塊、第五獲取模塊、第六獲取模塊、保存模塊和通訊模塊;
[0010]所述中塊,用于初始化中;1_1、設(shè)備對象;
[0011]所述第一獲取模塊,用于根據(jù)所述中心模塊初始化的所述中心設(shè)備對象獲取第一設(shè)備對象;
[0012]所述配對模塊,用于根據(jù)所述第一獲取模塊獲取到的所述第一設(shè)備對象,與對應(yīng)的目標(biāo)藍(lán)牙設(shè)備進(jìn)行配對;
[0013]所述第二獲取模塊,用于當(dāng)所述配對模塊根據(jù)所述第一獲取模塊獲取到的所述第一設(shè)備對象,與對應(yīng)的目標(biāo)藍(lán)牙設(shè)備進(jìn)行配對后,獲取第二設(shè)備對象;
[0014]所述第三獲取模塊,用于當(dāng)所述第二獲取模塊獲取到第二設(shè)備對象后,根據(jù)所述第二設(shè)備對象或所述第一獲取模塊獲取到的所述第一設(shè)備對象,獲取第三設(shè)備對象;
[0015]所述第五獲取模塊,用于從所述第三獲取模塊獲取到的所述第三設(shè)備對象中獲取與預(yù)設(shè)服務(wù)標(biāo)識對應(yīng)的目標(biāo)服務(wù);
[0016]所述第四獲取模塊,用于根據(jù)所述第五獲取模塊獲取到的目標(biāo)服務(wù)獲取第一服務(wù);
[0017]所述第六獲取模塊,用于從所述第四獲取模塊獲取到的所述第一服務(wù)中獲取與所述預(yù)設(shè)特征標(biāo)識對應(yīng)的目標(biāo)特征;
[0018]所述保存模塊,用于保存所述第六獲取模塊獲取到的所述目標(biāo)特征;
[0019]所述通訊模塊,用于使用所述保存模塊保存的所述目標(biāo)特征和所述目標(biāo)藍(lán)牙設(shè)備進(jìn)行通訊。
[0020]本發(fā)明的有益效果:本發(fā)明提供了一種藍(lán)牙通訊方法和通訊裝置,本發(fā)明根據(jù)中心設(shè)備對象獲取目標(biāo)藍(lán)牙設(shè)備中的與預(yù)設(shè)特征標(biāo)識對應(yīng)的目標(biāo)特征,使用目標(biāo)特征實(shí)現(xiàn)與目標(biāo)藍(lán)牙設(shè)備之間的通訊。
【附圖說明】
[0021]圖1為本發(fā)明實(shí)施例1提供的一種藍(lán)牙通訊方法的流程圖;
[0022]圖2為本發(fā)明實(shí)施例2提供的一種藍(lán)牙通訊方法的流程圖;
[0023]圖3為本發(fā)明實(shí)施例3提供的一種藍(lán)牙通訊方法的流程圖。
[0024]圖4為本發(fā)明實(shí)施例4提供的一種通訊裝置的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0025]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0026]實(shí)施例1
[0027]本實(shí)施例提供了一種藍(lán)牙通訊方法:初始化中心設(shè)備對象,根據(jù)中心設(shè)備對象獲取第一設(shè)備對象;根據(jù)第一設(shè)備對象,與對應(yīng)的目標(biāo)藍(lán)牙設(shè)備進(jìn)行配對,獲取第二設(shè)備對象;根據(jù)第一設(shè)備對象或第二設(shè)備對象,獲取第三設(shè)備對象,從第三設(shè)備對象中獲取與預(yù)設(shè)服務(wù)標(biāo)識對應(yīng)的目標(biāo)服務(wù);根據(jù)目標(biāo)服務(wù)獲取第一服務(wù),從第一服務(wù)中獲取與預(yù)設(shè)特征標(biāo)識對應(yīng)的目標(biāo)特征,保存目標(biāo)特征,使用目標(biāo)特征與目標(biāo)藍(lán)牙設(shè)備進(jìn)行通訊。如圖1所示,具體包括:
[0028]本實(shí)施例中提供的藍(lán)牙通訊方法可以但不限于由安裝在具有1S系統(tǒng)的移動(dòng)終端中的驅(qū)動(dòng)程序或者由安裝在具有1S系統(tǒng)的移動(dòng)終端上的包括驅(qū)動(dòng)程序和應(yīng)用程序的可執(zhí)行文件來實(shí)現(xiàn)。具有1S系統(tǒng)的移動(dòng)終端可以為iphone、iPod itouch、iPad或AppleTV等設(shè)備。本實(shí)施例中,藍(lán)牙設(shè)備具體為支持藍(lán)牙4.0核心規(guī)范的藍(lán)牙4.0設(shè)備,例如可以為:支持藍(lán)牙4.0核心規(guī)范的藍(lán)牙讀卡器、藍(lán)牙KEY等。
[0029]步驟101:初始化中心設(shè)備對象,根據(jù)中心設(shè)備對象向1S系統(tǒng)發(fā)送搜索設(shè)備請求;
[0030]具體地,初始化中心設(shè)備對象,使用中心設(shè)備對象調(diào)用1S系統(tǒng)的發(fā)現(xiàn)周邊設(shè)備方法向1S系統(tǒng)發(fā)送搜索設(shè)備請求。
[0031 ] 本實(shí)施例中,初始化中心設(shè)備對象具體為:創(chuàng)建中心設(shè)備對象,根據(jù)中心設(shè)備對象設(shè)置1S系統(tǒng)中的中心委派接口。
[0032]創(chuàng)建中心設(shè)備對象可以為:
[0033]CBCentralManager^manager
[0034]manager = [[CBCentralManager alloc]init];
[0035]根據(jù)中心設(shè)備對象設(shè)置1S系統(tǒng)中的中心委派接口,可以為:
[0036]- (instanceType) initffithDelegate: (icKCBCentralManagerDelegate))delegate queue:(dispatch_queue_t)queue ;
[0037]本實(shí)施例中,發(fā)現(xiàn)周邊設(shè)備方法可以為:
[0038]Ointerface CBCentralManager:NSObject
[0039]- (void)scanForPeripheralsffithServices:
[0040](NSArray*)serviceUUIDs opt1ns:
[0041 ] (NSDict1nary*)opt1ns ;
[0042]iend
[0043]本實(shí)施例中,可以將參數(shù)serviceUUIDs設(shè)置為空值或者為預(yù)設(shè)服務(wù)標(biāo)識。當(dāng)將參數(shù)serviceUUIDs設(shè)置為預(yù)設(shè)服務(wù)標(biāo)識時(shí),搜索設(shè)備請求具體為:包括預(yù)設(shè)服務(wù)標(biāo)識的搜索設(shè)備請求。
[0044]本實(shí)施例中,藍(lán)牙設(shè)備可以為一個(gè)或多個(gè),例如:當(dāng)藍(lán)牙設(shè)備為3個(gè)時(shí),分別為藍(lán)牙設(shè)備1、藍(lán)牙設(shè)備2和藍(lán)牙設(shè)備3時(shí),搜索到的與藍(lán)牙設(shè)備對應(yīng)的周邊設(shè)備對象分別為:與藍(lán)牙設(shè)備I對應(yīng)的周邊設(shè)備對象1、與藍(lán)牙設(shè)備2對應(yīng)的周邊設(shè)備對象2和與藍(lán)牙設(shè)備3對應(yīng)的周邊設(shè)備對象3。
[0045]步驟102:獲取來自1S系統(tǒng)的與目標(biāo)藍(lán)牙設(shè)備對應(yīng)的第一設(shè)備對象;
[0046]具體地,當(dāng)通過第一委派接口獲取到來自所述1S系統(tǒng)的與目標(biāo)藍(lán)牙設(shè)備對應(yīng)的第一設(shè)備對象后,執(zhí)行步驟103。
[0047]本實(shí)施例中,第一委派接口可以是1S系統(tǒng)的發(fā)現(xiàn)周邊設(shè)備委派接口:
[0048]Oprotocol CBCentralManagerDeIegate<NS0bject>
[0049]Oopt1nal
[0050]- (void)centralManager:
[0051](CBCentralManager*)centraldidDiscoverPeripheral:
[0052](CBPeripheral*)peripheraladvertisementData:
[0053](NSDict1nary*)advertisementData RSS1:(NSNumber*)RSSI ;
[0054]iend
[0055]本步驟可以具體包括:
[0056]步驟al:當(dāng)搜索到與每個(gè)藍(lán)牙設(shè)備分別對應(yīng)的周邊設(shè)備對象后,保存周邊設(shè)備對象,輸出周邊設(shè)備對象中的設(shè)備標(biāo)識;
[0057]具體地,當(dāng)通過第一委派接口獲取到來自1S系統(tǒng)的系統(tǒng)中心設(shè)備對象和與每個(gè)藍(lán)牙設(shè)備對應(yīng)的周邊設(shè)備對象后,判斷系統(tǒng)中心設(shè)備對象是否和中心設(shè)備對象相匹配,如果是,則將獲取到的周邊設(shè)備對象存儲到第一設(shè)備列表中,并輸出周邊設(shè)備對象中的設(shè)備標(biāo)識;
[0058]本實(shí)施例中,設(shè)備標(biāo)識是藍(lán)牙設(shè)備的唯一識別信息,可以具體為藍(lán)牙設(shè)備的設(shè)備名稱、MAC地址等。
[0059]步驟a2:當(dāng)獲取到被選中的目標(biāo)設(shè)備標(biāo)識后,獲取與目標(biāo)設(shè)備標(biāo)識對應(yīng)的第一設(shè)備對象;
[0060]具體地,當(dāng)獲取到來自用戶選擇的目標(biāo)設(shè)備標(biāo)識后,根據(jù)目標(biāo)設(shè)備標(biāo)識在第一設(shè)備列表中查找是否存在與目標(biāo)設(shè)備標(biāo)識對應(yīng)的周邊設(shè)備對象,如果查找到,則將與目標(biāo)設(shè)備標(biāo)識對應(yīng)的周邊設(shè)備對象作為第一設(shè)備對象,執(zhí)行步驟103 ;否則,報(bào)錯(cuò)。
[0061]步驟103:通過1S系統(tǒng)和與第一設(shè)備對象對應(yīng)的目標(biāo)藍(lán)牙設(shè)備進(jìn)行配對;
[0062]具體地,使用中心設(shè)備對象調(diào)用1S系統(tǒng)的連接周邊設(shè)備方法和與第一設(shè)備對象對應(yīng)的目標(biāo)藍(lán)牙設(shè)備進(jìn)行配對。
[0063]本實(shí)施例中,1S系統(tǒng)的連接周邊設(shè)備方法可以為:
[0064]Ointerface CBCentralManager:NSObject
[0065]- (void) connectPeripheral: (CBPeripheral 氺)peripheralopt1ns:(NSDictonary*)opt1ns ;
[0066]iend
[0067]步驟104:獲取來自1S系統(tǒng)的第二設(shè)備對象;
[0068]具體地,當(dāng)通過第二委派接口獲取到來自1S系統(tǒng)的系統(tǒng)中心設(shè)備對象和第二設(shè)備對象后,判斷系統(tǒng)中心設(shè)備對象是否和中心設(shè)備對象相匹配,如果是,則保存第二設(shè)備對象,根據(jù)第二設(shè)備對象設(shè)置1S系統(tǒng)中的周邊委派接口,執(zhí)行步驟105,否則,報(bào)錯(cuò)。
[0069]本實(shí)施例中,第二委派接口可以是1S系統(tǒng)的連接周邊設(shè)備委派接口:
[0070]Oprotocol CBCentralManagerDeIegate<NS0bject>
[0071]Oopt1nal
[0072]- (void)centralManager:(CBCentralManager*)cental didConnectPeripheral:(CBPeripheral*)aPeripheral ;
[0073]iend
[0074]需要說明的是,步驟104之前,還可以包括:保存第一設(shè)備對象,相應(yīng)地,步驟104中當(dāng)獲取到來自1S系統(tǒng)的系統(tǒng)中心設(shè)備對象和第二設(shè)備對象后,還可以根據(jù)第一設(shè)備對象設(shè)置1S系統(tǒng)中的周邊委派接口。
[0075]步驟105:根據(jù)第一設(shè)備對象或者第二設(shè)備對象向1S系統(tǒng)發(fā)送獲取設(shè)備服務(wù)請求;
[0076]具體地,使用第一設(shè)備對象或者第二設(shè)備對象調(diào)用1S系統(tǒng)的發(fā)現(xiàn)周邊設(shè)備服務(wù)方法向1S系統(tǒng)發(fā)送獲取設(shè)備服務(wù)請求。
[0077]本實(shí)施例中,1S系統(tǒng)的發(fā)現(xiàn)周邊設(shè)備服務(wù)方法為:
[0078]Ointerface CBPeripheral:CBPeer
[0079]- (void)discoverServices:(NSArray*)serviceUUIDs ;
[0080]iend
[0081]本實(shí)施例中,獲取設(shè)備服務(wù)請求中可以包括預(yù)設(shè)服務(wù)標(biāo)識。具體地,將參數(shù)serviceUUIDs設(shè)置為預(yù)設(shè)服務(wù)標(biāo)識。
[0082]步驟106:當(dāng)獲取到來自1S系統(tǒng)的第三設(shè)備對象后,在第三設(shè)備對象中獲取與預(yù)設(shè)服務(wù)標(biāo)識對應(yīng)的目標(biāo)服務(wù);
[0083]具體地,當(dāng)通過第三委派接口獲取到來自1S系統(tǒng)的與目標(biāo)藍(lán)牙設(shè)備對應(yīng)的第三設(shè)備對象后,判斷第三設(shè)備對象中是否存在和預(yù)設(shè)服務(wù)標(biāo)識對應(yīng)的目標(biāo)服務(wù),如果是,則執(zhí)行步驟107;否則,報(bào)錯(cuò)。
[0084]本實(shí)施例中,第三委派接口可以是1S系統(tǒng)的發(fā)現(xiàn)周邊設(shè)備服務(wù)委派接口:
[0085]Oprotocol CBPeripheralDelegate<NSObject>
[0086]Oopt1nal
[0087]- (void) peripheral: (CBPeripheral 氺)peripheraldidDiscoverServices:(NSError*)error ;
[0088]iend
[0089]步驟107:向1S系統(tǒng)發(fā)送包括目標(biāo)服務(wù)的獲取設(shè)備特征請求;
[0090]具體地,使用第一設(shè)備對象或者第二設(shè)備對象或第三設(shè)備對象調(diào)用1S系統(tǒng)的發(fā)現(xiàn)周邊設(shè)備特征方法向1S系統(tǒng)發(fā)送包括目標(biāo)服務(wù)的獲取設(shè)備特征請求。
[0091]1S系統(tǒng)的發(fā)現(xiàn)周邊設(shè)備特征方法可以為:
[0092]Ointerface CBPeripheral:CBPeer
[0093]-(void) discover Characteristics: (NS Ar ray*) characteristic UU IDsforService:(CBService*)service ;
[0094]iend
[0095]本實(shí)施例中,獲取設(shè)備特征請求中還可以包括預(yù)設(shè)特征標(biāo)識。
[0096]步驟108:當(dāng)獲取到來自1S系統(tǒng)的與預(yù)設(shè)服務(wù)標(biāo)識對應(yīng)的第一服務(wù)后,在第一服務(wù)中獲取與預(yù)設(shè)特征標(biāo)識對應(yīng)的目標(biāo)特征,保存與預(yù)設(shè)特征標(biāo)識對應(yīng)的目標(biāo)特征;
[0097]具體地,當(dāng)通過第四委派接口獲取到來自1S系統(tǒng)的第一服務(wù)后,判斷第一服務(wù)是否和預(yù)設(shè)服務(wù)標(biāo)識相匹配,如果是,在第一服務(wù)中獲取與預(yù)設(shè)特征標(biāo)識對應(yīng)的目標(biāo)特征,保存與預(yù)設(shè)特征標(biāo)識對應(yīng)的目標(biāo)特征;否則,報(bào)錯(cuò)。
[0098]本實(shí)施例中,第四委派接口可以是發(fā)現(xiàn)周邊設(shè)備特征委派接口:
[0099]?protocol CBPeripheralDeIegate<NS0bject>
[0100]?opt1nal
[0101]- (void)peripheral:(CBPeripheral氺)peripheral didDiscoverCharacteristicForService: (CBService^)service error: (NSError^)error ;
[0102]?end
[0103]本實(shí)施例中預(yù)設(shè)特征標(biāo)識可以具體包括預(yù)設(shè)讀特征標(biāo)識和預(yù)設(shè)寫特征標(biāo)識O相應(yīng)地本步驟具體為:當(dāng)獲取到來自1S系統(tǒng)的與預(yù)設(shè)服務(wù)標(biāo)識對應(yīng)的第一服務(wù)后,在第一服務(wù)中獲取與預(yù)設(shè)讀特征標(biāo)識對應(yīng)的目標(biāo)讀特征和與預(yù)設(shè)寫特征標(biāo)識對應(yīng)的目標(biāo)寫特征,保存目標(biāo)寫特征和目標(biāo)讀特征。
[0104]步驟109:使用目標(biāo)特征通過1S系統(tǒng)和目標(biāo)藍(lán)牙設(shè)備進(jìn)行通訊。
[0105]具體地,使用目標(biāo)讀特征和目標(biāo)寫特征通過1S系統(tǒng)與目標(biāo)藍(lán)牙設(shè)備進(jìn)行通訊。
[0106]還需說明的是,使用目標(biāo)讀特征和目標(biāo)寫特征通過1S系統(tǒng)與目標(biāo)藍(lán)牙設(shè)備進(jìn)行通訊之前,還包括:打開目標(biāo)讀特征的讀通道標(biāo)識。打開目標(biāo)讀特征的讀通道標(biāo)識可以具體為:將讀通道標(biāo)識置I。
[0107]本實(shí)施例中,步驟102還可以具體包括:
[0108]當(dāng)所述獲取到來自1S系統(tǒng)的與每個(gè)藍(lán)牙設(shè)備分別對應(yīng)的周邊設(shè)備對象后,保存周邊設(shè)備對象,將保存的周邊設(shè)備對象中的第一個(gè)周邊設(shè)備對象作為第一設(shè)備對象。
[0109]相應(yīng)地,步驟106具體為:當(dāng)通過第三委派接口獲取到來自1S系統(tǒng)的與目標(biāo)藍(lán)牙設(shè)備對應(yīng)的第三設(shè)備對象后,判斷第三設(shè)備對象中是否存在和預(yù)設(shè)服務(wù)標(biāo)識對應(yīng)的目標(biāo)服務(wù),如果是,則執(zhí)行步驟107 ;否則,將第一設(shè)備對象之后的下一個(gè)周邊設(shè)備對象作為第一設(shè)備對象,返回步驟103。
[0110]本實(shí)施例中,當(dāng)步驟104中獲取到來自1S系統(tǒng)的第二設(shè)備對象后,還可以包括:
[0111]步驟bl:將第二設(shè)備對象作為已配對設(shè)備對象保存。
[0112]具體地,將第二設(shè)備對象作為已配對設(shè)備對象存儲在第二設(shè)備列表中。
[0113]需要說明的是,步驟104之前,還可以包括:保存第一設(shè)備對象,步驟105中當(dāng)獲取到來自1S系統(tǒng)的第二設(shè)備對象后,還可以包括:將第一設(shè)備對象作為已配對設(shè)備對象保存。
[0114]相應(yīng)地,步驟101中根據(jù)中心設(shè)備對象向1S系統(tǒng)發(fā)送搜索設(shè)備請求之前,還包括:
[0115]步驟Cl:判斷是否存在已配對設(shè)備對象,如果是,則斷開和已配對設(shè)備對象對應(yīng)的藍(lán)牙設(shè)備的配對,當(dāng)斷開和已配對設(shè)備對象對應(yīng)的藍(lán)牙設(shè)備的配對后,清除已配對設(shè)備對象,繼續(xù)根據(jù)中心設(shè)備對象向1S系統(tǒng)發(fā)送搜索設(shè)備請求;否則,直接根據(jù)中心設(shè)備對象向1S系統(tǒng)發(fā)送搜索設(shè)備請求。
[0116]具體地,判斷第二設(shè)備列表中是否存在已配對設(shè)備對象;
[0117]若第二設(shè)備列表中存在已配對設(shè)備對象,則調(diào)用1S系統(tǒng)的斷開周邊設(shè)備方法斷開與和已配對設(shè)備對象對應(yīng)的藍(lán)牙設(shè)備的配對,當(dāng)通過1S系統(tǒng)的第五委派接口獲取到來自1S系統(tǒng)的已斷開周邊設(shè)備對象后,判斷已斷開周邊設(shè)備對象是否和已配對設(shè)備對象匹配,當(dāng)判斷出已斷開周邊設(shè)備對象和已配對設(shè)備對象匹配后,清除第二設(shè)備列表中的已配對設(shè)備對象,繼續(xù)根據(jù)中心設(shè)備對象向1S系統(tǒng)發(fā)送搜索設(shè)備請求;當(dāng)判斷出已斷開周邊設(shè)備對象和已配對設(shè)備對象不匹配時(shí),報(bào)錯(cuò);
[0118]若第二設(shè)備列表中不存在已配對設(shè)備對象,則直接根據(jù)中心設(shè)備對象向1S系統(tǒng)發(fā)送搜索設(shè)備請求。
[0119]本實(shí)施例中,1S系統(tǒng)的斷開周邊設(shè)備方法為:
[0120]Ointerface CBCentralManager:NSObject
[0121]- (void)disconnectPeripheral:(CBPeripheral*)peripheral
[0122]iend
[0123]第五委派接口可以是斷開周邊設(shè)備委派接口:
[0124]Ointerface CBCentralManager:NSObject
[0125]- (void)centralManager:(CBCentralManager*)central didDisconnectPeripheral: (CBPeripheral*)aPeripheral