基于SmartPhone的藍(lán)牙遙控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
3.2 藍(lán)牙設(shè)備間的數(shù)據(jù)傳輸
SmartPhone 端在利用藍(lán)牙模塊與PC 端進(jìn)行通信前,首先要對(duì)PC 端的藍(lán)牙設(shè)備進(jìn)行查詢搜索,來(lái)獲得設(shè)備的名稱、地址、所提供的服務(wù)等相關(guān)信息。在以往的系統(tǒng)設(shè)計(jì)中,設(shè)備 查詢需要調(diào)用相關(guān)的藍(lán)牙API 函數(shù)來(lái)遍歷取得通信范圍內(nèi)的藍(lán)牙設(shè)備信息,并將結(jié)果信息 存入系統(tǒng)定義的WSAQUERYSET 數(shù)據(jù)結(jié)構(gòu)中,然后再通過注冊(cè)虛擬串口,實(shí)現(xiàn)設(shè)備間的藍(lán)牙串行通信,整個(gè)過程復(fù)雜并且容易出錯(cuò),或者有的系統(tǒng)干脆采用手工指定的方式。本系統(tǒng)則采取一種新的方法,通過讀取系統(tǒng)的注冊(cè)表,來(lái)查詢相關(guān)的藍(lán)牙設(shè)備名稱、服務(wù)以及使用 的虛擬串口號(hào)。在Windows Mobile 5.0 平臺(tái)中, 注冊(cè)表HKEY_LOCAL_MACHINESOFTWAREMicrosoftBluetoothDevice 下存儲(chǔ)了藍(lán)牙設(shè)備的設(shè)備名稱、16 位字符的ID 號(hào)以及設(shè)備的CLASS , 而 HKEY_LOCAL_MACHINESOFTWAREMicrosoftBluetoothSerialPorts 下則存儲(chǔ)了藍(lán)牙連接所使用的虛擬串口號(hào),但不包含系統(tǒng)保留的串口標(biāo)識(shí)。在這個(gè)鍵值下系統(tǒng)為每一個(gè)匹配的 設(shè)備都設(shè)定了一個(gè)藍(lán)牙串口號(hào),而且可以通過指定"New Outgoing Port"值設(shè)定設(shè)備的新虛擬 串口號(hào)。
利用這種新的機(jī)制就不在需要使用傳統(tǒng)的RegisterDevice()方法去注冊(cè)虛擬串口號(hào) 然后使用,而是通過查詢或設(shè)定注冊(cè)表進(jìn)行使用,而不與別的串口相沖突。通過對(duì)以上方法獲得設(shè)備及虛擬串口號(hào)的信息后,再利用這些信息實(shí)現(xiàn) SmartPhone 端 和PC 端的藍(lán)牙通信。通信過程的流程圖如圖2 所示:
3.3 Powerpoint 控制解決方案
評(píng)論