C#開發(fā)CF藍牙模塊深入剖析
C#語言有很多值得學(xué)習(xí)的地方,這里我們主要介紹C#開發(fā)CF藍牙模塊,包括介紹那么藍牙設(shè)備的DeviceID什么樣子等方面。
在Windows Mobile軟件開發(fā)中.Net正扮演著日益重要的角色,我們已經(jīng)可以看到很多用.Net CF開發(fā)的軟件,這些軟件涉及到了日常應(yīng)用的方方面面。在智能設(shè)備的軟件開發(fā)中,無線互聯(lián)是一個相當(dāng)重要的一塊,我們可以看到,紅外幾乎是所有智能設(shè)備的標(biāo)配,而藍牙也日益在越來越多的智能設(shè)備上出現(xiàn),有了硬件,顯然要有相應(yīng)的軟件相關(guān)的應(yīng)用。
我們也知道,用.NET CF開發(fā)紅外通信應(yīng)用時相當(dāng)輕松的,因為.NET CF中有一個命名空間System.Net.IrDA就是用于紅外通信的通信模塊。但是,.NET CF中還沒有關(guān)于藍牙通信的模塊,所以目前來講做這方面的開發(fā)還有一定的困難。下面,就談?wù)勅绾斡肅#開發(fā)CF藍牙模塊。
基本要點
首先明確一點,因為涉及到驅(qū)動硬件的問題,所以僅靠了解C#開發(fā)的相關(guān)知識顯然是無法完成開發(fā)的,我們必須對C++開發(fā)有所了解。但是為了簡單起見,我們不希望用C++寫半行代碼,所有的編碼工作全部使用C#,也就是說,使用的開發(fā)環(huán)境只需要使用Visual Studio.net,不需要用其他的編輯器。
作為開發(fā)這類驅(qū)動硬件的程序的知識準(zhǔn)備,您需要了解C++的基本知識,知道頭文件是怎么一回事,知道托管代碼如何與非托管代碼交互。因為本文的核心是說明如何開發(fā).net CF藍牙通信模塊,所以前述這些準(zhǔn)備知識并不作講述。
C#開發(fā)CF藍牙模塊
做藍牙通信模塊開發(fā),自然先要知道藍牙通信是怎么一回事。在我看來,藍牙通信應(yīng)該和紅外通信模塊類似,當(dāng)然我是從開發(fā)者的角度來講,抽象化以后應(yīng)該就是這樣,當(dāng)然藍牙和紅外通信也有很多不一樣的地方,這在面向?qū)ο笤O(shè)計里面怎么講,我想一定有很多人理解的比我透徹。好了,這就是我們的基本思路了。我曾經(jīng)在網(wǎng)上查過關(guān)于藍牙開發(fā)的文章,很多人在.net CF開發(fā)中把藍牙通信當(dāng)作一個串行通信來處理,這也是不錯的,但是我不是很喜歡,因為這樣做的話,并不是針對藍牙來開發(fā)的,換言之,在使用過程中,需要先手動開啟藍牙,配對,連接,建立串行通道,然后開啟應(yīng)用程序使用,你還要在應(yīng)用程序中設(shè)置串行端口,對最終用戶來講,這是非常麻煩的。我覺得,這樣的解決方案冠上藍牙通信的名頭簡直就是……不多說了,書歸正傳。
在紅外通信中,我們知道,設(shè)備的DeviceID是一個Byte數(shù)組,那么藍牙設(shè)備的DeviceID什么樣子呢?我想這個大家都很清楚,是一串以“:”分隔的16進制數(shù)字。紅外通信中,一般而言紅外并沒有開啟、關(guān)閉之類的狀態(tài),但是藍牙有開啟、關(guān)閉、可發(fā)現(xiàn)三種狀態(tài)。紅外沒有安全設(shè)置,而藍牙有安全設(shè)置,所以我們需要對藍牙設(shè)備進行配對,而紅外通信這部需要。
我們查看.net的Socket地址族里有IrDA,但是沒有藍牙相關(guān)的地址族,這是我們需要解決的問題。以上介紹C#開發(fā)CF藍牙模塊。
【編輯推薦】