在线观看国产区-在线观看国产欧美-在线观看国产免费高清不卡-在线观看国产久青草-久久国产精品久久久久久-久久国产精品久久久

美章網(wǎng) 精品范文 接口設(shè)計(jì)論文范文

接口設(shè)計(jì)論文范文

前言:我們精心挑選了數(shù)篇優(yōu)質(zhì)接口設(shè)計(jì)論文文章,供您閱讀參考。期待這些文章能為您帶來(lái)啟發(fā),助您在寫(xiě)作的道路上更上一層樓。

接口設(shè)計(jì)論文

第1篇

1.1接口描述當(dāng)傳感器網(wǎng)絡(luò)的Zigbee網(wǎng)關(guān)節(jié)點(diǎn)不斷地將網(wǎng)絡(luò)節(jié)點(diǎn)中監(jiān)測(cè)到的溫度、煙霧等信息發(fā)送給上位機(jī)時(shí),上位機(jī)的通信模塊必須及時(shí)響應(yīng)接收數(shù)據(jù)。數(shù)據(jù)監(jiān)測(cè)上位機(jī)通信接口采用VB6.0中MSComm控件,利用串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通信功能,具體包括2種處理通訊方式,一種是事件驅(qū)動(dòng)通訊,利用OnComm捕獲并處理通訊時(shí)間;另一種是通過(guò)檢查CommEvent的值,來(lái)查詢事件和錯(cuò)誤[5]。設(shè)計(jì)中采用第1種方式,在用戶界面設(shè)置好相應(yīng)的控制參數(shù),如波特率為38400bps、無(wú)校驗(yàn)位、8數(shù)據(jù)位、1位停止位等。當(dāng)傳感器網(wǎng)絡(luò)節(jié)點(diǎn)監(jiān)測(cè)的的溫度、煙霧等信息發(fā)送給上位機(jī)時(shí),將觸發(fā)監(jiān)測(cè)程序中MSComm控件的OnComm事件,進(jìn)而改變ComEvent的值,程序根據(jù)ComEvent的值執(zhí)行相應(yīng)的操作,如解析數(shù)據(jù)、發(fā)送數(shù)據(jù)、錯(cuò)誤分析等,然后更新內(nèi)存節(jié)點(diǎn)樹(shù)中當(dāng)前節(jié)點(diǎn)的實(shí)時(shí)數(shù)據(jù)、采集信息(如溫度、煙霧等)存入數(shù)據(jù)庫(kù)。

1.2實(shí)現(xiàn)方法MSComm控件可以設(shè)置以二進(jìn)制或者以文本方式接收,若設(shè)置為二進(jìn)制接受,控件會(huì)自動(dòng)將其轉(zhuǎn)變成十進(jìn)制。在該系統(tǒng)中,數(shù)據(jù)幀的數(shù)據(jù)是十六進(jìn)制的,設(shè)置以二進(jìn)制方式進(jìn)行接收,從接收緩存中獲取到的是十進(jìn)制的數(shù)據(jù)。

2數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)解析

