《现代微机原理与接口》课件(研究生)第8章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《现代微机原理与接口》课件(研究生)第8章.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 现代微机原理与接口 现代 微机 原理 接口 课件 研究生
- 资源描述:
-
1、第第8章章 Windows软件接口及应用软件接口及应用 Windows软件接口软件接口 API系统功能接口系统功能接口 计算机硬件资源获取计算机硬件资源获取 Winsock网络编程接口网络编程接口 NetBIOS网络接口网络接口 Windows虚拟仪器技术虚拟仪器技术8.1 软件接口概述软件接口概述 1软件接口的分类 软件接口种类繁多,应用和开发也比较复杂,从系统的角度来看,软件系统大致可分为操作系统软件、应用软件(包括应用系统软件和具体应用的专业软件)等。 软件接口可分为如下三类: (1)操作系统接口类; (2)应用系统接口类; (3)应用软件接口类。 从软件的应用角度来进行软件分类,软件系
2、统可分为如下几类: (1)操作系统类软件; (2)数据库系统类软件; (3)图形、图像处理系统类软件; (4)办公系统类软件; (5)网络、通信系统类软件; (6)多媒体系统类软件; (7)其他系统类软件。2软件接口功能 Windows软件接口的主要功能是为应用程序的开发提供统一的编程界面,达到使不同的软件系统具有相互利用、共享信息的作用。具体来说,不同的软件接口具有不同的功能。 (1)数据库应用程序编程接口:目前数据库系统种类繁多,按系统规模和功能,数据库系统可以分为大、中、小数据库系统;从应用形式上数据库系统分为网络数据库系统和单机数据库系统;从应用体系上来分,数据库系统分为独立结构(单机
3、结构)、客户 机 / 服 务 器 ( C l i e n t / S e r v e r ) 结 构 和 浏 览 器 / 服 务 器(Browser/Server)结构。 (2)多媒体编程接口:在计算机技术高速发展的今天,计算机已不在是一个少数掌握高技术的计算机专家手中的计算工具,而发展成为可以完成工程计算、财务管理、CAI教学,还可以充当CD或VCD机,播放CD、VCD。 (3)网络、通信应用程序编程接口:无论WinSock还是NetBIOS等网络编程接口都向程序员提供了网络系统应用程序开发的API 函数。 3软件接口的调用方法 软件接口的调用方法总的来说就是通过动态连接库提供的API函数或
4、方法来实现的。但是,由于对函数的包装方式不同,就会使应用的方式有所不同。比较显著的就是Microsoft MFC。程序员使用Visual Studio如Visual C+进行Windows编程时通常有两种方式: (1)SDK编程:直接使用Windows API编程,API是指Windows以函数形式对外提供的编程接口。除了作为Windows扩展的部分API(如DirectX、OLE DB)是以COM形式提供外,Windows基本部分的API都是以独立函数的形式提供的,可以直接使用API编程。 (2)MFC编程:微软公司利用C+是对象化的特点,开发了很多C+类。利用这些类对Windows的大部分
5、对象及与有关的操作进行了封装,这些C+类合起来就形成了微软基本类库MFC。 8.2 API系统功能接口系统功能接口 Windows能够提供三种重要且最基本的任务。 (1)执行基本的输入和输出功能,负责与键盘、鼠标、显示器、打印机、磁盘文件和串行通信设备等打交道。这其中的大多数功能虽然在MS-DOS中也同样支持,但Windows中的基本输入/输出(I/O)函数远比DOS中的丰富。更重要的是,Windows中的I/O函数都是与设备无关的。 (2)内存管理。Windows允许程序动态申请和释放内存,Windows内存管理API允许程序透明地存取扩充内存(Expanded Memory,即由4.0版的
6、LIM EMS标准所支持的页方式内存)和延伸内存(Extended Memory,1 MB以上的可寻址空问,也译为扩展内存)。在基于80386和 80486的主机上,Windows还提供了对用户透明的虚拟内存(Virtual Memory,利用内存和磁盘之间进行交换的技术来实现的可共享内存)。 (3)支持多任务。Windows支持多任务,即允许两个或多个程序共享 CPU、内存和 I/O设备。Windows允许多任务就意味着Windows的I/O和内存管理API函数能够使多个程序协调地共享资源。 8.2.1 Windows API的功能与作用的功能与作用 1. 模块 在Windows中,模块是指
7、任何能够装入内存的可执行代码和数据的集合。一个模块或是包含一个用户编制的应用程序,或是一个硬件设备驱动程序,或是一个动态连接库(DLLs)函数,也可能是一个程序中所包含的能被另一个程序所存取的数据资源。 2. 函数 大多数Windows模块包含了一个或多个能被其他模块中的代码所调用的可执行代码,这些代码称为引出函数。由包含这个函数可执行代码的模块引出(Export)该函数;而由调用这个函数的模块引入(Import)该函数。 8.2.2 Windows API应用实例应用实例 在远程工业控制和数据采集中,主计算机(上位机)可利用RS-232C串行接口通过Modem与远程现场计算机(下位机)进行数
8、据通信,实时采集、控制现场计算机发送来的数据,控制远程计算机的工作等。远程控制的工作原理如图8.1所示。 (1)用Win32 API 函数:在Win32 API函数中主要定义了下面几个串口操作的函数。 (2)用Communication控件:微软提供的MS Communication控件是将串口操作进行封装的OCX控件,使用起来比较方便,也易于操作。在Visual Basic和Visual C+中,通过Active控制加载后可直接使用,但没有Windows API函数那样灵活,实现的功能受到一定的限制。 (3)用第三方厂商提供的OCX控件或DLLs动态链接库等软件包。目前许多软件公司针对串行端
9、口的控制,提供了相应的软件包,它们使用起来灵活方便,而且功能强大,并且可以跨平台操作。 1RS-232C控制函数 (1)串行口的打开和关闭 Win32系统把文件的概念进行了扩展,无论是文件还是通信设备均可用CreateFile函数打开或创建。该函数的声明为: HANDLE CreateFile(LPCTSTR lpFileName,/文件名 DWORD dwDesiredAccess,/访问模式 DWORD dwShareMode,/共享模式 LPSECURITY_ATTRIBUTES lpSecurityAttributes,/通常为NULL DWORD dwCreationDistribu
10、tion,/创建方式 DWORD dwFlagAndAttributes,/文件属性和标志 HANDLE hTemplateFile/临时文件的句柄,通常为NULL ); (2)串行口的初始化 在打开通信设备句柄后,需要对串行口进行一些初始化工作,包括DCB结构、缓冲区大小和超时等的设置。 (3)串行口的读/写操作 读/写串口的函数是ReadFile和WriteFile,可用同步方式执行,也可用 异 步 方 式 执 行 , 这 由 C r e a t e F i l e 函 数 中 是 否 指 定FILE_FLAG_OVERLAPPED来决定,指定为异步方式,未指定则为同步方式。函数ReadF
11、ile和WriteFile的参数和返回值类似,因此仅列出ReadFile函数的声明: BOOL ReadFile(HANDLE hFile; /文件句柄 LPVOID lpBuffer; /读缓冲区 DWORD nNumberOfBytesToRead; /要求读入的字节数 LPDWORD lpNumberOfBytesRead; /实际读入的字节数 LPOVERLAPPED lpOverlapped /指向一个OVERLAPPED结构 ); 2Modem控制命令 MODEM的状态可以分为命令状态和在线状态两种,命令状态还可以分为在线命令状态和离线命令状态。AT命令由特定的命令前缀“AT”开始
12、,由命令结束标志回车符结束,可以通过串行端口在MODEM处于命令状态时向其发送。 8.2.3 获取计算机硬件资源获取计算机硬件资源 1. 检测CPU的型号 检测计算机的CPU型号可用GetSystemInfo API函数获得,如将下面的代码添加到Button的Click事件中即可: void _fastcall TForm1:CPUCmdClick(TObject *Sender) SYSTEM_INFO systeminfo; GetSystemInfo (&systeminfo); Memo1-Lines-Add(CPU is:+String( systeminfo.dwProcessor
13、Type ); 2检测内存容量 获 得 内 存 容 量 的 方 法 与 获 取 C P U 型 号 基 本 相 同 , 不 同 的 是 用GlobalMemoryStatus API函数。其中,成员dwTotalPhys用来获得物理内存总量,而dwAvailPhys获得有效物理内存总量。其检测代码如下: void _fastcall TForm1:MEMCmdClick(TObject *Sender) MEMORYSTATUS memory; memory.dwLength =sizeof(memory); /初始化 GlobalMemoryStatus(&memory); Memo1-Li
14、nes-Add(物理内存是(Mb):+String(int(memory.dwTotalPhys/1024/102 4); Memo1-Lines-Add(其中可用内存是(Kb):+String(int( memory. DwAvailPhys/1024); 3. 检测可用硬盘空间 许 多 安 装 程 序 和 应 用 程 序 都 有 检 测 硬 盘 空 间 的 操 作 , 这 可 通 过GetDiskFreeSpace API函数来进行。如检测C盘的总容量和可用容量,可用下代码:void _fastcall TForm1:HDCmdClick(TObject *Sender) DWORD se
15、ctor,byte,cluster,free; long int freespace,totalspace; GetDiskFreeSpace(C:,§or,&byte,&free,&cluster); /获得返回参数 totalspace=int(cluster)*int(byte)*int(sector)/1024/1024; /计算总容量 freespace=int(free)*int(byte)*int(sector)/1024/1024; /计算可用空间 Memo1-Lines-Add(C盘总空间(Mb):+String(totalspace); Memo1-Lines-Ad
16、d(C盘可用空间(Mb):+String(freespace);4. 检测CD-ROM GetDriveType()函数返回一个06之间的值,依次代表:0未知盘、1不存在、2可移动磁盘、3固定磁盘、4网络磁盘、5CD-ROM、6内存虚拟盘。下面代码可寻找CD-ROM:void _fastcall TForm1:CDROMCmdClick(TObject *Sender) UINT type; char name; for (name=C;nameLines-Add(CD-ROM is:+String(name); 5. 检测声卡配置 通过waveOutGetNumDevs()和midiOutG
17、etNumDevs()检测波形设备和MIDI设备,利用waveOutGetDevCaps()和midiOutGetDevCaps()获得声音设备的细节资料。void _fastcall TForm1:SoundCardCmdClick(TObject *Sender) int wavedevice,mididevice; WAVEOUTCAPS wavecap; MIDIOUTCAPS midicap; wavedevice=(int)waveOutGetNumDevs(); /波形设备信息 mididevice=(int)midiOutGetNumDevs(); / MIDI设备信息 if
18、(wavedevice=0) Memo1-Lines-Add (没有发现波形设备); else waveOutGetDevCaps(0,&wavecap,sizeof(WAVEOUTCAPS); Memo1-Lines-Add (当前波形设备:+String(wavecap.szPname); if (mididevice=0) Memo1-Lines-Add (没有发现MIDI设备); else midiOutGetDevCaps(0,&midicap,sizeof(MIDIOUTCAPS); Memo1-Lines-Add (当前MIDI设备:+String(midicap.szPname
19、); 6. 检测显示器信息 检测色深则要用API函数GetDeviceCaps获得每像素的比特数和色彩的页面数,然后计算2的“每像素的比特数”次幂即得色彩的梯度数,再计算“色彩的梯度数”的“色彩的页面数”次幂才能得色深。由于该段程序用到了幂运算,所以需在程序首部添加#include 语句,程序如下:void _fastcall TForm1:MonitorCmdClick(TObject *Sender) int tcs; long int bpp,cp,tc; Memo1-Lines-Add (显示器分辨率为:+String(Screen-Width)+String (Screen-Heig
20、ht); bpp=GetDeviceCaps(Form1-Canvas-Handle,BITSPIXEL); tcs=pow(2,bpp); /计算色彩的梯度数 cp= GetDeviceCaps(Form1-Canvas-Handle,PLANES); tc= pow(tcs,cp); /计算色深 Memo1-Lines-Add(总颜色数:+String(tc);8.3 网络编程接口网络编程接口 主要对Windows Socket和NetBIOS的基本功能、原理进行介绍,同时介绍一些网络应用的实用程序,使读者掌握Windows Socket的程序设计方法和基于Internet/Intrane
21、t远程控制程序的设计方法。 8.3.1 网络协议及服务网络协议及服务 1协议概念 网络协议(也称通信协议)是指在计算机与计算机之间进行通信时,为了实现数据有序的发送和接收,必须遵循的一些事先约定好的规则(标准或约定)。在这些规则中明确地规定了通信时的数据格式、数据传送时序和相应的控制信息、应答信息等内容。 为保证计算机网络的开放性与兼容性,网络协议必须遵循标准化的体系结构,目前是指ISO的OSI标准或TCP/IP协议组标准。 在分层网络中,每层使用定义好的协议与它周围的各层进行通信,同时,当两台主机进行通信时它们的相应层也进行对话。我们把不同网络主机内的各层称为对等实体。对等实体间的通信叫虚通
展开阅读全文