亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁(yè)| 資源下載| 資源專輯| 精品軟件
登錄| 注冊(cè)

彈簧程序

  • 漢字字庫(kù)的點(diǎn)陣提取程序

    漢字字庫(kù)的點(diǎn)陣提取程序可以從漢字字庫(kù)中提取漢字的點(diǎn)陣,是一個(gè)編寫液晶顯示漢字的軟件工具。

    標(biāo)簽: 漢字字庫(kù) 點(diǎn)陣 程序

    上傳時(shí)間: 2013-12-31

    上傳用戶:秦莞爾w

  • 單片機(jī)程序遠(yuǎn)程升級(jí)的設(shè)計(jì)

    為了解決一些遠(yuǎn)程單片機(jī)設(shè)備不方便升級(jí)內(nèi)部程序的困難,本文提出了利用單片機(jī)系統(tǒng)中現(xiàn)有的數(shù)據(jù)獲取方式來升級(jí)單片機(jī)內(nèi)部程序的方法。本文利用凌陽(yáng)16 位單片機(jī)可以自讀寫片內(nèi)程序空間的特性,通過在片內(nèi)駐留BootLoader 程序的方式實(shí)現(xiàn)了凌陽(yáng)16 位單片機(jī)片內(nèi)程序的在需要時(shí)的遠(yuǎn)程升級(jí)。單片機(jī)獲取數(shù)據(jù)的方式可以有很多,本文選取通過串口獲取數(shù)據(jù)進(jìn)行程序升級(jí)為例,并選取常見的凌陽(yáng)單片機(jī)SPCE061A 為例介紹了此方法的設(shè)計(jì)思路以及實(shí)現(xiàn)過程。單片機(jī)的應(yīng)用非常廣泛,在某些情況下,單片機(jī)內(nèi)部程序的升級(jí)在所難免,但是往往需要對(duì)單片機(jī)產(chǎn)品進(jìn)行收回才能實(shí)現(xiàn),這樣在一些遠(yuǎn)程設(shè)備的程序升級(jí)問題上就顯得非常不方便。但是有些遠(yuǎn)程設(shè)備本身留有遠(yuǎn)程通訊的方式:例如某些遠(yuǎn)程數(shù)據(jù)傳輸模塊,為了把數(shù)據(jù)上報(bào)總會(huì)留有通訊的接口,比如422、485 甚至GPRS 或者局域網(wǎng)接口;又或者某些車載定位設(shè)備,為了和監(jiān)控中心通訊會(huì)留有GSM、CDMA 或者GPRS 等通訊方式。在這種情況下就可以利用其現(xiàn)有的通訊方式對(duì)其內(nèi)部單片機(jī)程序進(jìn)行升級(jí)而不需要收回產(chǎn)品。本文的主要內(nèi)容就是來研究這種遠(yuǎn)程升級(jí)單片機(jī)程序的方法。由于近年來凌陽(yáng)科技的單片機(jī),尤其是 16 位單片機(jī),得到了越來越多的推廣,其應(yīng)用領(lǐng)域越來越廣泛。本文選取一種常見的凌陽(yáng)科技的16 位單片機(jī)SPCE061A 為例,來介紹單片機(jī)程序遠(yuǎn)程升級(jí)的方法。SPCE061A 里內(nèi)嵌了32K 字的閃存(FLASH),即可以作為程序存儲(chǔ)空間又可以存儲(chǔ)數(shù)據(jù),并且有自讀寫任意閃存地址的能力,本文利用這一功能,提出了通過在單片機(jī)中駐留BootLoader 程序的方法,來實(shí)現(xiàn)單片機(jī)程序的遠(yuǎn)程升級(jí)。遠(yuǎn)程升級(jí)的實(shí)現(xiàn),需要單片機(jī)自身的響應(yīng)同時(shí)還需要遠(yuǎn)程服務(wù)器提供升級(jí)所需的代碼。下文將通過這兩個(gè)方面來分別介紹。

    標(biāo)簽: 單片機(jī)程序 遠(yuǎn)程升級(jí)

    上傳時(shí)間: 2013-10-31

    上傳用戶:yxgi5

  • 八段碼顯示程序設(shè)計(jì)與調(diào)試

    所學(xué)的指令LD、LDI、OUT AND、ANI OR、 ORI LDP、 LDF、ANDP、ANDF、  ORP、 ORF ORB、 ANB MPS、 MRD、 MPP MC、 MCRSET RSTNOP  END 自鎖電路觸點(diǎn)的動(dòng)作發(fā)光二極管的工作原理。八段碼顯示是利用發(fā)光二極管的不同段碼組合來實(shí)現(xiàn)的,它可以實(shí)現(xiàn)0到F的顯示。搶答器的顯示就是利用八段碼顯示的特性,來完成幾個(gè)不同組別的顯示。用PLC實(shí)現(xiàn)八段碼顯示0~9組的3組以上搶答器的程序編寫,并完成以下要求:1)設(shè)計(jì)由PLC實(shí)現(xiàn)的八段碼顯示0~9組的3組以上搶答器的程序編寫,并完成以下要求: ①列出PLC的輸入輸出地址分配表 ②畫出PLC的輸入輸出接線圖(即I/O接線圖) ③設(shè)計(jì)PLC的梯形圖 ④根據(jù)梯形圖列寫指令表 2)按PLC控制I/O口(輸入/輸出)接線圖在模擬實(shí)驗(yàn)設(shè)備上正確接線。

    標(biāo)簽: 顯示程序 調(diào)試

    上傳時(shí)間: 2013-11-22

    上傳用戶:lmeeworm

  • C51基本結(jié)構(gòu)程序設(shè)計(jì)

    C51基本結(jié)構(gòu)程序設(shè)計(jì)1. 掌握if語句來實(shí)現(xiàn)選擇結(jié)構(gòu),能利用if語句編寫相應(yīng)的分枝結(jié)構(gòu)的程序。在嵌套if語句中,一定要搞清楚else與哪個(gè)if結(jié)合的問題。2.掌握switch語句來實(shí)現(xiàn)多向分枝選擇結(jié)構(gòu),能利用switch語句編寫相應(yīng)的分枝結(jié)構(gòu)的程序。 3. 掌握循環(huán)語句的即初始化、循環(huán)體、循環(huán)控制及結(jié)束四個(gè)部分,并能進(jìn)行循環(huán)語句的程序設(shè)計(jì)。分別掌握for 語句、while語句以及do-while語句的使用語法及方法,能利用這三種循環(huán)結(jié)構(gòu)進(jìn)行循環(huán)程序設(shè)計(jì),理解這三種語句的異同。4.理解并掌握continue、break語句在循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)中的作用。對(duì)于goto語句,理解該語句優(yōu)缺點(diǎn)。C51語言是結(jié)構(gòu)化編程語言。結(jié)構(gòu)化語言的基本元素是模塊,它是程序的一部分.只有一個(gè)出口和一個(gè)入口.不允許有偶然的中途插入或以模塊的其它路徑退出。結(jié)構(gòu)化編程語言在沒有妥善保護(hù)或恢復(fù)堆棧和其它相關(guān)的寄存器之前,不應(yīng)隨便跳入或跳出一個(gè)模塊。因此使用這種結(jié)構(gòu)化語言進(jìn)行編程,當(dāng)要退出中斷時(shí),堆棧不會(huì)因?yàn)槌绦蚴褂昧巳魏慰梢越邮艿拿疃罎ⅰ?nbsp;   結(jié)構(gòu)化程序由若干模塊組成,每個(gè)模塊中包含著若干個(gè)基本結(jié)構(gòu),而每個(gè)基本結(jié)構(gòu)中可以有若干條語句。歸納起來,C51程序有順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)共三種結(jié)構(gòu)。

    標(biāo)簽: C51 基本結(jié)構(gòu) 程序設(shè)計(jì)

    上傳時(shí)間: 2013-11-01

    上傳用戶:四只眼

  • 51單片機(jī)播放音樂編碼程序 ,music encodeV1.

    51單片機(jī)播放音樂編碼程序,music encode,51mcu播放音樂編碼程序

    標(biāo)簽: encodeV music 51單片機(jī) 播放

    上傳時(shí)間: 2013-11-09

    上傳用戶:lalalal

  • AVR單片機(jī)GCC程序設(shè)計(jì)

    AVR單片機(jī)GCC程序設(shè)計(jì):第一章 概述1.1 AVR 單片機(jī)GCC 開發(fā)概述1.2 一個(gè)簡(jiǎn)單的例子1.3 用MAKEFILE 管理項(xiàng)目1.4 開發(fā)環(huán)境的配置1.5 實(shí)驗(yàn)板CA-M8第二章 存儲(chǔ)器操作編程2.1 AVR 單片機(jī)存儲(chǔ)器組織結(jié)構(gòu)2.2 I/O 寄存器操作2.3 SRAM 內(nèi)變量的使用2.4 在程序中訪問FLASH 程序存儲(chǔ)器2.5 EEPROM 數(shù)據(jù)存儲(chǔ)器操作2.6 avr-gcc 段結(jié)構(gòu)與再定位2.7 外部RAM 存儲(chǔ)器操作2.8 堆應(yīng)用第三章 GCC C 編譯器的使用3.1 編譯基礎(chǔ)3.2 生成靜態(tài)連接庫(kù)第四章 AVR 功能模塊應(yīng)用實(shí)驗(yàn)4.1 中斷服務(wù)程序4.2 定時(shí)器/計(jì)數(shù)器應(yīng)用4.3 看門狗應(yīng)用4.4 UART 應(yīng)用4.5 PWM 功能編程4.6 模擬比較器4.7 A/D 轉(zhuǎn)換模塊編程4.8 數(shù)碼管顯示程序設(shè)計(jì)4.9 鍵盤程序設(shè)計(jì)4.10 蜂鳴器控制第五章 使用C 語言標(biāo)準(zhǔn)I/O 流調(diào)試程序5.1 avr-libc 標(biāo)準(zhǔn)I/O 流描述5.2 利用標(biāo)準(zhǔn)I/0 流調(diào)試程序5.3 最小化的格式化的打印函數(shù)第六章 CA-M8 上實(shí)現(xiàn)AT89S52 編程器的實(shí)現(xiàn)6.1 編程原理6.2 LuckyProg2004 概述6.3 AT989S52 isp 功能簡(jiǎn)介6.4 下位機(jī)程序設(shè)計(jì)第七章 硬件TWI 端口編程7.1 TWI 模塊概述7.2 主控模式操作實(shí)時(shí)時(shí)鐘DS13077.3 兩個(gè)Mega8 間的TWI 通信第八章 BootLoader 功能應(yīng)用8.1 BootLoader 功能介紹8.2 avr-libc 對(duì)BootLoader 的支持8.3 BootLoader 應(yīng)用實(shí)例8.4 基于LuckyProg2004 的BootLoader 程序第九章 匯編語言支持9.1 C 代碼中內(nèi)聯(lián)匯編程序9.2 獨(dú)立的匯編語言支持9.3 C 與匯編混合編程第十章 C++語言支持附錄 1 avr-gcc 選項(xiàng)附錄 2 Intel HEX 文件格式描述

    標(biāo)簽: AVR GCC 單片機(jī)

    上傳時(shí)間: 2014-04-03

    上傳用戶:ligi201200

  • 單片機(jī)電子表原理圖和程序代碼 (PCB電路)

    單片機(jī)電子表原理圖和C語言程序代碼: select 成績(jī)表.學(xué)號(hào),學(xué)生信息.姓名,學(xué)生信息.學(xué)院專業(yè) ,sum(成績(jī)表.分?jǐn)?shù)) 總分 ,avg(成績(jī)表.分?jǐn)?shù)) 平均分 from 成績(jī)表,學(xué)生信息 where 學(xué)生信息.學(xué)號(hào)=成績(jī)表.學(xué)號(hào)  group by 成績(jī)表.學(xué)號(hào),學(xué)生信息.姓名 ,成績(jī)表.分?jǐn)?shù),學(xué)生信息.學(xué)院專業(yè)select 學(xué)生信息.學(xué)院專業(yè) ,sum(成績(jī)表.分?jǐn)?shù)) 總分,avg(成績(jī)表.分?jǐn)?shù)) 平均分 from 成績(jī)表,學(xué)生信息 where 學(xué)生信息.學(xué)號(hào)=成績(jī)表.學(xué)號(hào)  group by 學(xué)生信息.學(xué)院專業(yè) select 學(xué)生信息.學(xué)院專業(yè),count(成績(jī)表.分?jǐn)?shù)) 不及格人數(shù) from 成績(jī)表,學(xué)生信息 where 學(xué)生信息.學(xué)號(hào)=成績(jī)表.學(xué)號(hào) and 成績(jī)表.分?jǐn)?shù)>60 group by 學(xué)生信息.學(xué)院專業(yè),成績(jī)表.分?jǐn)?shù)

    標(biāo)簽: PCB 單片機(jī) 代碼 電子表

    上傳時(shí)間: 2014-04-03

    上傳用戶:kaixinxin196

  • 51單片機(jī)工程師實(shí)例設(shè)計(jì)程序集-(20種常見應(yīng)用整編)

    51單片機(jī)工程師實(shí)例設(shè)計(jì)程序集-(20種常見應(yīng)用整編) \7290\                          ;ZLG7290例程*\7290a\                         ;ZLG7290匯編例程*\bell\                          ;蜂鳴器音樂例程*\buzz\                          ;蜂鳴器響例程*\eeprom\                        ;讀EEPROM并顯示例程*\ex26a_lcd\                     ;16×2LCD模塊例程*\ex36a_lcm\                     ;128×64點(diǎn)陣LCD模塊例程*\KEY_IO\                        ;直連KEY和LED例程\led_light\                     ;直連LED例程*\lin_park\   ;lin模塊的原碼及例程。\lin\                           ;LIN總線例程\rs232\                         ;RS232例程(包括PC端和書上了串口例程)\USB1.1\                        ;USB1.1例程(包括PC端)\RS485\                         ;RS485例程\USB2.0\                        ;USB2.0例程(有3個(gè),包括PC端)\TCPIP\                         ;基于ETHERNET的TCPIP例程\RTC\                           ;時(shí)鐘顯示例程\CAN_SELF\                      ;CAN自發(fā)自收例程  外中斷1\CAN\                           ;CAN例程\USBPACK 2.0\                   ;USB2.0PC例程 注意:帶*程序?yàn)镸ON51調(diào)試程序。在MON時(shí)程序下載后停不下來,可以按一下RSE按鈕復(fù)位一下。

    標(biāo)簽: 51單片機(jī) 工程師 設(shè)計(jì)程序

    上傳時(shí)間: 2013-10-13

    上傳用戶:雨出驚人love

  • 驅(qū)動(dòng)程序與應(yīng)用程序的接口

    有兩種方式可以讓設(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è)備對(duì)象的分發(fā)函數(shù)之間存在一個(gè)映射關(guān)系。獲得對(duì)設(shè)備對(duì)象訪問的第一步就是打開一個(gè)設(shè)備對(duì)象的句柄。 用符號(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è)備對(duì)象的符號(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庫(kù)提供兩個(gè)助手類來使獲得對(duì)該接口的訪問容易一些,這兩個(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è)備對(duì)象的IRPs。下面的表顯示了這種對(duì)應(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è)新的文件對(duì)象。這使得多個(gè)句柄可以映射同一個(gè)文件對(duì)象。當(dāng)這個(gè)文件對(duì)象的最后一個(gè)用戶級(jí)句柄被撤銷后,I/O管理器調(diào)用CleanUp。當(dāng)沒有任何用戶級(jí)和核心級(jí)的對(duì)文件對(duì)象的訪問的時(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è)備對(duì)象的屬性。當(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è)備對(duì)象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當(dāng)設(shè)備不設(shè)置DO_BUFFERED_IO標(biāo)志也不設(shè)置DO_DIRECT_IO,內(nèi)核設(shè)置IRP 的UserBuffer域來對(duì)應(yīng)ReadFile或WriteFile中的buff參數(shù)。然而,存儲(chǔ)區(qū)并沒有被鎖住而且地址只對(duì)調(diào)用進(jìn)程有效。驅(qū)動(dòng)程序可以使用KIrp::UserBuffer來存取IRP域。對(duì)于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴于特殊的I/O控制代碼,它不在設(shè)備對(duì)象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構(gòu)造控制代碼。這個(gè)宏的其中一個(gè)參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對(duì)應(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級(jí)調(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對(duì)象,驅(qū)動(dòng)程序?qū)@個(gè)對(duì)象的訪問通過調(diào)用KIrp::Mdl來實(shí)現(xiàn)。對(duì)于METHOD_OUT_DIRECT,調(diào)用者必須有對(duì)緩沖的寫訪問權(quán)限。注意,對(duì)METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會(huì)做映射來配置緩沖。虛擬地址只對(duì)調(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

  • 外部中斷應(yīng)用程序設(shè)計(jì)范例

    14-2. 智能小車運(yùn)動(dòng)控制方式14-3. 聲控的實(shí)現(xiàn)方法利用聲音控制小車運(yùn)動(dòng)狀態(tài)要求:編程使小車原地旋轉(zhuǎn)(順時(shí)針轉(zhuǎn)5秒逆時(shí)針轉(zhuǎn)5秒,重復(fù)進(jìn)行),通過聲音檢測(cè)電路產(chǎn)生中斷使小車停止。范例分析:設(shè)計(jì)中首先要求控制小車按要求運(yùn)動(dòng),這包含以下內(nèi)容小車電機(jī)的驅(qū)動(dòng)方式——硬件電路1小車運(yùn)動(dòng)方式控制方法 其次要求采用聲音控制小車的運(yùn)動(dòng),這一過程包含以下內(nèi)容聲音檢測(cè)電路的工作原理——硬件電路2如何實(shí)現(xiàn)對(duì)小車的控制——程序設(shè)計(jì)思路

    標(biāo)簽: 外部中斷 應(yīng)用程序 范例

    上傳時(shí)間: 2014-04-16

    上傳用戶:xianglee

主站蜘蛛池模板: 万年县| 天气| 甘南县| 都昌县| 山西省| 定兴县| 会理县| 江川县| 团风县| 维西| 阳谷县| 蒙山县| 西平县| 托里县| 黎川县| 光山县| 静乐县| 綦江县| 漳浦县| 盐亭县| 安宁市| 会昌县| 池州市| 龙川县| 绥阳县| 勐海县| 保德县| 遂宁市| 福建省| 全南县| 贵州省| 仁怀市| 黄陵县| 错那县| 高雄县| 璧山县| 灯塔市| 响水县| 塔城市| 双鸭山市| 建德市|