2.1內(nèi)存中節(jié)點(diǎn)多叉樹(shù)的建立圖2節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)圖通信監(jiān)測(cè)模塊接收數(shù)據(jù)后,為了便于以圖形方式實(shí)時(shí)顯示網(wǎng)絡(luò)拓?fù)浜凸?jié)點(diǎn)監(jiān)測(cè)信息,以及提高查詢數(shù)據(jù)的運(yùn)行速度,需要在內(nèi)存中構(gòu)建一個(gè)動(dòng)態(tài)多叉樹(shù),用于存儲(chǔ)節(jié)點(diǎn)最新的數(shù)據(jù)信息。節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)圖如圖2所示。在內(nèi)存中建立一個(gè)關(guān)于節(jié)點(diǎn)的動(dòng)態(tài)多叉樹(shù),節(jié)點(diǎn)的唯一標(biāo)識(shí)是它的自身ID,根據(jù)數(shù)據(jù)幀中包含的父子關(guān)系可構(gòu)建出一棵多叉樹(shù)。首先定義一個(gè)名為treeNode的類,它的每一個(gè)實(shí)例都代表著一個(gè)節(jié)點(diǎn),里面包含節(jié)點(diǎn)的屬性(例如ID、溫度、煙霧等)和方法(例如獲取類中節(jié)點(diǎn)數(shù)據(jù)的getData方法)。為了將節(jié)點(diǎn)間的父子關(guān)系表現(xiàn)出來(lái),可在類treeNode中定義一個(gè)類型為treeNode的動(dòng)態(tài)數(shù)組NodeChild(),用于存放子節(jié)點(diǎn)。如某節(jié)點(diǎn)ID為0000,子節(jié)點(diǎn)ID為0001,將子節(jié)點(diǎn)0001存放在節(jié)點(diǎn)0000的NodeChild()數(shù)組中,即可完成節(jié)點(diǎn)間的連接。當(dāng)需要找某個(gè)節(jié)點(diǎn)時(shí),從根節(jié)點(diǎn)開(kāi)始查找,若根節(jié)點(diǎn)的孩子沒(méi)有要找的節(jié)點(diǎn),則查找根節(jié)點(diǎn)的孩子的孩子,直到遍歷完所有節(jié)點(diǎn)。當(dāng)某數(shù)據(jù)幀發(fā)送到上位機(jī)時(shí),解析出來(lái)的原始數(shù)據(jù)分別放在相應(yīng)的變量,假設(shè)原始的溫度數(shù)據(jù)是3F4A,數(shù)據(jù)結(jié)構(gòu)中溫度變量名為T(mén)emperature,類型為String,則直接將3F4A轉(zhuǎn)換為String類型存在Temperature中。按上述方法構(gòu)建的動(dòng)態(tài)多叉樹(shù)能夠適應(yīng)網(wǎng)絡(luò)拓?fù)鋭?dòng)態(tài)變化的應(yīng)用場(chǎng)景,相比于定長(zhǎng)的數(shù)組,其更為節(jié)省內(nèi)存,不足之處是查詢算法較復(fù)雜。

2.2數(shù)據(jù)解析通信監(jiān)測(cè)模塊接收到Zigbee網(wǎng)關(guān)節(jié)點(diǎn)發(fā)送來(lái)的一組數(shù)據(jù)(數(shù)據(jù)幀)后,需要對(duì)收到的數(shù)據(jù)進(jìn)行協(xié)議解析,然后根據(jù)解析數(shù)據(jù)建立當(dāng)前動(dòng)態(tài)多叉樹(shù)。由于通信中難以避免數(shù)據(jù)幀出錯(cuò)、截?cái)唷G失等情況,故數(shù)據(jù)解析部分根據(jù)數(shù)據(jù)幀的格式制定了一套協(xié)議,丟棄異常數(shù)據(jù)幀。數(shù)據(jù)幀的部分格式如下:FFXXXXXXXXFF01XXXX02XXXX2FF之間,開(kāi)頭2個(gè)字節(jié)為節(jié)點(diǎn)ID,緊跟的2個(gè)字節(jié)節(jié)點(diǎn)的父ID01代表溫度類型,后面2個(gè)字節(jié)是溫度數(shù)值02代表煙霧類型,后面2個(gè)字節(jié)是煙霧值,依次類推…。2個(gè)FF后的字節(jié)都是數(shù)據(jù),其格式如下:數(shù)據(jù)類型(01,溫度類型)+2個(gè)字節(jié)的數(shù)據(jù)(XXXX)。具體操作流程如圖3所示。首先檢驗(yàn)從串口進(jìn)來(lái)的數(shù)據(jù)幀開(kāi)頭一個(gè)字節(jié)是否FF,若是,則開(kāi)始解析。直到下一個(gè)FF,則節(jié)點(diǎn)ID部分解析結(jié)束,后面都是數(shù)據(jù)。繼續(xù)讀取下一個(gè)字節(jié),若為01,則將后面緊跟的兩個(gè)字節(jié)存進(jìn)相應(yīng)的溫度變量,讀取下一個(gè)字符;若該字節(jié)所表示的數(shù)據(jù)類型未定義則跳過(guò)該字節(jié)及后面緊跟的兩個(gè)字節(jié),繼續(xù)讀取下一個(gè)字符。該過(guò)程一直執(zhí)行直到解析完整個(gè)數(shù)據(jù)幀。由于數(shù)據(jù)幀是不定長(zhǎng)的,而且沒(méi)有結(jié)束字符,所以每收到一個(gè)數(shù)據(jù)幀程序便立即從緩存中讀取并解析,以避免多個(gè)幀合并為一個(gè)數(shù)據(jù)幀導(dǎo)致解析錯(cuò)誤。當(dāng)出現(xiàn)多個(gè)數(shù)據(jù)幀并合情況時(shí),則丟棄后繼的幀。在幀解析完畢后,可以對(duì)解析出來(lái)的監(jiān)測(cè)數(shù)據(jù)信息進(jìn)行處理,將數(shù)據(jù)信息一份存進(jìn)內(nèi)存中節(jié)點(diǎn)多叉樹(shù),一份存進(jìn)數(shù)據(jù)庫(kù),實(shí)現(xiàn)實(shí)時(shí)更新數(shù)據(jù)和記錄當(dāng)前信息。以下是有關(guān)串口通信事件響應(yīng)及數(shù)據(jù)解析的部分代碼:

