【VB开源代码栏目提醒】:以下是网学会员为您推荐的VB开源代码-快速实现即插即用设备驱动程序 - 期刊论文,希望本篇文章对您学习有所帮助。
快速实现即插即用设备驱动程序A Fast Realizing of PnP Device Drlvor黧一篓一 Ahh硼:Wl椰m…h h…“。
wm“w四or d目ei U”h“……s”1【hinvdv“№m“g ”nw“n8y(hm d…∞Ⅲ“№…八…““ 八ⅢnE nf d…眦删‘…mⅢ“jⅫ■l“《 k∞H_I lIⅢu m in w,r‰(9x d NT, 四 Key”u四m d^w.mg port。
Phlg“Play {P一),·nkm毗鲫疵mu岫e,w眦MⅢ 戮鋈器 一一一 自盘¨Ⅲ1M口i。
2买现对硬件驱动的步骤 【t)女轻《#, *m#*§女#到”#n±c 蒹篡溅泌粼 (2)目自n一研删u 《Ⅱ镕《4十^☆D…wⅡ口】d.E将§&m* wi日∞。
mⅡ州四u¨”胖目 自忙Ⅱ#口月**目RH}目Ⅻ”月&{一日自《MⅫ {十¥#;¨}#口#”m∞吼&#雌,m遗# ISA十。
**{±Rg自#月女*t#,^☆“*& 。
:裟;;;;器::裂嬲!j慧 T盯女“1#目Ⅻ日。
(3)&w腚RⅫ”女《。
北§K%《堂黜赫w鲫*石化铡&I{!趣惜t自自计■§‰{斌(o∞)四 。
叽m—d』州hm r《*I目自∞∞im女日用m)c D-~VCiz—d“自自&Ⅻ女*%#为”镕且¨m* 万方数据 ·42 《测控技术》2000年】9卷第10期备分配的资源(I/0范围,内存范围,中断源)。
对于非即插即用设备,则需要手动设置硬件资源。
另外,根据 以上API函数包含在头文件myeard—lib.h中,源需要为硬件设备定义寄存器。
程序在myeard—lib.c中。
(4)测试硬件。
以下为主程序。
其实现读写硬件L/O端口,并响 Driver Wizard具有测试硬件的功能。
它可以读写 应中断。
每发生一次中断,中断服务程序就显示一次I/O端口和用户定义的寄存器,以及侦听中断。
硬件 中断发生的总次数。
程序如下: //主程序开发者可以利用Driver Wizard测试硬件的功能来调试 #indude“myeard lib.h”和检测硬件。
删∞ai(、 (5)产生程序
代码, 只需点击一下“生成
代码”按钮Driver Wizard即刻 MYC.MiD()p衄{&hMYCARD,OxlO(:8,0x4750,0,MYCARD—OPEN—生成:①驱动硬件的应用程序级APl函数;②用上述 I砸一mT);//奉例中模板的厂商号为1De8,设备号为4750;由于奉倒API函数驱动硬件的样本程序;③工程文件。
中只使用一块摸板.所以板号为0;设置为“使用中断” MYCAP,D—Int.rJmbl,,(hMYOmD,haR,mtine); //开中断.并设定中断服 (6)编译运行。
务程序的
程序名为IntRmdne 在开发环境中修改样本程序,或者在应用程序中 d出血=MYCARD—RendOMBl(h/WY’CABD);//从寄存器IMBI读数据 MYc^肋一WtltelMBl(hMYCARD,dalnout);//6寄存器OMBI写散据调用Driver Wizard生成的API函数和WinDriver的库函数,使之满足对硬件驱动的要求,然后编译、运行,最终 M”/CARD—IntDimble(h/ⅥIYCARD);//关中断;实现对硬件的驱动。
MYCARD—Clc,*(M,IYCARD);//结束对模板的操作; 应该特别注意的是:对于电平触发型的中断(如PCI板卡的中断),当中断发生后,如果不对中断予以 //*断服务程序确认,触发中断的电平就不会改变,中断将不断产生。
ImP,maine(MYCARD—HANDLE IdWrCARD.MYC栅一INT—REStlLT -#)id所以,如果硬件中断是电平触发型中断,在步骤3中必 *intlⅫt)’//程序名在开中断函数中定义须设置中断确认寄存器,通过对该寄存器的读或写,来 面甜(“Goth number%d、n”,im〕讪->如c伽埘盯);//显示中对中断进行确认。
断发生总次数 以上只是一个简单的例子,但它包含了使用Win—3实现对硬件驱动的一个实例 Driver实现对硬件驱动的整个过程和程序的基本框 本例是在VC++6.o环境下开发的,实现了读写 架。
通过它读者可以发现借助于WinDriver实现对硬PCI模板的I/0端El,并响应PCI模板的中断。
另外, 件驱动是非常简单的。
此外,读者可以举一反三开发只需更换WinDriver为操作系统提供的驱动程序和动 出自己的设备驱动程序。
态链接库,不需要更改任何
代码,就可以同时在Win—dows 9x和Windows NT/2000,CE下运行。
pcI模板的 4结束语接口芯片为¥5933。
WinDriver不仅适用于开发即插即用设备驱动程 首先按实现对硬件驱动的步骤,从第1步操作至 序,同样也适用于开发非即插即用的ISA设备驱动程第5步。
其中,在第3步中设置3个寄存器,分别为: 序。
与其他开发工具相比,Wird)river具有:支持多种O.MBl:偏移量为0,长度为32位(¥5933的输出邮箱 操作系统(Windows9x/NT/2000/江,Limtx等),支持多1);IMBl:偏移量为〕0h,长度为32位(¥5933的输入邮 板操作,支持多种语言(C,C++,VB,Delphi)等优点。
箱1);1NTCSR:偏移量为38h,长度为32位(¥5933的中 通过使用WinDrvier,开发人员可以使用自己熟悉的语断控制寄存器),并设置IN’lEST为中断确认寄存器。
言来实现对硬件的驱动,而不必把大量的精力花费在在第5步中设置开发环境为VC++6.0,文件名为MY, 编写复杂、难于调试的内核模式
代码上,从而达到提高CARD.wdp。
产生的应用程序API函数如下: 开发效率、缩短开发周期、提高
系统可靠性的目的。
BOOL It扪〔CARD.O畔l(…);//韧始化 参考文献 MYCARD—clo特(…);//结束操作void 1何海渡等盛拟设备驱亏t程序Ⅷ的开发
计算机系统应用,J999(1)DWORD M’x’CARD—CoumCards(~);//检测指定硬件的敷量;DWORDM’fCARD—ReadIMBl(…);//读寄存器岫l; 作者简介:叶卫东,男。
柏岁,高级工程师,研究方向:测试计量俪d M’CCARD—WriteOMBl(-);//写奇存器哪l; 技术厦仪器。
DWORD MYC.MID,RendD/PdR(…);//i)寄存器INT口;俐MYCARDBOOL Writ四SR(~);//写寄存嚣叶rc盯; mcARD—IntEnaMe l一);//开中断.并设置中断服务程序 张浩,男,28岁,在读硕士研究生,现主要从事高速、并行数 据采集系统管理控制挂术的研究。
州mc^IID—IntDimhle(¨); //关中断; (收稿日期:2000一04)口北京长城航空测控技术研究所石化舅控工程部电液伺服执行机构、伺服控制嚣电话:(010)65684033 万方数据