有兩種方式可以讓設(shè)備和應(yīng)用程序之間聯(lián)系:1. 通過為設(shè)備創(chuàng)建的一個(gè)符號(hào)鏈;2. 通過輸出到一個(gè)接口WDM驅(qū)動(dòng)程序建議使用輸出到一個(gè)接口而不推薦使用創(chuàng)建符號(hào)鏈的方法。這個(gè)接口保證PDO的安全,也保證安全地創(chuàng)建一個(gè)惟一的、獨(dú)立于語言的訪問設(shè)備的方法。一個(gè)應(yīng)用程序使用Win32APIs來調(diào)用設(shè)備。在某個(gè)Win32 APIs和設(shè)備對象的分發(fā)函數(shù)之間存在一個(gè)映射關(guān)系。獲得對設(shè)備對象訪問的第一步就是打開一個(gè)設(shè)備對象的句柄。 用符號(hào)鏈打開一個(gè)設(shè)備的句柄為了打開一個(gè)設(shè)備,應(yīng)用程序需要使用CreateFile。如果該設(shè)備有一個(gè)符號(hào)鏈出口,應(yīng)用程序可以用下面這個(gè)例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開一個(gè)設(shè)備。這個(gè)設(shè)備必須有一個(gè)符號(hào)鏈,以便應(yīng)用程序能夠打開它。有關(guān)細(xì)節(jié)查看有關(guān)Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個(gè)參數(shù)中前綴后的部分就是這個(gè)符號(hào)鏈的名字。注意:CreatFile中的第一個(gè)參數(shù)不是Windows 98/2000中驅(qū)動(dòng)程序(.sys文件)的路徑。是到設(shè)備對象的符號(hào)鏈。如果使用DriverWizard產(chǎn)生驅(qū)動(dòng)程序,它通常使用類KunitizedName來構(gòu)成設(shè)備的符號(hào)鏈。這意味著符號(hào)鏈名有一個(gè)附加的數(shù)字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應(yīng)用程序需要被覆蓋的I/O,第六個(gè)參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個(gè)輸出接口打開句柄用這種方式打開一個(gè)句柄會(huì)稍微麻煩一些。DriverWorks庫提供兩個(gè)助手類來使獲得對該接口的訪問容易一些,這兩個(gè)類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個(gè)設(shè)備信息集,該信息集包含了特殊類中的所有設(shè)備接口信息。應(yīng)用程序能有用CdeviceInterfaceClass類的一個(gè)實(shí)例來獲得一個(gè)或更多的CdeviceInterface類的實(shí)例。CdeviceInterface類是一個(gè)單一設(shè)備接口的抽象。它的成員函數(shù)DevicePath()返回一個(gè)路徑名的指針,該指針可以在CreateFile中使用來打開設(shè)備。下面用一個(gè)小例子來顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface( GUID* pClassGuid, DWORD instance, PDWORD pError){ CDeviceInterfaceClass DevClass(pClassGuid, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; CDeviceInterface DevInterface(&DevClass, instance, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; cout << "The device path is " << DevInterface.DevicePath() << endl; HANDLE hDev; hDev = CreateFile( DevInterface.DevicePath(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hDev == INVALID_HANDLE_VALUE) *pError = GetLastError(); return hDev;} 在設(shè)備中執(zhí)行I/O操作一旦應(yīng)用程序獲得一個(gè)有效的設(shè)備句柄,它就能使用Win32 APIs來產(chǎn)生到設(shè)備對象的IRPs。下面的表顯示了這種對應(yīng)關(guān)系。Win32 API DRIVER_FUNCTION_xxxIRP_MJ_xxx KDevice subclass member function CreateFile CREATE Create ReadFile READ Read WriteFile WRITE Write DeviceIoControl DEVICE_CONTROL DeviceControl CloseHandle CLOSECLEANUP CloseCleanUp 需要解釋一下設(shè)備類成員的Close和CleanUp:CreateFile使內(nèi)核為設(shè)備創(chuàng)建一個(gè)新的文件對象。這使得多個(gè)句柄可以映射同一個(gè)文件對象。當(dāng)這個(gè)文件對象的最后一個(gè)用戶級句柄被撤銷后,I/O管理器調(diào)用CleanUp。當(dāng)沒有任何用戶級和核心級的對文件對象的訪問的時(shí)候,I/O管理器調(diào)用Close。如果被打開的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯(cuò)誤(無效功能)。以前為Windows95編寫的VxD的應(yīng)用程序代碼中可能會(huì)在打開設(shè)備的時(shí)候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個(gè)屬性,因?yàn)樗鼘?dǎo)致沒有特權(quán)的用戶企圖打開這個(gè)設(shè)備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴于設(shè)備對象的屬性。當(dāng)設(shè)備設(shè)置DO_DIRECT_IO標(biāo)志,I/O管理器將buff鎖住在存儲(chǔ)器中,并且創(chuàng)建了一個(gè)存儲(chǔ)在IRP中的MDL域。一個(gè)設(shè)備可以通過調(diào)用Kirp::Mdl來存取MDL。當(dāng)設(shè)備設(shè)置DO_BUFFERED_IO標(biāo)志,設(shè)備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當(dāng)設(shè)備不設(shè)置DO_BUFFERED_IO標(biāo)志也不設(shè)置DO_DIRECT_IO,內(nèi)核設(shè)置IRP 的UserBuffer域來對應(yīng)ReadFile或WriteFile中的buff參數(shù)。然而,存儲(chǔ)區(qū)并沒有被鎖住而且地址只對調(diào)用進(jìn)程有效。驅(qū)動(dòng)程序可以使用KIrp::UserBuffer來存取IRP域。對于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴于特殊的I/O控制代碼,它不在設(shè)備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構(gòu)造控制代碼。這個(gè)宏的其中一個(gè)參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應(yīng)的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數(shù):Method Input Buffer Parameter Output Buffer Parameter METHOD_BUFFERED KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統(tǒng)分配一個(gè)單一的緩沖來作為輸入與輸出。驅(qū)動(dòng)程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅(qū)動(dòng)程序通過調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時(shí),I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級調(diào)用者使用的緩沖中。驅(qū)動(dòng)程序必須在結(jié)束前存儲(chǔ)拷貝到IRP的Information成員中的數(shù)據(jù)個(gè)數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個(gè)系統(tǒng)緩沖,這個(gè)緩沖驅(qū)動(dòng)程序可以通過調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對象,驅(qū)動(dòng)程序?qū)@個(gè)對象的訪問通過調(diào)用KIrp::Mdl來實(shí)現(xiàn)。對于METHOD_OUT_DIRECT,調(diào)用者必須有對緩沖的寫訪問權(quán)限。注意,對METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會(huì)做映射來配置緩沖。虛擬地址只對調(diào)用進(jìn)程有效。這里是一個(gè)用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個(gè)IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個(gè)DeviceIoControl調(diào)用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING, NULL, // no input 注意,這里放的是包含有執(zhí)行操作命令的字符串指針 0, FirmwareRev, //這里是output串指針,存放從驅(qū)動(dòng)程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize, NULL // not overlapped I/O );如果輸出緩沖足夠大,設(shè)備拷貝串到里面并將拷貝的資結(jié)束設(shè)置到FirmwareRevSize中。在驅(qū)動(dòng)程序中,代碼看起來如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){ ULONG fwLength=0; switch ( I.IoctlCode() ) { case IOCTL_MYDEV_GET_FIRMWARE_REV: fwLength = strlen(FIRMWARE_REV)+1; if (I.IoctlOutputBufferSize() >= fwLength) { strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV); I.Information() = fwLength; return I.Complete(STATUS_SUCCESS); } else { } case . . . } }
標(biāo)簽: 驅(qū)動(dòng)程序 應(yīng)用程序 接口
上傳時(shí)間: 2013-10-17
上傳用戶:gai928943
MSP430仿真器(機(jī))接口電路圖-原理圖
上傳時(shí)間: 2013-11-05
上傳用戶:cjf0304
單片機(jī)實(shí)用接口技術(shù)介紹了MCS-51系列單片機(jī)應(yīng)用系統(tǒng)的各種實(shí)用接口技術(shù)及其配置。內(nèi)容包括:MCS-51系列單片機(jī)組成原理:應(yīng)用系統(tǒng)擴(kuò)展、開發(fā)與調(diào)試;鍵盤輸入接口的設(shè)計(jì)及調(diào)試;打印機(jī)和顯示器接口及設(shè)計(jì)實(shí)例;模擬輸入通道接口技術(shù);A/D、D/A、接口技術(shù)及在控制系統(tǒng)中的應(yīng)用設(shè)計(jì);V/F轉(zhuǎn)換器接口技術(shù)、串行通訊接口技術(shù)以及其它與應(yīng)用系統(tǒng)設(shè)計(jì)有關(guān)的實(shí)用技術(shù)等。本書是為滿足廣大科技工作者從事單片機(jī)應(yīng)用系統(tǒng)軟件、硬件設(shè)計(jì)的需要而編寫的,具有內(nèi)容新穎、實(shí)用、全面的特色。所有的接口設(shè)計(jì)都包括詳細(xì)的設(shè)計(jì)步驟、硬件線路圖及故障分析,并附有測試程序清單。書中大部分接口軟、硬件設(shè)計(jì)實(shí)例都是作者多年來從事單片機(jī)應(yīng)用和開發(fā)工作的經(jīng)驗(yàn)總結(jié),實(shí)用性和工程性較強(qiáng),尤其是對應(yīng)用系統(tǒng)中必備的鍵盤、顯示器、打印機(jī)、A/D、D/A通訊接口設(shè)計(jì)、模擬信號(hào)處理及開發(fā)系統(tǒng)應(yīng)用舉例甚多,目的是讓將要開始和正在從事單片機(jī)應(yīng)用開發(fā)的科研人員根據(jù)自己的實(shí)際需要來選擇應(yīng)用,一書在手即可基本完成單片機(jī)應(yīng)用系統(tǒng)的開發(fā)工作。 MCS-51系列單片機(jī)實(shí)用接口技術(shù)目錄 第一章 MCS51系列單片機(jī)組成原理第二章 MCS-51單片機(jī)系統(tǒng)擴(kuò)展第三章 MCS-51單片機(jī)應(yīng)用系統(tǒng)的開發(fā)第四章 鍵盤及其按口技術(shù)第五章 顯示器接口設(shè)計(jì)第六章 打印機(jī)接口設(shè)計(jì)第七章 模擬輸入通道接口技術(shù)第八章 D/A轉(zhuǎn)換器與MSC-51單片機(jī)的接口設(shè)計(jì)與實(shí)踐第九章 A/D轉(zhuǎn)換器與MCS-51單片機(jī)的接口設(shè)計(jì)與實(shí)踐 第十章 V/F轉(zhuǎn)換器接口技術(shù) 第十一章 串行通訊按日技術(shù)第十二章應(yīng)用系統(tǒng)設(shè)計(jì)中的實(shí)用技術(shù)附錄AMCS51單片機(jī)指令速查表附錄一常用EPROM固化電壓參考表
標(biāo)簽: 單片機(jī)實(shí)用 接口技術(shù)
上傳時(shí)間: 2013-11-24
上傳用戶:hfnishi
摘要:TUSB3200 是由德州儀器日本公司推出的一款用于USB 接口連接的音頻數(shù)據(jù)控制芯片,該芯片內(nèi)置8052MCU 微處理器,能實(shí)現(xiàn)多聲道的錄音和播放功能。文中介紹了TUSB3200 的內(nèi)部工作原理、框圖及功能,并給出了用TUSB3200 設(shè)計(jì)的雙聲道輸入/輸出播錄的應(yīng)用電路。關(guān)鍵詞:USB 音頻接口 單片機(jī) TUBS3200 USB 音頻接口電路是帶USB 接口的音響設(shè)備和電腦多媒體外圍設(shè)備的必需器件。德州儀器公司推出的TUSB3200 是一款最適合于音響和電腦周邊設(shè)備的USB 接口用的音頻數(shù)據(jù)控制芯片。它采用52 腳扁平封裝,帶有內(nèi)置微處理器,價(jià)格低,可實(shí)現(xiàn)多聲道播放和錄音等功能,因而具有廣泛的用途。
標(biāo)簽: TUSB 3200 USB 內(nèi)置
上傳時(shí)間: 2013-11-23
上傳用戶:dumplin9
MCS-51系列單片機(jī)實(shí)用接口技術(shù)全面、系統(tǒng)地介紹了MCS-51系列單片機(jī)應(yīng)用系統(tǒng)的各種實(shí)用接口技術(shù)及其配置。內(nèi)容包括:MCS-51系列單片機(jī)組成原理:應(yīng)用系統(tǒng)擴(kuò)展、開發(fā)與調(diào)試;鍵盤輸入接口的設(shè)計(jì)及調(diào)試;打印機(jī)和顯示器接口及設(shè)計(jì)實(shí)例;模擬輸入通道接口技術(shù);A/D、D/A、接口技術(shù)及在控制系統(tǒng)中的應(yīng)用設(shè)計(jì);V/F轉(zhuǎn)換器接口技術(shù)、串行通訊接口技術(shù)以及其它與應(yīng)用系統(tǒng)設(shè)計(jì)有關(guān)的實(shí)用技術(shù)等。本書是為滿足廣大科技工作者從事單片機(jī)應(yīng)用系統(tǒng)軟件、硬件設(shè)計(jì)的需要而編寫的,具有內(nèi)容新穎、實(shí)用、全面的特色。所有的接口設(shè)計(jì)都包括詳細(xì)的設(shè)計(jì)步驟、硬件線路圖及故障分析,并附有測試程序清單。書中大部分接口軟、硬件設(shè)計(jì)實(shí)例都是作者多年來從事單片機(jī)應(yīng)用和開發(fā)工作的經(jīng)驗(yàn)總結(jié),實(shí)用性和工程性較強(qiáng),尤其是對應(yīng)用系統(tǒng)中必備的鍵盤、顯示器、打印機(jī)、A/D、D/A通訊接口設(shè)計(jì)、模擬信號(hào)處理及開發(fā)系統(tǒng)應(yīng)用舉例甚多,目的是讓將要開始和正在從事單片機(jī)應(yīng)用開發(fā)的科研人員根據(jù)自己的實(shí)際需要來選擇應(yīng)用,一書在手即可基本完成單片機(jī)應(yīng)用系統(tǒng)的開發(fā)工作。 MCS-51系列單片機(jī)實(shí)用接口技術(shù)目錄 第一章 MCS51系列單片機(jī)組成原理第二章 MCS-51單片機(jī)系統(tǒng)擴(kuò)展第三章 MCS-51單片機(jī)應(yīng)用系統(tǒng)的開發(fā)第四章 鍵盤及其按口技術(shù)第五章 顯示器接口設(shè)計(jì)第六章 打印機(jī)接口設(shè)計(jì)第七章 模擬輸入通道接口技術(shù)第八章 D/A轉(zhuǎn)換器與MSC-51單片機(jī)的接口設(shè)計(jì)與實(shí)踐第九章 A/D轉(zhuǎn)換器與MCS-51單片機(jī)的接口設(shè)計(jì)與實(shí)踐 第十章 V/F轉(zhuǎn)換器接口技術(shù) 第十一章 串行通訊按日技術(shù)第十二章應(yīng)用系統(tǒng)設(shè)計(jì)中的實(shí)用技術(shù)附錄AMCS51單片機(jī)指令速查表附錄一常用EPROM固化電壓參考表
標(biāo)簽: MCS 51 單片機(jī)實(shí)用 接口技術(shù)
上傳時(shí)間: 2013-11-04
上傳用戶:3294322651
過程通道與人機(jī)接口 過程通道是在計(jì)算機(jī)和生產(chǎn)過程之間設(shè)置的信息傳送和轉(zhuǎn)換的連接通道,它包括模擬量輸入通道、模擬量輸出通道、數(shù)字量(開關(guān)量)輸入通道、數(shù)字量(開關(guān)量)輸出通道。計(jì)算機(jī)和操作人員之間常常需要互通信息 ,為此計(jì)算機(jī)和操作人員之間應(yīng)設(shè)置顯示器和操作器,其中一種是CRT顯示器和鍵盤,另外一種是針對某個(gè)生產(chǎn)過程控制的特點(diǎn)而設(shè)計(jì)的操作控制臺(tái)等。通常把上述兩類設(shè)備簡稱為人機(jī)接口。 作用:顯示生產(chǎn)過程的狀況;供操作人員操作;三是顯示操作結(jié)果。數(shù)字量輸入輸出通道模擬量輸出通道模擬量輸入通道人機(jī)接口
上傳時(shí)間: 2013-10-16
上傳用戶:l銀幕海
8.1 模擬接口概述單片機(jī)的外部設(shè)備不一定都是數(shù)字式的,也經(jīng)常會(huì)和模擬式的設(shè)備連接。 例如單片機(jī)來控制溫度、壓力時(shí),溫度和壓力都是連續(xù)變化的,都是模擬量,在單片機(jī)與外部環(huán)境通信的時(shí)候,就需要有一種轉(zhuǎn)換器來把模擬信號(hào)變?yōu)閿?shù)字信號(hào),以便能夠輸送給單片機(jī)進(jìn)行處理。而單片機(jī)送出的控制信號(hào),也必須經(jīng)過變換器變成模擬信號(hào),才能為控制電路所接受。這種變換器就稱為數(shù)模(D/A)轉(zhuǎn)換器和模數(shù)(A/D)轉(zhuǎn)換器。CPU與模擬外設(shè)之間的接口電路稱為模擬接口。在這一章里將介紹單片機(jī)與 A/D及D/A轉(zhuǎn)換器接口,以及有關(guān)的應(yīng)用。 8.2 DAC及其接口一、DAC介紹:1.DAC結(jié)構(gòu):DAC芯片上集成有D/A轉(zhuǎn)換電路和輔助電路。2.DAC的參數(shù):描述D/A轉(zhuǎn)換器性能的參數(shù)很多,主要有以下幾個(gè):分辨率(Resolution) 偏移誤差(OffsetError) 線性度(Linearity) 精度(Accuracy) 轉(zhuǎn)換速度(ConvemionRate) 溫度靈敏度(TemperatureSensitivity) 二、典型DAC芯片及其接口一、DAC介紹:1.DAC結(jié)構(gòu):DAC芯片上集成有D/A轉(zhuǎn)換電路和輔助電路。2.DAC的參數(shù):描述D/A轉(zhuǎn)換器性能的參數(shù)很多,主要有以下幾個(gè):分辨率(Resolution) 偏移誤差(OffsetError) 線性度(Linearity) 精度(Accuracy) 轉(zhuǎn)換速度(ConvemionRate) 溫度靈敏度(TemperatureSensitivity) 8.3 ADC及其接口DAC 0832的結(jié)構(gòu)DAC 0832的引腳DAC 0832的接口DAC 0832的應(yīng)用DAC0832是CMOS工藝,雙列直插式20引腳。① VCC電源可以在5-15V內(nèi)變化。典型使用時(shí)用15V電源。② AGND為模擬量地線,DGND為數(shù)字量地線,使用時(shí),這兩個(gè)接地端應(yīng)始終連在一起。③ 參考電壓VREF接外部的標(biāo)準(zhǔn)電源,VREF一般可在+10V到—10V范圍內(nèi)選用。
標(biāo)簽: 模擬接口
上傳時(shí)間: 2013-10-10
上傳用戶:ukuk
微型打印機(jī)與單片機(jī)接口:是PDG格式的電子書.
上傳時(shí)間: 2013-10-18
上傳用戶:qingzhuhu
單片機(jī)的功率接口
上傳時(shí)間: 2014-04-28
上傳用戶:ca05991270
鍵盤是一個(gè)由開關(guān)組成的矩陣,是重要的輸入設(shè)備,在小型微機(jī)系統(tǒng)中,如單板微計(jì)算機(jī)、帶有微處理器的專用設(shè)備中,鍵盤的規(guī)模小,可采用簡單實(shí)用的接口方式,在軟件控制下完成鍵盤的輸入功能。小型鍵盤結(jié)構(gòu)框圖行線接口:8位并行輸出口,驅(qū)動(dòng)行線。列線接口:8位并行輸出口,讀取列線 代碼。電阻:列線提取電阻,行線的限流電阻 保護(hù)行線接口輸出電路。二極管:防止兩條行線上按鍵同時(shí)按下 時(shí),可能對行線接口電路造成 的損害。行掃描法識(shí)別鍵按下的軟件方法行線接口輸出電路輸出一個(gè)8位掃描碼,其中有一位為0,其余位全為1。輸出為0行線的邏輯0電平,被有鍵按下的列線輸入接口讀入。 軟件根據(jù)列線輸入接口讀入的列值(只一位為0)判斷出按下鍵的座標(biāo)位置,形成鍵號(hào)。根據(jù)鍵號(hào)轉(zhuǎn)到相應(yīng)的鍵處理程序中去。
上傳時(shí)間: 2013-10-15
上傳用戶:wsf950131
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1