3數(shù)據(jù)庫(kù)的構(gòu)建與連接

3.1數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)關(guān)系圖如圖4所示。由于每個(gè)節(jié)點(diǎn)都有大量歷史數(shù)據(jù),所以每一個(gè)節(jié)點(diǎn)都創(chuàng)建一個(gè)表;USERS表用于保存監(jiān)測(cè)系統(tǒng)的用戶信息;NodeTran用于保存數(shù)據(jù)幀轉(zhuǎn)發(fā)路徑;Nodelist用于保存節(jié)點(diǎn)列表;Limit用于保存監(jiān)測(cè)系統(tǒng)的閾值管理設(shè)置值;Node_XXXX為節(jié)點(diǎn)XXXX的歷史數(shù)據(jù)表。除了用戶表,所有數(shù)據(jù)都采用varchar類型。

3.2存儲(chǔ)過(guò)程的創(chuàng)建為了提高通信監(jiān)測(cè)模塊與數(shù)據(jù)庫(kù)之間通信的效率,將一些常用且較為復(fù)雜的SQL語(yǔ)句存放在數(shù)據(jù)庫(kù)中,使用時(shí)只需要調(diào)用存儲(chǔ)過(guò)程,輸入必要的參數(shù)即可完成相應(yīng)的SQL語(yǔ)句操作,這樣可以大大減少程序與數(shù)據(jù)庫(kù)之間的通信量。

3.3使用ADO將VB6.0與SQL2005連接ADO是為Microsoft最新和最強(qiáng)大的數(shù)據(jù)訪問(wèn)范例OLEDB而設(shè)計(jì)的,擁有一個(gè)易于使用的應(yīng)用程序?qū)咏涌凇Mㄟ^(guò)使用ADO2.0對(duì)象模型中的Recordset和Connection對(duì)象實(shí)現(xiàn)兩者連接和數(shù)據(jù)的存取。Connection對(duì)象包含關(guān)于某個(gè)數(shù)據(jù)提供程序的信息,如數(shù)據(jù)庫(kù)用戶、密碼、數(shù)據(jù)庫(kù)名等;Recordset對(duì)象包含某個(gè)查詢返回的記錄,可以創(chuàng)建一個(gè)Connection對(duì)象,在同一個(gè)連接上打開(kāi)多個(gè)Recordset對(duì)象[8]。操作流程圖如圖5所示。

4結(jié)語(yǔ)

第2篇

