搜档网
当前位置:搜档网 › HT1621 驱动程序

HT1621 驱动程序

HT1621 驱动程序
HT1621 驱动程序

HT1621 驱动程序

字体大小:大| 中| 小2009-02-24 11:20 阅读(1114) 评论(1)分类:

//-----------------------------------------------------------------------------------------

//程序说明:整合式LCD显示器测试程序

//时间:2009-02-14

//-----------------------------------------------------------------------------------------

#include

__CONFIG(HS & UNPROTECT & PWRTEN & WDTDIS & LVPDIS & BOREN & DEBUGDIS); #define uint unsigned int

#define uchar unsigned char

#define led RD1 //测试指示灯

#define HT1621_CS RC5 //LCD 引脚定义

#define HT1621_WR RD3

#define HT1621_DAT RC4

#define BIAS 0x52 //0b1000 0101 0010 1/3duty 4com

#define SYSDIS 0X00 //0b1000 0000 0000 关振系统荡器和LCD偏压发生器#define SYSEN 0X02 //0b1000 0000 0010 打开系统振荡器

#define LCDOFF 0X04 //0b1000 0000 0100 关LCD偏压

#define LCDON 0X06 //0b1000 0000 0110 打开LCD偏压

#define XTAL 0x28 //0b1000 0010 1000 外部接时钟

#define RC256 0X30 //0b1000 0011 0000 内部时钟

#define TONEON 0X12 //0b1000 0001 0010 打开声音输出

#define TONEOFF 0X10 //0b1000 0001 0000 关闭声音输出

#define WDTDIS1 0X0A //0b1000 0000 1010 禁止看门狗

//-----------------------------------------------------------------------------------------

//函数名称:Delay()

//功能:延时子程序

//-----------------------------------------------------------------------------------------

void Delay(uchar us) //5,7,9

{

while(--us);

}

//-----------------------------------------------------------------------------------------

//函数名称:DelayMS()

//功能:延时子程序

//-----------------------------------------------------------------------------------------

void DelayMS(uint iMs)

