天天被操天天被操综合网,亚洲黄色一区二区三区性色,国产成人精品日本亚洲11,欧美zozo另类特级,www.黄片视频在线播放,啪啪网站永久免费看,特别一级a免费大片视频网站

現(xiàn)在位置:范文先生網(wǎng)>理工論文>電子通信論文>Windows CE中實(shí)現(xiàn)藍(lán)牙串口驅(qū)動(dòng)程序

Windows CE中實(shí)現(xiàn)藍(lán)牙串口驅(qū)動(dòng)程序

時(shí)間:2023-02-20 23:37:17 電子通信論文 我要投稿
  • 相關(guān)推薦

Windows CE中實(shí)現(xiàn)藍(lán)牙串口驅(qū)動(dòng)程序

摘要:藍(lán)牙通信平臺(tái)在嵌入式系統(tǒng)的實(shí)現(xiàn)過(guò)程中,OBEX(對(duì)象交換)始終是很重要的一部分,基于OBEX的藍(lán)牙文件傳輸?shù)玫綇V泛應(yīng)用。而OBEX的實(shí)現(xiàn)是基于藍(lán)牙仿真接口,所以藍(lán)牙串口驅(qū)動(dòng)程序的實(shí)現(xiàn)就有了很重要的意義。介紹了Windows CE下串口驅(qū)動(dòng)程序的結(jié)構(gòu)和一種具體的實(shí)現(xiàn)方法。

    關(guān)鍵詞:藍(lán)牙 OBEX 嵌入式系統(tǒng) 驅(qū)動(dòng)程序

Windows CE作為一種典型的嵌入式操作系統(tǒng),通過(guò)將藍(lán)牙應(yīng)用移植到Widows CE中,對(duì)于如pSOS+、Nucleus等其它嵌入式系統(tǒng),具有典型意義。由于OBEX上的文件傳輸應(yīng)用建立在RFCOMM實(shí)現(xiàn)的藍(lán)牙仿真串口上,本文介紹OBEX文件傳輸?shù)乃{(lán)牙虛擬串口驅(qū)動(dòng)程序的實(shí)現(xiàn)。

1 Windows CE設(shè)備驅(qū)動(dòng)程序概述

Windows CE支持廣泛的基于各種CE平臺(tái)的設(shè)備驅(qū)動(dòng)程序。目前,它提供了四種設(shè)備模型,其中兩種是專(zhuān)用于Windows CE的模型,另外兩種外部模型來(lái)自其它操作系統(tǒng);赪indows CE的兩種模型是本機(jī)的設(shè)備驅(qū)動(dòng)程序和流接口驅(qū)動(dòng)程序。兩種外部模型用于通用串行總線(USB)和網(wǎng)絡(luò)驅(qū)動(dòng)器接口標(biāo)準(zhǔn)(NDIS)的驅(qū)動(dòng)程序。

由于藍(lán)牙協(xié)議是在無(wú)線技術(shù)下的仿真串口,藍(lán)牙中OBEX的許多應(yīng)用正是基于藍(lán)牙仿真串口。而流接口驅(qū)動(dòng)程序通過(guò)一組流接口函數(shù)使得應(yīng)用程序可以通過(guò)文件系統(tǒng)中的特殊文件而與設(shè)備接口,因此藍(lán)牙仿真串口的功能性更適合流接口驅(qū)動(dòng)程序的結(jié)構(gòu)。

圖1

2 Windows CE下藍(lán)牙串口驅(qū)動(dòng)程序的實(shí)現(xiàn)

雖然藍(lán)牙設(shè)備驅(qū)動(dòng)程序的實(shí)現(xiàn)采用流接口驅(qū)動(dòng)程序設(shè)計(jì),但由于兩種驅(qū)動(dòng)程序的基本結(jié)構(gòu)與原理相似,所以下文從本機(jī)設(shè)備驅(qū)動(dòng)程序結(jié)構(gòu)開(kāi)始,可以更清楚地認(rèn)識(shí)藍(lán)牙設(shè)備驅(qū)動(dòng)程序的實(shí)現(xiàn)原理。

2.1 本機(jī)設(shè)備驅(qū)動(dòng)程序結(jié)構(gòu)

Windows CE中包含的樣本設(shè)備驅(qū)動(dòng)程序分為兩種類(lèi)型:?jiǎn)纹?qū)動(dòng)程序(Monolithic device driver)和分層的驅(qū)動(dòng)程序(Layered Devicedriver)。單片驅(qū)動(dòng)程序基于單個(gè)碼片,該碼片直接把硬件設(shè)備的功能性通過(guò)設(shè)備驅(qū)動(dòng)程序接口傳遞給操作系統(tǒng)。與單片驅(qū)動(dòng)程序相比,分層的驅(qū)動(dòng)程序由兩個(gè)設(shè)置好的層組成:上層是模型設(shè)備驅(qū)動(dòng)程序(MDD),下層是依賴(lài)平臺(tái)的驅(qū)動(dòng)程序(PDD)。本文采用分層的驅(qū)動(dòng)程序來(lái)連接藍(lán)牙硬件和上面的文件傳輸應(yīng)用。圖1說(shuō)明了兩種驅(qū)動(dòng)程序是如何在Windows CE操作系統(tǒng)中集成的。

