首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
按声母检索 | A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z | 数字 | 符号 |
|
![]() |
您的位置: 5VAR论文频道 → 论文中心 → 理工论文 → 电子通信 |
|
|||||
WindowsCE环境下无线网卡的自动安装 | |||||
收集整理:佚名 来源:本站整理 时间:2009-01-10 22:55:59 点击数:[] ![]() |
|||||
indows CE环境驱劝PCMCIA无线网卡。 3.2 无线网卡安装的问题和解决方案 Windows CE操作系统支持两种类型的设备驱动程序:内置式设备驱动程序和可安装设备驱动程序。当目标朵与PC机相链,且目标机有显示屏和链盘时,对于可安装的设备驱动程序,其安装步骤为:建立目标机与PC机的连接,将设备驱动程序的.dll文件复制到Windows CE的Windows目录下;当系统检测到设备时,显示屏中会出现相应的对话框,用键盘输入驱动的名称即可。 项目中要为现有的无线网卡安装驱动程序。因为Windows CE系统运行时是基于RAM存储的,ROM相当于只读硬盘,一旦系统断电或冷启动后,RAM中的信息就会丢失,尤其是一些注册表的信息,所以要对RAM持续供电。但由于本系统硬件电源不能保证持续供电,安装了无线网卡的驱动程序后,信息存储在RAM中,系统断电或冷启动后,相关的信息会丢失。而且,目标机在实际使用中无显示屏和键盘。因此,断电重启时需要自动重新安装无线网卡驱动程序。 解决方案为:从系统持久存储SM卡中读取网卡驱动程序xi825.dll和TCP/IP属性配置文件config.txt,并按配置文件设备注册表键值,然后为无线网卡安装驱动程序。若需要根据具体应用环境更新TCP/IP属性值,可用新的配置文件覆盖SM卡中的旧文件,冷启动后,重新设备属性值,在安装网卡驱动即可。 用EVC编写应用程序完成自动安装无线网卡驱动的功能,图3为应用程序的大体流程。 首先,把两个文件从SM卡的storage card文件夹拷贝到Windows CE系统的Windows目录下;拷贝成功后,按config.txt的内容对注册表进行操作,设置具体环境下的TCP/IP属性值;系统检测到无线网卡后,在弹出名为“Unidentified PCCard Adapter”的对话框中程序自动输入网卡驱动程序名,完成无线网卡的自动安装。 3.3 几个具体问题的解决 下面,再讨论一下本方案中几个具体问题的解决办法。包括对注册表的操作、自动安装功能的实现、程序流程的总体控制以及将程序打包封装入操作系统的作法。 3.3.1 对注册表的操作 Windows CE中有一系列API函数可以对注册表进行操作,完成打开关闭注册表、读取或修改键值等功能。另外,Windows CE注册表中值的类型为Unicode;而配置文件config.txt是在PC机上产生的,类别为ANSI。要按cogfing.txt中读取的值设定注册表值,就要进行数据类型的转换,可以用函数MultiByteToWideChar()实现[4]。关键代码如下: RegOpenKeyEx(HKEY_LOCAL_MACHINE, //根键TEXT("Comm\xi8251\Parms\TcpIP"), //打开根键下的子键 0, //预留值,必设为0 0, //不支持此项,必设为0 &hKey //最终打开键的句柄指针 ); RegSetValueEx( hKey, //对键操作的句柄 TEXT("IpAddress"),//键中的数据项名 0, //预留值,必设为0 REG_GZ, //数据项中值的类型 (CONST BYE*)((LPCTSTR)regData),//存有数据项值的缓冲区 dwDataSize //值的字节数 ); //对"IpAddress"数据项的值作修改,即改变IP值 3.3.2 自动安装功能的实现 用FindWindows()函数判断对话窗口的出现;用keybd_event()函数模拟键盘输入。关键代码如下: TCHAR g_szTitle[80]=TEXT("Unidentified PCCard Adapter"); //指定对话框的标题 HWND hWnd=..FindWindows(NULL,g_szTitle); //判断此标题名的窗口是否已出现,不论是否为前台窗口 if (hWnd! =NULL) //若窗口已出现 {..SetForegroundWindows(hWnd); //将此窗口设置前台窗口 keybd_event(0x58,0,0,0); //按下x键 keybd_event(0x58,0,KEYEVENTE_KEYUP,0); //抬起x键 //完成了按下和抬起x键的两个动作,就模拟了键盘输入字符x. ............//用同样的方法输入 'i825.dll' keybd_event(0x0d,0,0,0); keybd_event(0x0d,0,KEYEVENTF_KEYUP,0); //最后输入确认键 } 正确输入后,可以看到无线网卡的显示灯开始闪烁,说明网卡已经安装成功,等待进行无线通信。 3.3.3 程序流程的总体控制 为了保证程序流程的顺序,整个程序中还需要有一个总体监视控制的管理员。这种监控功能,可以通过发送接收特定消息给主控函数的方法,也可以采用等待特定事件对象的方法,还可以采用开定时器查询的方法等。鉴于方法简单,而且对系统资源占用并不大,这里选用了开定时器查询的方法,并设置了标志位flag区分不同阶段工作,进行相应的操作。下面列出部门关键代码: flag=0; //最初标志位设为0,即先拷贝所需要文件 m_nTimer=SetTimer(1,2000,NULL); //开启定时器 KillTimer(m_nTimer); //时间到,先关闭定时器,进行相应判断和操作。 3.3.4 应用程序封装入系统 上文已经讲了将应用程序封装入操作系统的一般方法,分为应用程序的拷贝和修改系统配置文件两步。此项目最后要把开的应用程序monitor.exe打包封装入操作系统。这里重点介绍一下系统中几个配置文件的具体修改情况。 (1) 在Platform.bib文件中的Files部门加入以下代码 其中,monitor.lnk为monitor.exe的链接程序(快捷方式),制作方法 Tags: |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |