windows 藍芽開源工具包分析及C 例項

2021-07-02 18:40:22 字數 3522 閱讀 8369

.1.zip>中是使用「windows embedded source tools for bluetooth」開發的例項程式。

bluetooth的應用十分廣泛,基於bluetooth的通訊程式開發主要有以下幾個步驟:

服務端* 設定本裝置為可發現。

* 公開服務給其他bluetooth裝置訪問。

* 接受其他bluetooth裝置的鏈結。

* 與鏈結上的bluetooth裝置進行通訊。

客戶端* 發現周邊bluetooth裝置。

* 主動與被發現的裝置發起連線。

* 與鏈結上的bluetooth裝置進行通訊。

在.net compact framework下進行bluetooth開發有幾個可選解決方案

* 可以p/invoke直接呼叫bluetooth的api(btdrt.dll)

* 使用ms的windows embedded source tools for bluetooth

* 使用32feet.net庫

windows embedded source tools for bluetooth提供的api總結如下:

bluetoothradio.cs

分析:public

enum bluetoothradiomode : int

;api:

bool dispose() 設定藍芽裝置執行被發現或讀取當前藍芽裝置是否允許被發現

bluetoothradiomode bluetoothradiomode() 設定或去讀當前藍芽狀態

bluetoothdevicecollection paireddevices() 獲取配對裝置集

class bluetoothradio :bluetoothradio() 初始化藍芽系統構造類

bluetoothendpoint.cs

分析:class bluetoothendpoint 藍芽端點構造類。

構造時包含deviceaddress ,serviceguid,port三個值。

bluetoothservice.cs

分析:class bluetoothservice:bluetoothservice(guid serviceguid) 藍芽服務端構造類,執行該構造類的應該是藍芽通訊中的主裝置。

void start() 啟動服務

void stop() 停止服務

bool started 獲取服務狀態,啟動或停止

bool connectionpending 指示是否有乙個客戶端等待連線到本服務上。

networkstream acceptconnection() 接受乙個連線,執行該函式後,該函式會掛起直到乙個客戶端連線上來。

guid serviceguid 返回本服務的guid

standardservices.cs

分析:class standardservices:standardservices()

標準的藍芽服務列表的guid

guid serialportserviceguid 返回串列埠服務對應的guid

registry.cs

分析:class registry 封裝的登錄檔操作類。

safenativemethods.cs

分析:class safenativemethods 構造類。

匯入以下類庫的api:

const

string bthutil_dll = "bthutil.dll";

const

string btdrt_dll = "btdrt.dll";

const

string winsock_dll = "ws2.dll";

const

string core_dll = "coredll.dll";

bluetoothdevicecollection.cs

分析:class bluetoothdevicecollection 藍芽裝置集類,實際為乙個arraylist();

實測程式例子:

伺服器端:

private

void

setradiomode()

}private

void

startservice()

}// clear and close stream

ns.flush();

ns.close();

}//////

//////

//////

//////

//////

//////

//////

int main()

客戶端:

private

void

paireddevices()

connectservice(devices[0] as bluetoothdevice);

}private

void

connectservice(bluetoothdevice device)

system.threading.thread.sleep(500);

}// close network stream

ns.close();

}int main()

特別說明:

windows embedded source tools for bluetooth不支援自發現功能,所以在客戶端的裝置首先要和服務端的裝置進行配對,所謂配對就是把對端的資訊寫入登錄檔裡面。paireddevices()取出配對資訊,其實就是從登錄檔裡面取資訊,windows embedded source tools for bluetooth這個功能也寫得不好,如果在wince下使用需要修改bluetoothradio.cs檔案的paireddevices屬性。

//const string bt_device_key_name = "software\\microsoft\\bluetooth\\device";

const

string bt_device_key_name = "software\\microsoft\\bluetooth\\device\\pan"; //wince 5

**4在wince下,登錄檔的位置取決於配對裝置的型別,見下圖。

圖1不同型別的配對裝置放在不同的目錄下。

但是在windows mobile下,所有配對資訊存放於software\\microsoft\\bluetooth\\device下。

圖2從上面的例子看windows embedded source tools for bluetooth的功能不是很完整,沒有自動發現功能,也就是通訊雙方在通訊之前需要配對成功,因此這樣很不方便。而且windows embedded source tools for bluetooth只是支援 microsoft windows stack,不支援broadcom stack,後面文章會介紹另外乙個的開源庫32feet.net。這個庫支援自發現功能,同時部分支援broadcom stack。

拷貝工具包

常用工具包封裝.懶得引各種雜七八的包,輕量級包.cglib還是需要的 scope provided 1.0.0 copyutils beancopier封裝.提供簡單的單一複製與list複製.不支援自定義建構函式的類的複製.abc abc copyutil copysigle abc class o...

PyTorch開源物體檢測工具包

mmdetection是乙個基於pytorch的開源物體檢測工具包。該工具包採用模組化設計,支援多種流行的物體檢測和例項分割演算法,並且可以靈活地進行拓展,在速度和視訊記憶體消耗上也具有優勢。目前已經支援單階段檢測器如ssd retinanet fcos fsaf,兩階段檢測器如fasterr cn...

包安裝Python識別驗證碼的開源工具 包安裝

本篇文章個人在青島喝咖啡的時候突然想到的.這兩天就有想寫幾篇關於包安裝的文章,所以回家到之後就奮筆疾書的寫出來發布了 各位 蜘蛛俠 們大家可能在抓取面頁中的 驗證碼而銘心鏤骨,關於這點我想我前目可能能幫助下大家,在python中找到最接近與 殺手別級 的 工具 源於 開源,好東西不敢獨享 調下大家的...