設(shè)備驅(qū)動(dòng)程序接口(DDI)是在MDD中實(shí)現(xiàn)的函數(shù)集,GWES模塊通過(guò)這個(gè)接口調(diào)用設(shè)備驅(qū)動(dòng)程序;設(shè)備驅(qū)動(dòng)程序服務(wù)器提供接口(DDSI)是在PDD中實(shí)現(xiàn)的函數(shù)集并由MDD調(diào)用。由于微軟提供了所有與MDD模塊相關(guān)的源代碼,所以對(duì)這部分不用做任何改動(dòng),只需將自己的PDD模塊與MDD模塊鏈結(jié)成一個(gè)公用庫(kù)。

理解了本機(jī)設(shè)備驅(qū)動(dòng)程序的結(jié)構(gòu)后,從圖1右邊不難看出,流接口驅(qū)動(dòng)程序只是把流接口作為它們的DDI使用。在這種情況下,不必要把這些驅(qū)動(dòng)程序與GWES模塊邏接起來(lái)。它們以普通的DLL方式存在并根據(jù)需要被調(diào)用。

2.2 藍(lán)牙仿真串口驅(qū)動(dòng)程序?qū)崿F(xiàn)

藍(lán)牙仿真串口是用藍(lán)牙RFCOMM協(xié)議實(shí)現(xiàn)無(wú)電纜的無(wú)線串口通信,與本機(jī)設(shè)備驅(qū)動(dòng)程序一樣,實(shí)現(xiàn)流接口的串口驅(qū)動(dòng)程序同樣只需實(shí)現(xiàn)藍(lán)牙的PDD模塊。

PDD模塊包括四部分:第一部分是必須自己實(shí)現(xiàn)的所有DDSI接口;第二部分是藍(lán)牙協(xié)議棧包括FRCOMM、SDP、L2CAP以及HCI實(shí)體;第三部分是HCI傳輸層通過(guò)UART或者USB接口連接到藍(lán)牙硬件;最后一部分是為藍(lán)牙應(yīng)用提供的圖形界面接口和控制端口模塊,用來(lái)對(duì)整個(gè)協(xié)議棧初始化、藍(lán)牙硬件初始化、搜索附近的藍(lán)牙設(shè)備以及發(fā)現(xiàn)指定設(shè)備上的服務(wù)。如圖2所示。

在圖2所示的藍(lán)牙仿真串口驅(qū)動(dòng)程序的系統(tǒng)結(jié)構(gòu)中,設(shè)備管理程序是用戶(hù)層的程序,在基于Windows CE的平臺(tái)上不停地運(yùn)行著。設(shè)備管理程序不是內(nèi)核的一部分,但它是與內(nèi)核、注冊(cè)表和注接口驅(qū)動(dòng)程序DLL有相互影響的單獨(dú)部分。它主要執(zhí)行以下任務(wù):

HWOBJ BluetoothObj={ /*描述藍(lán)牙仿真串口特征*/

(PDEVICE_LIST)&SerDL,

THREAD_IN_PDD,/*中斷處理全部由PDD層處理*/

0,

NULL,

(PHW_VTBL)&BluetoothVTbl/*包含需要實(shí)現(xiàn)的所有標(biāo)準(zhǔn)串口DDSI函數(shù)的列表*/

};

HWOBJ BluetoothCTRLObj={/*描述藍(lán)牙控制端口特征*/

(PDEVICE_LIST)&SerDL,

THREAD_IN_PDD,

0,

NULL,

(PHW_VTBL)&CTRLVTb1

};

