新聞中心

EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > 基于Windows CE.NET實(shí)現(xiàn)藍(lán)牙通訊模塊的幾種方法

基于Windows CE.NET實(shí)現(xiàn)藍(lán)牙通訊模塊的幾種方法

作者: 時(shí)間:2010-11-29 來源:網(wǎng)絡(luò) 收藏
    • [摘要]: 通訊技術(shù)在產(chǎn)品中的應(yīng)用具有極為廣闊的前景,微軟公司的WindowsCE.NET已經(jīng)成為了主流的操作系統(tǒng)之一。論文給出了在 VisualStudio2005中利用托管碼并分別采用P/Invoke技術(shù)、微軟工具包、OpenNETCF類庫和利用本機(jī)碼來開發(fā) WindowsCE.NET操作系統(tǒng)下通訊模塊的幾種方法,并在其中對(duì)P/Invoke技術(shù)、托管碼開發(fā)、本機(jī)碼開發(fā)等幾個(gè)關(guān)鍵技術(shù)進(jìn)行了闡述。最 后給出了利用托管碼和本機(jī)碼開發(fā)藍(lán)牙通訊模塊這幾種方法的優(yōu)劣比較和分析。其內(nèi)容對(duì)于在Windowsmobile平臺(tái)下開發(fā)藍(lán)牙設(shè)備間的通訊具有一定 實(shí)用價(jià)值。
      關(guān)鍵詞:藍(lán)牙WindowsmobileP/Invoke托管碼本機(jī)碼
      0引言
      自1998年,世界九大電子產(chǎn)業(yè)巨頭共同發(fā)起藍(lán)牙特殊利益集團(tuán)SIG后,在短短不到十年之內(nèi),藍(lán)牙技術(shù)已經(jīng)被應(yīng)用到如信息家電、電子商務(wù)、汽車、航空、醫(yī) 療、交通等多個(gè)領(lǐng)域。在移動(dòng)計(jì)算方面,藍(lán)牙技術(shù)采用了一種極為經(jīng)濟(jì)的形式解決了無線通訊“最后10m”的問題,從而替代了各種移動(dòng)信息電子設(shè)備之間的電 纜。因此,藍(lán)牙技術(shù)在移動(dòng)計(jì)算領(lǐng)域的應(yīng)用將十分廣闊,它的應(yīng)用開發(fā)也就有很大的實(shí)際意義。
      微軟公司從1996年起開發(fā)了嵌入式操作系統(tǒng)WindowsCE1.0開始,憑借著其在PC市場(chǎng)上的成功經(jīng)驗(yàn)和WindowsCE類似于PC機(jī)上操作系統(tǒng)的作者簡介:白煒(1980-),男,碩士研究生,研究方向?yàn)榍度胧较到y(tǒng)。
      導(dǎo)師簡介:白萬民,教授,研究方向?yàn)榍度胧较到y(tǒng)、計(jì)算機(jī)應(yīng)用。
      友好熟悉的界面逐漸擴(kuò)大著自己在嵌入式操作系統(tǒng)市場(chǎng)的份額。Windowsmobile平臺(tái)是微軟公司針對(duì)嵌入式環(huán)境下開發(fā)的一套嵌入式操作系統(tǒng),其主要 是指WindowsCE.NET,WindowsCE.NET的最新版本為WindowsCE5.0,其中包括3個(gè)版本:以數(shù)據(jù)為中心的掌上電腦 PocketPC;以語音為中心的智能手機(jī)SmartPhone;以娛樂為中心的便攜式媒體中心PortableMediaCenters。而在 這3個(gè)版本中都可能涉及到藍(lán)牙應(yīng)用的開發(fā)。
      在WindowsCE.NET的開發(fā)上,目前采用微軟公司2005年年底推出的VisualStudio2005是最理想的選擇。用 VisualStudio2005可以進(jìn)行利用C#,或VB.NET等語言開發(fā)基于.NETCompactFramework2.0或1.0的 托管碼WinCE程序,也可以利用C++語言來開發(fā)基于MFC,ATL或Win32API的本機(jī)碼WinCE程序。
      因?yàn)樵谖④涀钚碌模甆ETCompactFramework2.0的類庫中還未包含針對(duì)藍(lán)牙通訊模塊的類庫,而且目前關(guān)于在WindowsCE中開發(fā)藍(lán)牙通訊模塊應(yīng)用程序的介紹還很少,同時(shí)開發(fā)藍(lán)牙通訊技術(shù)的應(yīng)用需要十分廣泛,所以本文將就此進(jìn)行一些討論。
      1基于托管碼開發(fā)藍(lán)牙通訊模塊
      基于托管碼的開發(fā)就是使用一套運(yùn)行時(shí)環(huán)境(run-timeenvironment)的應(yīng)用程序接口來開發(fā)。
      一般情況下,托管碼應(yīng)用程序的開發(fā)會(huì)比較簡單和快速,并且可跨軟件平臺(tái)和處理器來運(yùn)行,所以開發(fā)出的托管碼也能重新使用并有較高的可移植性。
      另外,內(nèi)存管理、資源管理、資源收集、安全性管理等瑣碎工作都由運(yùn)行時(shí)環(huán)境來處理。應(yīng)用程序開發(fā)工程師不必費(fèi)心處理。托管應(yīng)用程序在目標(biāo)機(jī)器上運(yùn)行,是通過目標(biāo)機(jī)器端的實(shí)時(shí)編譯器來實(shí)時(shí)把托管碼編譯成目標(biāo)機(jī)器碼后在目標(biāo)機(jī)器上執(zhí)行。
      由于在.NET平臺(tái)下,采用CLR(公共語言運(yùn)行時(shí))可以用不同的語言來調(diào)用.NETCompactFramework來開發(fā)相同功能的應(yīng)用程序,所以本文托管碼部分僅采用C#語言為例來介紹藍(lán)牙通訊模塊開發(fā)。
      1.1利用P/Invoke方法編寫藍(lán)牙通訊模塊
      藍(lán)牙通訊模塊是一個(gè)涉及到驅(qū)動(dòng)硬件的應(yīng)用程序開發(fā),而.NETCompactFramework并不是一個(gè)對(duì)Win32API進(jìn)行了完整封裝的類庫。 所以在基于托管碼開發(fā)藍(lán)牙通訊模塊中必須利用到托管代碼如何與非托管代碼交互技術(shù)。P/Invoke全稱為PlatformInvoke,是.NET開 發(fā)平臺(tái)下允許托管代碼調(diào)用DLL庫的本地代碼函數(shù)的服務(wù),類似于JA-VA中的GNI的概念。圖1說明了P/Invoke方法的工作原理。首先用相應(yīng)語言 的編譯器將托管的源代碼編譯成Assembly的形式,其中包括元數(shù)據(jù)和中間語言代碼。而此時(shí)P/Invoke的聲明會(huì)以元數(shù)據(jù)的形式存在于 Assembly中,當(dāng)Assembly被CLR調(diào)用的時(shí)候,CLR會(huì)根據(jù)元數(shù)據(jù)的聲明在對(duì)應(yīng)的DLL函數(shù)中查找DLL的實(shí)現(xiàn)。如果找到,就將其加載到內(nèi) 存中,并定位此DLL函數(shù)的人口點(diǎn)。將托管的參數(shù)人棧,并將函數(shù)的人口點(diǎn)指向?qū)?yīng)的nativedll,從而完成了托管代碼調(diào)用非托管代碼的DLL。

      本文引用地址:http://butianyuan.cn/article/156912.htm

      linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

      c++相關(guān)文章:c++教程



      上一頁 1 2 3 下一頁

      關(guān)鍵詞: 藍(lán)牙 嵌入式

      評(píng)論


      相關(guān)推薦

      技術(shù)專區(qū)

      <track id="jht1o"><thead id="jht1o"></thead></track>