本設(shè)計(jì)采用了Xilinx公司提供的ISE為開(kāi)發(fā)平臺(tái)。ISE軟件是Xilinx公司推出的FPGA/CPLD集成開(kāi)發(fā)環(huán)境,不僅包含了邏輯設(shè)計(jì)所需的一切,還具有大量的簡(jiǎn)便易用的內(nèi)置式工具和向?qū)В沟肐/O分配、功耗分析、時(shí)序驅(qū)動(dòng)設(shè)計(jì)收斂、HDL仿真等關(guān)鍵步驟變得容易而直觀。因此要掌握XilinxFPGA開(kāi)發(fā),就必須掌握ISE。ISE界面友好、操作簡(jiǎn)單、集成度高。利用ISE進(jìn)行FPGA邏輯設(shè)計(jì)的主要流程包括設(shè)計(jì)輸入、功能仿真、設(shè)計(jì)綜合、設(shè)計(jì)實(shí)現(xiàn)和配置下載,簡(jiǎn)易設(shè)計(jì)流程圖如圖1所示。

2ISA總線邏輯接口設(shè)計(jì)

ISA總線:(IndustryStandardArchitecture:工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu))是IBM公司為PC/AT電腦而制定的總線標(biāo)準(zhǔn),也稱為AT標(biāo)準(zhǔn),為8/16位體系結(jié)構(gòu),最高工作頻率為8MHz,數(shù)據(jù)傳輸率大約是16MB/S,地址線24條,可尋訪16M字節(jié)地址單元。由于本文使ISA總線工作在8位I/O傳輸模式,使用了ISA總線信號(hào)中的時(shí)鐘線(ISA_CLK)、地址線(ISA_ADDR):A0~A9、數(shù)據(jù)線(ISA_DATA):D0~D7、讀信號(hào)線(ISA_IOR)、寫(xiě)信號(hào)線(ISA_IOW)、地址鎖存使能(ISA_ALE)、地址選通信號(hào)(ISA_AEN)等。本設(shè)計(jì)采用了與C語(yǔ)言較為相似的VERILOGHDL硬件描述語(yǔ)言對(duì)ISA總線邏輯接口進(jìn)行了描述。

本文要實(shí)現(xiàn)的是ISA接口通過(guò)FPGA訪問(wèn)串口芯片16C554,16C554是內(nèi)部帶有16字節(jié)收發(fā)FIFO的通用異步收發(fā)器,具有獨(dú)立的收發(fā)控制電路。4路標(biāo)準(zhǔn)的MODEM接口,通過(guò)軟件可分別設(shè)置允許每一路中斷。波特率、數(shù)據(jù)幀格式等也都可由軟件編程設(shè)置。具體硬件結(jié)構(gòu)如圖。由圖2可知上位機(jī)通過(guò)ISA總線對(duì)串口芯片16C554串口芯片的訪問(wèn)需要FPGA作為橋接媒介,因此串口芯片的控制信號(hào)均由FPGA給出,其邏輯控制信號(hào)的VERILOG描述如下。當(dāng)上位機(jī)對(duì)串口芯片進(jìn)行讀寫(xiě)時(shí),首先需要通過(guò)FPGA將ISA地址信號(hào)譯碼為芯片的片選信號(hào),設(shè)置串口芯片基地址為0x300,由于9位地址線的低三位為串口芯片的內(nèi)部地址,因此芯片的片選信號(hào)由地址總線的高七位決定。

3結(jié)束語(yǔ)

為了驗(yàn)證基于FPGA的ISA邏輯接口的正確性,將上述邏輯接口利用VERILOG硬件描述語(yǔ)言在賽靈思提供的集成開(kāi)發(fā)環(huán)境ISE中實(shí)現(xiàn)。

第3篇

CY7C68013A固件程序是指在EZ⁃USB芯片內(nèi)部RAM中運(yùn)行的程序代碼,固件程序是USB接口設(shè)計(jì)的核心部分。固件代碼的作用就是控制芯片執(zhí)行指定的設(shè)備功能,即處理上位機(jī)下傳的各種USB設(shè)備請(qǐng)求,控制芯片與電路進(jìn)行數(shù)據(jù)傳輸。EZ⁃USB芯片內(nèi)部集成增強(qiáng)型8051內(nèi)核,USB芯片的固件程序?qū)嶋H上就是單片機(jī)程序文件,可以采用匯編語(yǔ)言或C語(yǔ)言編寫(xiě)。CYPRESS公司提供的EZ⁃USBFX2固件程序開(kāi)發(fā)包中提供了固件程序的基本框架,這為用戶開(kāi)發(fā)基于EZ⁃USBFX2芯片的USB設(shè)備提供了很大的方便。