PHWOBJ rgpHWObjects[]={/*包含兩個(gè)PDD實(shí)例的數(shù)組*/

&BluetoothObj,

&BluetoothCTRLObj

};

DEVICE_LIST SerDL={/*存儲(chǔ)設(shè)備驅(qū)動(dòng)程序中所有串口設(shè)備*/

“CESerial.dll”,/*串口驅(qū)動(dòng)程序的名字*/

sizeof(rgpHWObjects)/sizeof(PHWOBJ),/*串口設(shè)備的數(shù)目*/

regHWObjects

};

PDEVICE_LIST GetSerialObject(VOID)

{

return (&SerDL);

}

圖2

    在串口驅(qū)動(dòng)程序中注冊(cè)了兩個(gè)串口設(shè)備后,就要實(shí)現(xiàn)這兩個(gè)PDD實(shí)例對(duì)應(yīng)的流接口函數(shù)。微軟為要實(shí)現(xiàn)的串口PDD模塊提供了一個(gè)HWOBJ(Haredware Object)類(lèi)型的串行對(duì)象表,這個(gè)結(jié)構(gòu)列出了實(shí)現(xiàn)串口驅(qū)動(dòng)的所有接口函數(shù)指針。見(jiàn)下面的描述:

typedef struct _HW_VTBL{

PVOID(*HWInit)(ULONG Identifier,PVOID pMDDCon-text,PHWOBJ pHWObj);

…,

…,

BOOL(*HWIoct1)(PVOID pHead,DWORD dwCode,

PBYTE pBufIn,DWORD dwLenIn,PBYTE pBufOut,DWORD

DwLenOut,PDWORDpdwActualOut);

} HW_VTBL,*PHW_VTBL;

用戶(hù)通過(guò)修改串行口PDD的串行對(duì)象表改變函數(shù)集或函數(shù)名。下面的結(jié)構(gòu)BluetoothVTbl的定義了藍(lán)牙仿真串口DDSI函數(shù)的名稱(chēng)。

Const HW_VTBL BluetoothVTbl={

BluetoothInitSerial,

…,

…,

BluetoothIoctl

};

同樣用結(jié)構(gòu)變量CTRLVTbl定義了控制端口的DDSI函數(shù)名列表。由于這個(gè)串口設(shè)備用作內(nèi)部實(shí)現(xiàn)特殊的功能,下面只列出了需要關(guān)心的主要函數(shù)名。

Const HW_VTBL CTRLVTbl={

CTRLInitSerial,

CTRLDeinit,

CTRLOpen,

CTRLClose,

…,

…,

CTRLIoctl

};

藍(lán)牙作為一個(gè)驅(qū)動(dòng)新經(jīng)濟(jì)的引擎,將會(huì) 對(duì)以嵌入式系統(tǒng)為主的“后PC機(jī)”時(shí)代的到來(lái)產(chǎn)生巨大的推動(dòng)作用,同時(shí)它還將面臨來(lái)自象IrDA、802.11、HomeRF等無(wú)線通信技術(shù)的挑戰(zhàn)。而將OBEX成功引入藍(lán)牙,使得在嵌入式系統(tǒng)下工作的藍(lán)牙通信設(shè)備上傳輸文件、同步、打印等應(yīng)用成為可能,因此在藍(lán)牙中起著舉足輕重的作用。


【W(wǎng)indows CE中實(shí)現(xiàn)藍(lán)牙串口驅(qū)動(dòng)程序】相關(guān)文章:

Windows CE下串行通信的實(shí)現(xiàn)08-06

Windows下多串口的配置與使用08-06

藍(lán)牙技術(shù)硬件實(shí)現(xiàn)模式分析08-06

金剛石合成控制系統(tǒng)中多串口通信技術(shù)的設(shè)計(jì)與實(shí)現(xiàn)08-06

金剛石合成控制系統(tǒng)中多串口通信技術(shù)的設(shè)計(jì)與實(shí)現(xiàn)08-06

Windows CE.net的智能移動(dòng)信息終端設(shè)計(jì)08-06

在CPLD管理下實(shí)現(xiàn)高效多串口中斷源08-06

基于Winodws CE的嵌入式網(wǎng)絡(luò)監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)08-06

windows nt環(huán)境下fddi網(wǎng)卡驅(qū)動(dòng)程序設(shè)計(jì)08-06