基于Windows CE.NET實(shí)現(xiàn)藍(lán)牙通訊模塊的幾種方法
1.2利用微軟藍(lán)牙嵌入式工具包編寫藍(lán)牙通訊模塊
微軟藍(lán)牙嵌入式工具包是微軟公司新推出來基于.NETCompactFramework2.0的一款專門用來快速開發(fā)藍(lán)牙應(yīng)用程序的工具包,直接 在.NET平臺(tái)下直接調(diào)用其中類庫,可以快速,簡(jiǎn)單的開發(fā)一般的藍(lán)牙應(yīng)用程序。不過該工具包只能在WindowsCE5.0下使用。利用工具包可以完 成:?jiǎn)?dòng)一個(gè)藍(lán)牙服務(wù),尋找周邊藍(lán)牙設(shè)備,連接已存在的藍(lán)牙設(shè)備或者服務(wù)。工具包可以在微軟網(wǎng)站下載。
利用此工具做兩個(gè)藍(lán)牙設(shè)備間進(jìn)行簡(jiǎn)單文本傳輸?shù)某绦虿糠执a如下:
Server端:
GuidserviceGuid=newGuid({81553B2B-FFOB-4415-86C9-22B799058B81});
ServerHandlesh=btseore.CreateService(ser-viceGuid);
NetworkStreamns=sh.AceeptConnection()StingdataToSend=Hello;
Byte[]dataBuffer=System.Text.ASCIIEncoding.ASCII.GetBytes(dataToSend);
ns.Write(dataBuffer,0,dataBuffer.Length);
ns.Flush();
ns.Close();
Client端:
PairedDevices=btsCore.GetPairedDevices();
Foreach(BluetoothDevicedeviceinpairedDevices)
{pairedDevicesListBox.Item.Add(device.deviceName);}
GuidserviceGuid=newGuid({01550D2D-FF0D-4415-86C9-22B799058B81});
If(pairedDevicesListBox.SelectedIndex=0);
{BluetoothDevicedeviceToConnect=(BluetoothDevice)pairedDevices[pairedDevicesListBox.Selected];
NetworkStreamns=btsCore.Connect(deviceTo-Connect,serviceGuid);
byte[]buffer=newbyte[2000]
ns.Read(buffer,0,50);
char[]bufferAsChars=System.Text.ASCII.GetChars(buffer)
System.Strings=System.Text.Encoding.ASCIIGetString(buffer,0,buffer,length);
Message.Show(s)
ns.Close();}
1.3利用OpenNETCF編寫藍(lán)牙通訊模塊
OpenNETCF是一個(gè)可以有效提高WindowsMobile開發(fā)效率的第三方開源類庫。是一幫WindowsMobile愛好者共同編寫的,里 面提供了很多在.NETCompactFramework2.0中未能包含的類庫。有兩種方式可以來使用它:一種是可以將其當(dāng)作一個(gè)組件安裝在 VisualStudio2005中;另一種是可以將其原代碼編輯拿來使用。在OpenNETCF開源類庫中就包括有藍(lán)牙方面的,所以也可以利用 OpenNETCF來編寫藍(lán)牙通訊模塊。對(duì)應(yīng)類庫可在WWW.opennetcf.com網(wǎng)站下載。在類庫中,可以利用命名空間 OpenNETCF.IO.Ports下的Blue-toothSerialPort來建立藍(lán)牙連接,利用命名空間 OpenNETCF.IO.Serial中內(nèi)容進(jìn)行藍(lán)牙程序的通訊。
2基于本機(jī)碼開發(fā)藍(lán)牙通訊模塊
本機(jī)碼應(yīng)用程序是使用一套特定軟件平臺(tái)的應(yīng)用程序開發(fā)接口來開發(fā),并且被編譯成一個(gè)特定處理器的目的碼或機(jī)器碼。一般情況下,本機(jī)碼提供較高的效能和最小 的資源要求,但是被編譯好的本機(jī)碼或是可執(zhí)行文件卻只能在此軟件平臺(tái)或特定處理器上運(yùn)行。此外,本機(jī)碼應(yīng)用程序常需要應(yīng)用開發(fā)者自行處理類似內(nèi)存管理、資 源管理、安全性管理等。在VisualStudio2005中已經(jīng)可以利用C++語言來開發(fā)基于MFC,ATL或Win32API的本機(jī)碼WinCE 程序。這就提供了類似于用eMbeddedVisualC++來開發(fā)windowsmobile設(shè)備的方法。而本文在利用P/Invoke方法編寫 藍(lán)牙通訊模塊時(shí)介紹的就是調(diào)用本機(jī)碼開發(fā)藍(lán)牙應(yīng)用程序,方
法類似,所以此處就不再進(jìn)行具體的分析了。
3結(jié)束語
本文討論了在VisualStudio2005里分別利用托管碼和本機(jī)碼來開發(fā)Windowsmobile設(shè)備藍(lán)牙通訊模塊的幾種方法。文中介紹的 藍(lán)牙通訊模塊各種開發(fā)方法都有各自的優(yōu)點(diǎn)和缺點(diǎn),如果用戶開發(fā)的藍(lán)牙通訊設(shè)備需要較高的效能和最小的資源要求,一定是采用本機(jī)碼的方法來開發(fā)是最好的。因 為采用本機(jī)碼開發(fā)的程序是直接被編譯成機(jī)器碼來執(zhí)行的,從而可以獲得更高的性能。但是采用本機(jī)碼來開發(fā)程序的最大缺點(diǎn)就是開發(fā)難度大,開發(fā)周期長,所以并 不適用于一般要求的用戶。而在對(duì)效能和資源要求并不是很高的產(chǎn)品中采用文中所述的托管碼中的幾種方法來開發(fā)藍(lán)牙通訊模塊則是更好的選擇,用托管碼開發(fā)的程 序會(huì)比較的簡(jiǎn)單和快速,同時(shí)又由于其并不直接生成最終的機(jī)器代碼,而是生成了中間代碼來執(zhí)行,所以用托管碼開發(fā)的程序可以跨平臺(tái)和處理器來運(yùn)行,但是這是 以犧牲一定的訪問速度為代價(jià)的。在基于托管碼開發(fā)藍(lán)牙通訊設(shè)備中本文共介紹了3種方法,因?yàn)榈?NETFRAMEWORK2.0的時(shí)候微軟公司都沒有 開發(fā)針對(duì)藍(lán)牙通訊模塊的類庫,所以利用P/Invoke方法編寫藍(lán)牙通訊模塊是在托管碼下開發(fā)藍(lán)牙通訊模塊比較常見的選擇。而微軟藍(lán)牙嵌入式工具包和 OpenNETCF類庫編寫藍(lán)牙通訊模塊方法比較類似,其都是類庫對(duì)底層API的類封裝,所以開發(fā)起來較為簡(jiǎn)單和快速,更適合于一般要求的藍(lán)牙通訊模塊的 開發(fā)。
藍(lán)牙設(shè)備在嵌入式環(huán)境下的應(yīng)用有著十分廣闊的前景,目前還有很多工作尚需研究。解決如何在Windowsmobile平臺(tái)下開發(fā)更好更高效的藍(lán)牙應(yīng)用程序能夠推動(dòng)藍(lán)牙技術(shù)在嵌入式產(chǎn)品上的更好利用。這一方面的開發(fā)將具有極強(qiáng)的實(shí)用性,將成為以后研究工作的重點(diǎn)。
本文引用地址:http://butianyuan.cn/article/156912.htm linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
c++相關(guān)文章:c++教程
評(píng)論