{

uint i,j;

for(i=0;i

for(j=0;j<65;j++)

{

Delay(1);

}

}

//----------------------------------------------------------------------------------------- //函数名称:Ht1621Wr_Data()

//功能:写数据函数,cnt为传送数据位数,数据传送为低位在前

//----------------------------------------------------------------------------------------- void Ht1621Wr_Data(uchar Data,uchar cnt)

{

uchar i;

for (i=0;i

{

HT1621_WR=0;

NOP();

NOP();

NOP();

NOP();

if((Data & 0x80)==0x80)

{

HT1621_DAT=1;

}

else

{

HT1621_DAT=0;

}

HT1621_WR=1;

NOP();

NOP();

NOP();

NOP();

Data<<=1;

}

}

//----------------------------------------------------------------------------------------- //函数名称:void Ht1621WrCmd(uchar Cmd)

//功能描述: HT1621命令写入函数

//参数说明:Cmd为写入命令数据

//说明:写入命令标识位100

//----------------------------------------------------------------------------------------- void Ht1621WrCmd(uchar Cmd)

{

HT1621_CS=0;

NOP();

NOP();

NOP();

NOP();

Ht1621Wr_Data(0x80,4); //写入命令标志100

Ht1621Wr_Data(Cmd,8); //写入命令数据

HT1621_CS=1;

}

//----------------------------------------------------------------------------------------- //函数名称:void Ht1621WrOneData(uchar Addr,uchar Data)

//功能描述: HT1621在指定地址写入数据函数

//参数说明:Addr为写入初始地址,Data为写入数据

//说明:因为HT1621的数据位4位,所以实际写入数据为参数的后4位

//----------------------------------------------------------------------------------------- void Ht1621WrOneData(uchar Addr,uchar Data)

{

HT1621_CS=0;

Ht1621Wr_Data(0xa0,3); //写入数据标志101

Ht1621Wr_Data(Addr<<2,6); //写入地址数据

Ht1621Wr_Data(Data<<4,4); //写入数据

HT1621_CS=1;

}

//----------------------------------------------------------------------------------------- //函数名称:void Ht1621WrAllData()

//功能描述: HT1621连续写入方式函数

//说明:HT1621的数据位4位,此处每次数据为8位,写入数据总数按8位计算

//----------------------------------------------------------------------------------------- void Ht1621WrAllData(void)

{

uchar i;

HT1621_CS=0;

Ht1621Wr_Data(0xa0,3); //写入数据标志101

Ht1621Wr_Data(0x00<<2,6); //写入地址数据

for (i=0;i<16;i++)

{

Ht1621Wr_Data(0x00,8); //写入数据

}

HT1621_CS=1;

}

//----------------------------------------------------------------------------------------- //函数名称:void Ht1621_Init(void)

//功能描述: HT1621初始化

//说明:初始化后,液晶屏所有字段均显示

//----------------------------------------------------------------------------------------- void Ht1621_Init(void)

{

HT1621_CS=1;

HT1621_WR=1;

HT1621_DAT=1;

DelayMS(2000); //延时使LCD工作电压稳定

Ht1621WrCmd(BIAS);

Ht1621WrCmd(RC256); //使用内部振荡器

Ht1621WrCmd(SYSDIS);

Ht1621WrCmd(WDTDIS1);

Ht1621WrCmd(SYSEN);

Ht1621WrCmd(LCDON);

}

//-----------------------------------------------------------------------------------------

//函数名称:Initial()

//功能:初始化子程序

//-----------------------------------------------------------------------------------------

void Initial(void)

{

ADCON1=0x00; //选择A/D引脚

//RA0/RA1/RA2/RA3/RA5/RE0/RE1/RE2为模拟电压输入端;参考电压Vref=VDD

TRISA=0xFF; //1111 1111;RA1为电流信号/RA0电压信号

TRISB=0x41; //0100 0001;RB0 按键;RB1-RB5 LED

TRISC=0xCA; //1100 1010;

RC0-CLK/RC2-PWM/RC3-PAP/RC4-LED/RC5-LED/RC6-TX/RC7-RX

TRISD=0xE0; //1110 0000;RD0-BELL/RD1-LED/RD2-AB/RD3-LED/RD4-LED/RD5-RD7 按键

TRISE=0x07; //0000 0111;RE0/RE1/RE2

}

//-----------------------------------------------------------------------------------------

//函数名称:main()

//功能:主函数

//-----------------------------------------------------------------------------------------

void main(void)

{

uchar i,j,t;

Initial(); //初始化子程序

Ht1621_Init(); //上电初始化LCD

DelayMS(1000); //延时一段时间

Ht1621WrAllData();

while(1)

{

Ht1621WrAllData();

for(i=0;i<32;i++) //SEG0-SEG31

{

t=0x01;

for(j=0;j<4;j++) //COM0 - COM3

{

Ht1621WrOneData(i,t);

t<<=1;

t++;

led=!led;

DelayMS(5000);

}

}

}

}

驱动程序详解及安装方法

驱动程序详解及安装方法 想要熟知驱动安装方法首先要了解电脑硬件大概信息,了解了硬件信息安装就比较简单了,下面笔者为大家详解,首先我们了解驱动为何物。 一、什么是驱动程序 根据百度百科:驱动程序,英文名为Device Driver,全称为设备驱动程序,是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。因此,驱动程序被誉为硬件的灵魂、硬件的主宰、和硬件和系统之间的桥梁等。 刚安装好的系统操作系统,很可能驱动程序安装得不完整。硬件越新,这种可能性越大。菜菜熊之前看到的图标很大且颜色难看就是没有安装好驱动的原因。 二、驱动程序的作用 随着电子技术的飞速发展,电脑硬件的性能越来越强大。驱动程序是直接工作在各种硬件设备上的软件,其驱动这个名称也十分形象的指明了它的功能。正是通过驱动程序,各种硬件设备才能正常运行,达到既定的工作效果。

硬件如果缺少了驱动程序的驱动,那么本来性能非常强大的硬件就无法根据软件发出的指令进行工作,硬件就是空有一身本领都无从发挥,毫无用武之地。这时候,电脑就正如古人所说的万事俱备,只欠东风,这东风的角色就落在了驱动程序身上。如此看来,驱动程序在电脑使用上还真起着举足轻重的作用。 从理论上讲,所有的硬件设备都需要安装相应的驱动程序才能正常工作。但像CPU、内存、主板、软驱、键盘、显示器等设备却并不需要安装驱动程序也可以正常工作,而显卡、声卡、网卡等却一定要安装驱动程序,否则便无法正常工作。这是为什么呢? 这主要是由于这些硬件对于一台个人电脑来说是必需的,所以早期的设计人员将这些硬件列为BIOS能直接支持的硬件。换句话说,上述硬件安装后就可以被BIOS和操作系统直接支持,不再需要安装驱动程序。从这个角度来说,BIOS也是一种驱动程序。但是对于其他的硬件,例如:网卡,声卡,显卡等等却必须要安装驱动程序,不然这些硬件就无法正常工作。 三、驱动程序的界定 驱动程序可以界定为官方正式版、微软WHQL认证版、第三方驱动、发烧友修改版、Beta测试版。初学者尽量安装官方正式版,当然如果你脱离了菜鸟就可以尝试下各种版本的驱动。 动手安装驱动程序之前,必须先搞清楚,哪些硬件是需要安装驱动程序的,哪些是不需要的。根据前面的介绍,CPU、内存、软驱、键盘、显示器等一般都

驱动程序安装方法

驱动程序安装方法 初识电脑的人,可能为安装驱动程序而头疼。因为对驱动程序了解得不多就会在安装过程中走不少弯路,下面就给大家介绍一下安装驱动程序的两种常用方法和一些实用技巧。 一、安装即插即用设备的驱动程序 安装前的准备工作很重要,一般我们拿到要安装的新硬件时,首先要查看外包装盒,了解产品的型号、盒内部件及产品对系统的最低要求等信息。紧接着就要打开包装盒,取出硬件产品、说明书和驱动盘(光盘或软盘),认真阅读说明书或驱动盘上的ReadMe 文件,一般说明书上写有安装方法和步骤,以及安装注意事项。除了阅读说明书外,还应记得硬件产品上印刷的各种信息以及板卡产品使用的主要芯片的型号。这些信息就是确定产品型号及厂家的重要依据,只有知道这些,才能在网上查找最新的驱动程序。最后按照说明书上介绍的方法来安装硬件。通常安装内置板卡、内置驱动器,使用串口或PS /2接口的设备都应关机断电后再操作,而安装USB设备、笔记本电脑的PC卡时可以带电热插拔。当然,如果是Win2000系统则均可热插拔。完成前面的准备工作之后,就可以启动Windows 来安装驱动程序了。通常情况下,Windows 能够自动检测到PCI 卡、AGP卡、ISA卡、USB设备以及多数打印机和扫描仪等外设,并提示用户插入安装盘。以YAMAHA724声卡为例,其在Win98下安装驱动程序的详细步骤如下。 1.Win98在启动过程中会自动检测即插即用设备,一旦发现了新设备,并且在INF目录下有该设备的.inf 文件,系统将自动安装驱动程序;如果这是一个新设备,INF目录下没有相应的.inf 文件,那么系统就会启动硬件向导。我们单击“下一步”让安装向导自动搜索设备驱动程序,然后再单击“下一步”。 2.在图3中只选中“指定位置”,插入驱动光盘,并单击“浏览”,根据说明书的介绍,选择简体中文版驱动程序所在的目录“E:\Lx_so u n d /Yamaha /Win9X”,点“确定”后单击“下一步”。需要注意的是:Win95的安装向导没有自动搜索功能,我们必须选择“从磁盘安装”,并指定驱动程序所在的位置。驱动程序所在的目录通常是驱动盘上的“Win95”、“Win9X”或“Windows98”目录。 3.硬件安装向导会在指定目录下查找与设备相符的.inf 文件,此例中,硬件向导将在指定目录下找到并向作户报告发现YAMAHA724声卡驱动程序,继续按“下一步”。 4.硬件安装向导显示Windows 准备安装的驱动程序的信息,单击“下一步”后,硬件向导便会根据.inf 文件的内容把指定的文件拷贝到相应的目录下,并在注册表中写入相应的信息,安装成功后显示出对话框。 5.对多数设备而言,到这里驱动程序就算安装完毕了。但如果你安装的是声卡那就还未结束,因为刚才的步骤只能装完声卡的主体部分。单击“完成”后,Windows 又会报告发现了两个新硬件,分别是声卡的DOS 仿真部件和声卡上的游戏控制端口。由于此时SBPCI9X.inf 文件已经被拷到“Windows /INF /Other”子目录下,所以Windows 能够自动安装好这两种设备的驱动程序。 6.驱动程序安装完毕后,我们需要检查设备能否正常工作。检查前还要进行额外的设置,例如使用网卡之前必须先安装和设置网络协议,用调制解调器上网之前要先“新建连接”等。此例中,在“控制面板”里打开“系统”→“设备管理器”→“声音、视频和游戏控制器”,可以看见下面多了三个设备,只要设备的小图标上没有黄色惊叹号,就表示驱动程序运行正常。 二、安装非即插即用设备的驱动程序

驱动程序的安装方法

什么是“驱动程序”呢?驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同,各个硬件厂商为了保证硬件的兼容性及增强硬件的功能 会不断地升级驱动程序。如:Nvidia 显卡芯片公司平均每个月会升级显卡驱动程序2-3次。驱动程序是硬件的一部分,当你安装新硬件时,驱

动程序是一项不可或缺的重要元件。凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。驱动程序扮演沟通的角色,把硬件的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。 当你在安装新硬件时总会被要求放入“这种硬件的驱动程序”,很多人这时就开始头痛。不是找不到驱动程序的盘片,就是找不到文件的位置,或是根本不知道什么是驱动程序。比如安装打印机这类的硬件外设,并不是把连接线接上就算完成,如果你这

时候开始使用,系统会告诉你,找不到驱动程序。怎么办呢?参照说明书也未必就能顺利安装。其实在安装方面还是有一定的惯例与通则可寻的,这些都可以帮你做到无障碍安装。初识电脑的人,可能为安装驱动程序而头疼。因为对驱动程序了解得不多就会在安装过程中走不少弯路,下面就给大家介绍一下安装驱动程序的两种常用方法和一些实用技巧。一、安装即插即用设备的驱动程序 安装前的准备工作很重要,一般我们拿到要安装的新硬件时,首先要查看外包装盒,了解产品的型号、盒

内部件及产品对系统的最低要求等信息。紧接着就要打开包装盒,取出硬件产品、说明书和驱动盘(光盘或软盘),认真阅读说明书或驱动盘上的ReadMe 文件,一般说明书上写有安装方法和步骤,以及安装注意事项。除了阅读说明书外,还应记得硬件产品上印刷的各种信息以及板卡产品使用的主要芯片的型号。这些信息就是确定产品型号及厂家的重要依据,只有知道这些,才能在网上查找最新的驱动程序。最后按照说明书上介绍的方法来安装硬件。通常安装内置板卡、内置驱动器,使用串口或PS /2接口的设备都应关机断电后

安装win7驱动程序的3种主要方法

安装win7驱动程序的3种主要方法 1 通过网络自动安装驱动程序 在Windows 7系统中,安装设备驱动程序往往都需要获得管理员权限。当发现新的设备后,首先Windows 7会尝试自动读取硬件设备固件内部的硬件信息,然后 与%SystemRoot%\System32、Driver Store\File Repository文件夹系统自带的驱动程序安装信息文件夹包含的ID进行比对,如果能够找到相关符合的硬件∞,并且带有数字签名的驱动程序,那么会在不需要用户干涉的前提下自动安装正确的驱动程序,如图15-3所示为提示正在安装设备驱动程序。安装后自动对系统进行必要的设置,同时会在系统任务栏上,使用气球图标显示相关的提示信息。 图15-3 自动安装设备驱动程序如果经过对比后,Windows 7没有在自带的驱动程序安装信息文件夹中找到所对应的硬件信息,则会自动弹出“发现新硬件”对话框,接着根据对话框的提示进行安装硬件驱动程序即可具体安装方法如下。蕊当电脑检测到新硬件时,会自动到网上Windows Update站点搜索所需的驱动程序。如果找到对应的驱动程序,会自动下载并安装,如图15-4所示。 鬈囊如果系统在网上没有找到硬件所需的驱动程序,此时会允许用户手工安装驱动程序,如果有驱动 程序光盘,将相关光盘放入光驱,然后按照提示进行操作即可完成安装。如果没有光盘,按照如 图15-5所示的方法进行操作。

2 手动安装驱动程序 如果有些硬件设备的驱动程序为.inf格式,则需要用手动安装驱动的方式来安装。手动安装驱动程序的方法如下。 从“设备管理器”窗口中查找没有安装驱动的设备,一般没有安装驱动程序的设备前面标着一个 黄色的问号或显示一个感叹号。一般常见的未知声卡设备名为: PCI Multimedia Audio Device或“未 知多媒体设备”;未知网卡为:PCI Network Adpater Device;未知USB设备为:“未知USB设备”, 如图15-6所示。

驱动程序安装步骤

一、驱动程序的安装: 1.运行setup.msi文件,出现如下的画面 点击下一步选择文件安装的路径

然后一路回车,知道安装完毕。 2.驱动程序需要的运行环境是.netframework2.0 ,在使用本驱动之前请确认计算机 上已经安装了.netframework2.0。 二、软件配置 1.井场驱动程序的配置 在应用程序目录下用记事本打开“威正驱动程序.exe.config”文件。 SQL2000该文件中“SQL2000”项目是关于sqlserver数据连接的配置,一般情况下使用默认。 "ergPath" 用来设置驱动程序生成的erg文件存放在哪里,这个是给油气院的计量软件使用的。 2.功图分析程序的配置 在应用程序目录下用记事本打开“功图对比分析.exe.config”,本文件中主要就设置一个数据连接参数

三、标准化配置模版的设置 1.在井场信息表页面的RTU厂商栏输入“威正” 2.在油井信息液面的“通讯站号(安控)”栏输入各油井的站地址 在汇管压力栏,如果该井接了管压就输入1,没有接管压就输入0 四、关于力控软件中的设置 1.挂接威正驱动程序 在力控开发状态下,进入初始启动设置,添加威正驱动程序

从硬盘中手动安装驱动程序的方法

从硬盘中手动安装驱动程序的方法 先在Windows系统中,打开“我的电脑”查看一下准备安装的驱动程序文件中是否包含setup.exe文件,如果有该文件,双击它即可开始安装,否则使用下面的方法∶ 在桌面上,用鼠标右键点击“我的电脑”图标,在弹出的菜单中点“属性”,即打开了“系统属性”窗口。在“系统属性”窗口中点击“硬件”选项卡,然后点击“设备管理器”,打开设备管理器窗口,这时可在窗口中看到电脑中所有设备类型的列表。展开某一种设备类型前面的“+”号,即可看到该类设备的所有型号。 找到需要安装驱动程序(或需要更新驱动程序)的设备-->右键点击该设备-->在弹出的菜单中点击“属性”-->出现“**设备属性”窗口-->在“**设备属性”窗口中点击“驱动程序”选项卡-->然后点击“更新驱动程序”按钮-->即打开了硬件更新向导-->在向导窗口中,在“在搜索中包括这个位置∶”前面的“囗”内打勾-->点击“浏览”按钮,即打开了“浏览文件夹”窗口--->在“浏览文件夹”窗口中,找到存放该设备的驱动程序的文件夹点击它--->如果该文件夹有设备驱动程序(不一定是这个设备的驱动程序),这时,“确定”按钮会从灰色转变为可操作。-->点击“确定”按钮-->向导开始搜索该硬件的驱动程序。 如果在指定的文件夹、软盘和光盘中找到了该设备的一个或多个驱动程序,会弹出窗口要求你从中选择,然后点确定即开始安装该设备的驱动程序,安装过程中可能会提示“该设备驱动程序没有经过微软数字签名”,你不要管它,继续安装。 如果在软盘和光盘中未找到该设备的驱动程序,在ME/2000/XP/2003系统中向导会连接上默认的网站搜索该设备的驱动程序,如果找到了,会自动下载并安装,所以,在更新驱动程序时要建立好上网连接。 驱动程序安装完成后,可能需要重新启动系统。如果重新启动系统时出现错误,或者不能正常启动系统,请进入安全模式中,在“设备管理器”窗口中将刚安装的驱动程序删除或者禁用,在XP系统中还提供了驱动还原。

教你如何正确安装驱动程序

教你如何正确安装驱动程序 来源:作者:时间:2008-04-05 Tag:点击:1485 就像鱼离不开水一样,是离不开各种驱动程序的。或许有人没有特意安装过驱动程序,但 依旧可以使用。其实那只是一种假相:高版本的光盘中包含了老型号显卡、声卡等硬件的 驱动程序,所以在安装的同时,也安装了驱动。不过,我们还是需要学习驱动的知识,因 为硬件的更新总是领先于版本的更新的! 很多朋友在购买后,对重装系统非常头疼,尤其是对驱动程序的安装不知所措。那么,到底什么是驱动程序呢?我们在安装系统后又如何安装驱动程序呢?让本期的特别策划让你解 惑吧! 什么是驱动? 驱动程序实际上是一段能让与各种硬件设备通话的程序代码,通过它,操作系统才能控制上的硬件设备。如果一个硬件只依赖操作系统而没有驱动程序的话,这个硬件就不能发挥其特有的功效。换言之,驱动程序是硬件和系统之间的一座桥梁,由它把硬件本身的功能告诉给系统,同时也将标准的操作系统指令转化成特殊的外设专用命令,从而保证硬件设备的正常工作。 驱动程序也有多种模式,我们比较熟悉的是微软的Win32驱动模式(注:后面我们都以熟悉 的系统来讲解驱动),无论使用的是 9x 系列,还是 xp/2000操作系统,同样的硬件只需 安装其相应的驱动程序就可以用了。我们常常见到For 9x或者For NT/2000之类的驱动程序,是由于这两种操作系统的内核不一样的,需要针对的不同版本进行修改。而不需根据不同的操作系统重新编写驱动,这就给厂家和用户带来了极大的方便。 我们有时候在找到某个硬件型号的驱动程序之后,会出现VxD、WDM两种驱动。其中,VxD 驱动是一款虚拟驱动程序,类似于Dos下的驱动程序,如果你使用的是9X系统,使用VxD 驱动程序会发挥出你的硬件的最佳性能;而WDM驱动则是支持更多的新设备,可以增强系统性能和稳定性,在WinXp/2000操作系统中只支持WDM驱动。 驱动的查询 假如已将各个设备的驱动程序安装了,那它们都存在于的什么地方呢?而且又是以什么文件格式进行存储的呢? 1. 驱动的存储格式

编写USB驱动程序步骤

编写USB驱动程序步骤: 1所有usb驱动都必须创建主要结构体struct usb_driver struct usb_driver ->struct module *owner (有他可正确对该驱动程序引用计数,应为THIS_MODULE) ->const char *name (驱动名字,运行时可在查看 /sys/bus/usb/drivers/) ->const struct usb_device_id *id_table (包含该驱动可支持的所有不同类型的驱动设备,没添探测回调函数不会被调用) ->int (*probe)(struct usb_interface *intf,const struct usb_device_id *id) (usb驱动探测函数,确认后struct usb_interface 应恰当初始化,然后返0,如果出错则返负值) ->void(*disconnect)(struct usb_interface *intf) (当struct usb_interface 被从系统中移除或驱动正从usb核心中卸载时,usb核心将调用此函数)代码实例: static struct usb_driver skel_driver={ .owner = THIS_MODULE, .name = "skeleton", .id_table = skel_table, .probe = skel_probe, .disconnect = skel_disconnect, }; ↓ 2usb_register()注册将struct usb_driver 注册到usb核心,传统是在usb驱动程序模块初始化代码中完成该工作的

对于设备驱动通知应用程序的几种方法

对于设备驱动通知应用程序的几种方法 【摘要】在Windows操作系统中,设备驱动程序是操纵硬件的最底层软件接口。鉴于设备驱动程序通知应用程序的重要性,本人结合一些经验,对它进行了总结,归纳出5种方法摘要:异步过程调用(APC)、事件方式(VxD)、消息方式、异步I/O方式和事件方式(WDM)。 【关键词】设备;驱动;程序;方法 为了保证操作系统的平安性和稳定性以及应用程序的可移植性,Windows 操作系统不答应应用程序直接访问系统的硬件资源,而是必须借助于相应的设备驱动程序。设备驱动程序可以直接操作硬件,假如应用程序和设备驱动程序之间实现了双向通信,也就达到了应用程序控制底层硬件设备的目的。 在目前流行的Windows操作系统中,设备驱动程序是操纵硬件的最底层软件接口。为了共享在设备驱动程序设计过程中的经验,给出设备驱动程序通知应用程序的5种方法,具体说明每种方法的原理和实现过程,希望能够给设备驱动程序的设计者提供一些帮助。它们之间的通信包括两个方面摘要:一方面是应用程序传送给设备驱动程序的数据;另一方面是设备驱动程序发送给应用程序的消息。 前者的实现较轻易,通过CreateFile()函数获取设备驱动程序的句柄后,就可以使用Win32函数,如DeviceIoControl()、ReadFile()或WriteFile()等实现应用程序和设备驱动程序之间的通信。后者的实现远比前者复杂,同时介绍这方面情况的文章较少。这不等于说它不重要,相反,它在有些应用场合发挥着重要的功能。设备驱动程序完成数据的采集工作后,需要马上通知应用程序,以便应用程序能够及时将数据取走并进行处理。诸如此类情况,不一而足。 下面分别说明这几种方式的原理,并给出实现的部分源代码。 1.异步过程调用(APC) Win32应用程序使用CreateFile()函数动态加载设备驱动程序,然后定义一个回调函数backFunc(),并且将回调函数的地址%26amp;backFunc()作为参数,通过DeviceIoControl()传送给设备驱动程序。设备驱动程序获得回调函数的地址后,将它保存在一个全局变量(如callback)中,同时调用Get_Cur_Thread_Handle()函数获取它的应用程序线程的句柄,并且将该句柄保存在一个全局变量(如appthread)中。当条件成熟时,设备驱动程序调用_VWIN32_QueueUserApc()函数,向Win32应用程序发送消息。这个函数带有三个参数摘要:第一个参数为回调函数的地址(已经注册);第二个参数为传递给回调函数的消息;第三个参数为调用者的线程句柄(已经注册)。Win32应用程序收到消息后,自动调用回调函数(实际是由设备驱动程序调用)。回调函数的输入参数是由设备驱动程序填入的,回调函数在这里主要是对消息进行处理。

PE__驱动的最简单的添加方法

PE 驱动的最简单的添加方法 首先简单介绍一下PE系统的基本构成。大多情况是分两部分的,创建两个虚拟盘,分别安装PE的系统和外部程序,盘符分别为x和y,x盘用做PE的系统盘,y盘用做外部程序盘。 下面说一下驱动程序是怎样安装到PE系统上的,驱动文件又是安装到系统的那个目录里。 最简单的方法是用程序安装跟踪软件(Total Uninstall)看一下就一目了然了。请看下图

发现驱动程序的文件装入x盘下wxpe根目录的子目录里。驱动文件分三种类型即inf,dll,s ys它们分别装在wxpe/inf, wxpe/system32, wxpe/system32/driverx 目录里。 pe别的操作如注册表写入等我们就不关心了。有了这个思路,我们能否简单的把驱动文件复制到wxpe的子目录里完成驱动呢?经过大量试验,是可行的。 具体做法是这样的:用GETPEDRIVER1.4.EXE,备份驱动后再把驱动文件分三种类型文件分别装入wxpe的三个子目录里,现在剩下的是怎样激活启动。经过试验只要重新加载网卡驱动就可以了。 传统添加驱动一般人是很难实现的,这个方法基本都能实现。不过我们总不会每次启动都去复制驱动文件吧。下面就说一下怎么才能手动加载呢,我们来看一下U盘里的目录结构和文件存放情况吧。如下图 我们上面提到两个虚拟盘,一个是系统盘另一个是外部程序盘。我们知道pe启动后首先先创建这两个虚拟盘,然后就向两个虚拟盘解压程序,这时就建立pe的主运行环境,再完成一些必要的基本驱动加载后,就进入主界面完成了整个启动过程。但是三卡一般只加载了显卡,声网卡根据需要手动加载。 其他文件我们可以不去看,但是两个虚拟盘里是由哪些文件加载的?我们从相关资料了解到是G:\MINIPE目录下的两个镜像文件加载的,一个是WINPE03.IS_,另一个是op.WIM,WINPE03.IS_是系统文件,op.WIM是外部程序文件。在这里我们只关心的是其他两卡是怎样通过手动加载的,我们又知道通过手动加载的驱动程序是放在外部程序盘里,那么未加载前就是放在镜像“op.WIM”里。我们知道“op.WIM”是一个镜像文件。

未能成功安装设备驱动程序

windows 7 系统插入 U 盘 系统提示“未能成功安装设 备驱动程序” 设备管理器里显示黄色感叹号设备故 障非完美解决方案
作者: 寻修网 https://www.sodocs.net/doc/ff10076324.html, 阅读: 1959 时 间: 2011-6-16 16:38:00
文章导读: 故障描述: 寻修网 https://www.sodocs.net/doc/ff10076324.html,/ 接修一台电脑, 使用的是 windows 7 系统,故障情况是这样,这台电脑原来使用 U 盘一直正常,但某一天突然发现系统无法 正确识别 U 盘, 插入任何一个 U 盘, 系统通知区域都提示“未能成功安装设备驱动程序”, 在设备管理器里查看,“其它设备”显示一个带黄色感叹号图标的设备“Generic Flash Disk USB Device”。试了很多个 U 盘,发现只要是 U 盘都无法正确识别,但有个量产成 U 盘加 cdrom 的 U 盘,可以识别 CDROM 部分,读取顺利。
故障描述:寻修网 https://www.sodocs.net/doc/ff10076324.html,/ 接修一台电脑,使用的是 windows 7 系 统,故障情况是这样,这台电脑原来使用 U 盘一直正常,但某一天突然发现系统无法正确识 别 U 盘,插入任何一个 U 盘,系统通知区域都提示“未能成功安装设备驱动程序”,在设备 管理器里查看,发现“其它设备”显示一个带黄色感叹号图标的设备“Generic Flash Disk USB Device”。试了很多个 U 盘,发现只要是 U 盘都无法正确识别,但有个量产成 U 盘加 cdrom 的 U 盘,可以识别 CDROM 部分,读取顺利。 电脑情况:DELL 品牌机,型号为 Optiplex 780,自带 32 位 win7 旗舰版,通过 windows update 升级到 sp1。安装了金山卫士与金山毒霸安全软件组合。 以下是寻修网 https://www.sodocs.net/doc/ff10076324.html,/对该故障的完全处理过程, 多图杀猫, 请大家 忍耐。
一、故障情况:
插入 U 盘,设备管理器的“其它设备”显示一个带黄色感叹号图标的设备“Generic Flash Disk USB Device”。

开发usb驱动程序的方法

开发驱动程序的方法(连载一) 开始驱动程序设计 下面的文字是从的帮助中节选出来的,它让我们明白在开始设计驱动程序应该注意些什么问题,这些都是具有普遍意义的开发准则。应该支持哪些请求在开始写任何代码之前,应该首先确定我们的驱动程序应该处理哪些例程。 如果你在设计一个设备驱动程序,你应该支持和其他相同类型设备的驱动程序相同的和请求代码。 如果你是在设计一个中间层驱动程序,应该首先确认你下层驱动程序所管理的设备,因为一个高层的驱动程序必须具有低层驱动程序绝大多数例程入口。高层驱动程序在接到请求时,在确定自身当前堆栈单元参数有效的前提下,设置好中下一个低层驱动程序的堆栈单元,然后再调用将请求传递给下层驱动程序处理。 一旦决定好了你的驱动程序应该处理哪些,就可以开始确定驱动程序应该有多少个例程。当然也可以考虑把某些处理的例程合并为同一例程处理。例如在和里,对和处理的例程就是同一函数。对和处理的例程也是同一个函数。 应该有多少个对象? 一个驱动程序必须为它所管理的每个可能成为请求的目标的物理和逻辑设备创建一个命名对象。一些低层的驱动程序还可能要创建一些不确定数目的对象。例如一个硬盘驱动程序必须为每一个物理硬盘创建一个对象,同时还必须为每个物理磁盘上的每个逻辑分区创建一个对象。 一个高层驱动驱动程序必须为它所代表的虚拟设备创建一个对象,这样更高层的驱动程序才能连接它们的对象到这个驱动程序的对象。另外,一个高层驱动程序通常为它低层驱动程序所创建的对象创建一系列的虚拟或逻辑对象。 尽管你可以分阶段来设计你的驱动程序,因此一个处在开发阶段的驱动程序不必一开始就创建出所有它将要处理的所有对象。但从一开始就确定好你最终要创建的所有对象将有助于设计者所要解决的任何同步问题。另外,确定所要创建的对象还有助于你定义对象的的内容和数据结构。 开始驱动程序开发 驱动程序的开发是一个从粗到细逐步求精的过程。的\ 目录下有一个庞大的样板代码,几乎覆盖了所有类型的设备驱动程序、高层驱动程序和过滤器驱动程序。在开始开发你的驱动程序之前,你应该在这个样板库下面寻找是否有和你所要开发的类似类型的例程。例如我们所开发的驱动程序,虽然对描述得不是很详细,我们还是可以在\\目录发现很多和设备有关的驱动程序。下面我们来看开发驱动程序的基本步骤。 最简的驱动程序框架 、写一个例程,在里面调用创建一个对象。 、写一个处理请求的例程的基本框架 (参见 4.4.3描述的一个例程所要完成的最基本工作。当然写了例程后,要在例程为初始化例程入口)。如果驱动程序创建了多于一个对象,则必须为请求写一个例程,该例程通常情况下可以和共用一个例程,参见参见。 、编译连接你的驱动程序。 用下面的方法来测试你的驱动程序。 首先按上面介绍的方法安装好驱动程序。 其次我们还得为逻辑设备名称和目标对象名称之间建立起符号连接,我们在前面已经知道对象名称对用户模式是不可见的,是不能直接通过来访问的,只能访问逻辑设备名称。我们可以通过修改注册表来建立这两种名称之间的符号连接。运行在\\ \ \\ \ 下建立起符号连接(这种符号连接也可以在驱动程序里调用函数来创建)。

相关主题