1.1固件框架固件程序框架主要包括設(shè)備初始化,處理標(biāo)準(zhǔn)USB設(shè)備請(qǐng)求和USB掛起時(shí)的電源管理等。程序框架使用KeilC51編寫(xiě),它是現(xiàn)成的直接可以編譯為HEX文件的8051程序代碼,使用者只需要改寫(xiě)USB描述表,在一些固定函數(shù)下添加功能代碼,主要是EZ⁃USB芯片的初始化配置和實(shí)現(xiàn)USB外設(shè)功能的代碼。固件框架的流程圖如圖2所示[4]。復(fù)位后固件先初始化一些全局變量,然后調(diào)用初始化函數(shù)TD_Init(),該函數(shù)初始化USB設(shè)備到?jīng)]有配置的狀態(tài),并打開(kāi)中斷。循環(huán)1s進(jìn)行一次設(shè)備重枚舉,直到端點(diǎn)0收到一SETUP包,然后進(jìn)入while循環(huán)語(yǔ)句,開(kāi)始TD_Poll任務(wù)處理函數(shù)。依次執(zhí)行下列過(guò)程:(1)TD_Poll()用戶任務(wù)調(diào)度函數(shù);(2)如果發(fā)現(xiàn)USB設(shè)備請(qǐng)求,則分析該請(qǐng)求并執(zhí)行;(3)如果收到USB掛起信號(hào),則調(diào)用TD_Suspend()掛起函數(shù),內(nèi)核掛起,直到出現(xiàn)USB遠(yuǎn)程喚醒信號(hào),調(diào)用TD_Resume(),內(nèi)核喚醒,從新進(jìn)入while循環(huán)。固件框架包含的文件如表1所示。

1.2固件代碼編寫(xiě)USB固件程序主要的功能有2個(gè):一是PC機(jī)的Windows系統(tǒng)能夠檢測(cè)與識(shí)別相應(yīng)設(shè)備;二是數(shù)據(jù)的上傳與下傳。Cypress公司為EZ⁃USBFX2系列芯片提供的固件程序框架極大的簡(jiǎn)化了固件開(kāi)發(fā)。一般的固件開(kāi)發(fā)只需要修改用戶調(diào)度函數(shù)文件Periph.c與USB描述符列表文件Dscr.a51,這兩個(gè)文件在KeilC51編程器中都可打開(kāi)。Periph.c文件中只需要修改TD_Init()與TD_Poll()函數(shù)。在本設(shè)計(jì)中為了能進(jìn)行高速的數(shù)據(jù)傳輸,EZ⁃USB芯片采用SlaveFIFO接口方式。此方式下,USB內(nèi)核不參與數(shù)據(jù)的傳輸,所以TD_Poll()函數(shù)不用寫(xiě)代碼,設(shè)置成空函數(shù)就可以了。這樣USB固件程序的開(kāi)發(fā)主要任務(wù)就是改寫(xiě)TD_Init()函數(shù)與USB描述符列表文件Dscr.a51。在本設(shè)計(jì)中配置端點(diǎn)6傳輸方向?yàn)镮N,傳輸方式為塊傳輸,緩沖大小設(shè)置為1024B,深度為2級(jí),作用是上傳采集的數(shù)據(jù)。配置端點(diǎn)2傳輸方向?yàn)镺UT,傳輸方式為塊傳輸,緩沖大小設(shè)置為1024B,深度為2級(jí),作用是下傳FPGA的命令配置參數(shù)。固件程序的編譯使用KeilμVision2集成編譯環(huán)境,集成編譯環(huán)境中包括有C51編譯器,A51匯編器等工具與調(diào)試器。代碼中還需包含頭文件FX2.h與Fx2regs.h,庫(kù)文件Ezusb.lib。對(duì)修改后的代碼進(jìn)行編譯與鏈接,最后生成HEX文件。HEX文件可直接下載到EZ⁃USB中運(yùn)行。HEX文件也可根據(jù)需要通過(guò)CYPRESS公司提供的EZ⁃USBFX2固件開(kāi)發(fā)包中的Hex2bit.exe應(yīng)用工具生成IIC文件,IIC文件用于燒寫(xiě)到EEPROM中。

2固件程序的裝載

CY7C68013A芯片集成增強(qiáng)型8051內(nèi)核,內(nèi)部無(wú)ROM等永久性存儲(chǔ)器,每次上電后需要從新將固件程序載入到片內(nèi)RAM中。EZ⁃USBFX2固件程序有3種加載方式:(1)如果沒(méi)有片外存儲(chǔ)器連接到EZ⁃USBFX2上,或者所讀取的首字節(jié)不是0xC0或0xC2,則芯片枚舉為缺省的USB設(shè)備,其中描述符,VID,PID由芯片內(nèi)部硬件邏輯提供。然后固件程序與描述符表由主機(jī)下載,EZ⁃USBFX2開(kāi)始執(zhí)行下載的代碼,首先模擬物理電路的斷開(kāi)與連接,此時(shí)EZ⁃USBFX2將再次進(jìn)行設(shè)備枚舉,這稱為重枚舉,重枚舉將根據(jù)下載的代碼對(duì)設(shè)備進(jìn)行從新定義。(2)如果USB檢測(cè)到一個(gè)E2PROM,其首字節(jié)為0xC0時(shí),芯片也枚舉為缺省的USB設(shè)備,但VID與PID值將從此EEPROM中讀取,USB描述符由芯片內(nèi)部提供。這種模式稱為“C0”加載。主機(jī)根據(jù)讀得的VID與PID值,由固件下載驅(qū)動(dòng)程序?qū)⒅付ǖ墓碳绦蛳螺d到EZ⁃USBFX2,然后再重枚舉。(3)如果USB檢測(cè)到一個(gè)E2PROM,其首字節(jié)為0xC2時(shí),固件程序?qū)拇薊2PROM中自動(dòng)下載到FX2芯片上,CPU通過(guò)復(fù)位后運(yùn)行下載的程序代碼。這種模式稱為“C2”加載。其中第一種方式主要是開(kāi)發(fā)階段使用,它需要主機(jī)上有CYPRESS公司提供的開(kāi)發(fā)軟件USBCONTROLPANEL,每次手動(dòng)將程序下載到USB上。第二種方法需要開(kāi)發(fā)者另外再編寫(xiě)一個(gè)固件下載驅(qū)動(dòng)程序,而且也需要在電路中外加一小容量的E2PROM。第3種方法是將固件程序燒寫(xiě)到E2PROM中,每次上電自動(dòng)加載,這種方式簡(jiǎn)單直接。本設(shè)計(jì)采用第3種方式。

3驅(qū)動(dòng)程序及INF文件的編寫(xiě)

設(shè)備驅(qū)動(dòng)程序是應(yīng)用程序和硬件之間的連接,應(yīng)用程序通過(guò)驅(qū)動(dòng)程序與設(shè)備通信,數(shù)據(jù)交換,從而獲取數(shù)據(jù)和對(duì)設(shè)備進(jìn)行控制。CYPRESS公司為EZ⁃USBFX2提供一通用的驅(qū)動(dòng)程序CYUSB.SYS,其功能完備,使用者不需要修改直接使用[5]。USB設(shè)備都具有一個(gè)VID和PID,此處的VID和PID與在固件程序轉(zhuǎn)載階段的值不同,這兩個(gè)值是用來(lái)安裝設(shè)備驅(qū)動(dòng)程序的,VID和PID放到設(shè)備描述符表中,通過(guò)設(shè)備請(qǐng)求讀入到Windows系統(tǒng)中。同時(shí),Win⁃dows操作系統(tǒng)通過(guò)INF文件將一VID和PID綁定到某一設(shè)備驅(qū)動(dòng)程序。當(dāng)設(shè)備連接到主機(jī)上時(shí),讀得設(shè)備的VID和PID,通過(guò)存儲(chǔ)在INF文件中的信息找到設(shè)備驅(qū)動(dòng)。此后,Windows會(huì)將設(shè)備的VID和PID值保存到注冊(cè)表,設(shè)備再次連接時(shí),系統(tǒng)就會(huì)在注冊(cè)表中查找設(shè)備驅(qū)動(dòng)程序信息。具體操作方法是將驅(qū)動(dòng)安裝的模板INF文件的MODEL節(jié)中的VID與PID值修改成與USB設(shè)備的VID和PID值相同。相應(yīng)STRING節(jié)中也修改。

4與應(yīng)用程序的接口

圖3是驅(qū)動(dòng)程序流程圖,從圖中可以看到功能驅(qū)動(dòng)程序的位置。用戶通過(guò)一種規(guī)范的方式調(diào)用WIN32API函數(shù)來(lái)訪問(wèn)硬件,不用考慮如何控制硬件的具體細(xì)節(jié)。USB開(kāi)發(fā)過(guò)程主要應(yīng)知道應(yīng)用程序調(diào)用驅(qū)動(dòng)程序的接口函數(shù),如下介紹,應(yīng)用程序直接調(diào)用這些函數(shù)來(lái)實(shí)現(xiàn)與硬件設(shè)備的數(shù)據(jù)交換。CREATEFILE通過(guò)設(shè)備名打開(kāi)設(shè)備,獲得設(shè)備句柄,有設(shè)備句柄就可以讀寫(xiě)設(shè)備。通過(guò)下面語(yǔ)句獲得設(shè)備句柄。DEVICEIOCONTROL讀寫(xiě)控制設(shè)備,應(yīng)用程序調(diào)用此函數(shù)并加以不同的I/O控制碼參數(shù),完成應(yīng)用程序與驅(qū)動(dòng)程序?qū)⒌臄?shù)據(jù)交換。主要用到的I/O控制碼有:IOCTL_EZUSB_BULK_READ該控制碼從指定的批量管道中讀取數(shù)據(jù)。讀操作阻塞調(diào)用進(jìn)程,直到數(shù)據(jù)傳送完成。IOCTL_EZUSB_BULK_WRITE該控制碼向指定的批量管道中寫(xiě)入數(shù)據(jù)。寫(xiě)操作阻塞調(diào)用進(jìn)程,直到數(shù)據(jù)傳送完成。CLOSEHANDLE通過(guò)句柄關(guān)閉設(shè)備,設(shè)備請(qǐng)求完成后通過(guò)此函數(shù)關(guān)閉。

5結(jié)語(yǔ)

主站蜘蛛池模板: 日韩成人在线观看视频 | 亚洲欧美日韩精品永久在线 | 国产看色免费 | 色.com| 国产高清成人 | 亚洲精品高清中文字幕 | 日本二区视频 | 亚洲大香伊人蕉在人依线 | 亚洲免费国产 | 激情六月天婷婷 | 日本在线一区二区 | 成年人国产网站 | 一区二区三区免费视频 www | 五月婷婷中文字幕 | 一区二区三区免费视频 www | 香蕉视频97 | 最近中文字幕资源 | 羞羞免费网站 | 五月花社区婷婷综合 | 成人精品第一区二区三区 | 丁香八月婷婷 | 欧美一级久久久久久久大 | 欧洲亚洲综合一区二区三区 | 久久激情综合色丁香 | 欧美日韩国产一区二区三区伦 | 中国的免费的视频 | 午夜在线观看福利 | 国产毛片视频网站 | 亚洲国产系列久久精品99人人 | 性夜影院爽黄a爽免费视频 在线观看免费视频国产 | 亚洲自偷精品视频自拍 | 欧美日韩中文国产一区 | 九色国产在视频线精品视频 | 国色天香免费视频www | 欧洲精品在线观看 | 国产精品久久久久久免费 | 日本在线观看一区 | 亚洲国产精品自在现线让你爽 | 久久国 | 四虎最新网站 | 亚洲综合九九 |