系统接口设计图片大全简单(接口详细设计)

网友投稿 498 2022-12-28


本篇文章给大家谈谈系统接口设计图片大全简单,以及接口详细设计对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享系统接口设计图片大全简单的知识,其中也会对接口详细设计进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

电脑上各种接口针脚定义大全

最常见的立体声耳机分三层,标准分布为“左右地红白”(从
端部到根部依次是左声道、右声道、地线,其中左声道常用红色线皮,
右声道常用白色的)。

最常见的是银白色的和铜黄色的,银色的是铜镀银,铜黄色的就
是铜。由于银的稳定性和电子工程性优于铜,所以铜镀上银后可以升
级使用该插头设备的用户体验。

USB是一种常用的pc接口,他只有4根线,两根电源两根信号,
故信号是串行传输的,usb接口也称为串行口,usb2.0的速度可以达
到480Mbps。可以满足各种工业和民用需要.USB接口的输出电压和电
流是: +5V 500mA 实际上有误差,最大不能超过+/-0.2V 也就是
4.8-5.2V 。usb接口的4根线一般是下面这样分配的,需要注意的
是千万不要把正负极弄反了,否则会烧掉usb设备或者电脑的南桥芯
片。黑线:gnd 红线:vcc 绿线:data+ 白线:data-

USB接口定义 颜色
一般的排列方式是:红白绿黑从左到右
定义:
红色-USB电源: 标有-VCC、Power、5V、5VSB字样
白色-USB数据线:(负)-DATA-、USBD-、PD-、USBDT-
绿色-USB数据线:(正)-DATA+、USBD+、PD+、USBDT+
黑色-地线: GND、Ground
USB接口的连接线有两种形式,通常我们将其与电脑接口连接的
一端称为“A”连接头,而将连接外设的接头称为“B”连接头(通常
的外设都是内建USB数据线而仅仅包含与电脑相连的“A”连接头)。

USB接口是一种越来越流行的接口方式了,因为USB接口的特点
很突出:速度快、兼容性好、不占中断、可以串接、支持热插拨等等,所以如今有许多打印机、扫描仪、数字摄像头、数码相机、MP3播放
器、MODEM等都开始使用USB做为接口模式,USB接口定义也很简单:
1 +5V
2 DATA+ 数据+
3 DATA- 数据-
4 GND 地

主板一般都集成两个串口,可Windows却最多可提供8个串口资
源供硬件设置使用(编号COM1到COM8),虽然其I/O地址不相同,但
是总共只占据两个IRQ(1、3、5、7共享IRQ4,2、4、6、8共享IRQ3),
平常我们常用的是COM1~COM4这四个端口。我们经常在使用中遇到
这个问题——如果在COM1上安装了串口鼠标或其他外设,就不能在
COM3上安装如Modem之类的其它硬件,这就是因为IRQ设置冲突而
无法工作。这时玩家们可以将另外的外设安装在COM2或4。
标准的串口能够达到最高115Kbps的数据传输速度,而一些增强
型串口如ESP(Enhanced Serial Port,增强型串口) 、Super
ESP(Super Enhanced Serial Port,超级增强型串口)等则能达到
460Kbps的数据传输速率。

串口是计算机主要的外部接口之一通过九针串口,连接的设备有
很多,像串口鼠标、MODEM、手写板等等。九针串口的示意图如上,
其各脚的定义如下:

1 DCD 载波检测
2 RXD 接收数据
3 TXD 发送数据
4 DTR 数据终端准备好
5 SG 信号地线
6 DSR 数据准备好
7 RTS 请求发送
8 CTS 清除发送
9 RI 振铃指示

显示器当然是很重要的设备了,显示器使用的是15针的连接公
头,因为显示器属于一种较为独立的电子器件,所以它的接头定义也
有很多较专业的部分,具体针脚定义如下:

RJ45 型网线插头又称水晶头,共有八芯做成,广泛应用于局域网和
ADSL 宽带上网用户的网络设备间网线(称作五类线或双绞线)的连
接。在具体应用时,RJ45 型插头和网线有两种连接方法(线序),
分别称作 T568A 线序(图1)和 T568B 线序(图2)。

RJ45 型网线插头引脚号的识别方法是:手拿插头,有 8 个小镀,
金片的一端向上,有网线装入的矩形大口的一端向下,同时将没有细
长塑料卡销的那个面对着你的眼睛,从左边第一个小镀金片开始依次
是第1 脚、第2 脚、···、第8 脚。

这种接法用于网络设备需要交叉互连的场合,所谓交叉是指网线
的一端和另一端与 RJ45 网线插头的接法不同,一端按 T568A 线序
接(图1),另一端按 T568B 线序接(图2),即有几根网线在另一
端是先做了交叉才接到 RJ45 插头上去的,适用的连接场合有:

T568B 线序的适用范围
一、直连线互连
网线的两端均按 T568B 接

最初的并口设计是单向传输数据的,也就是说数据在某一时刻只
能实现输入或者输出。后来IBM又开发出了一种被称为SPP(Standard
Parallel Port)的双向并口技术,它可以实现数据的同时输入和输
出,这样就将原来的半互动并口变成了真正的双方互动并口, Intel、
Xircom 及Zenith于1991年共同推出了EPP(Enhanced Parallel Port,
增强型并口),允许更大容量数据的传输(500~1000byte/s),其主要
是针对要求较高数据传输速度的非打印机设备,例如存储设备等;紧
接着EPP的推出,1992年微软和惠普联合推出了被称为ECP(Extended
Capabilities Port,)的新并口标准,和EPP不同,ECP是专门针对
打印机而制订的标准;发布于1994年的IEEE 1284涵盖了EPP和ECP
两个标准,但需要操作系统和硬件都支持该标准,这对现在的硬件而
言已不是什么问题了。目前我们所使用的并口都支持EPP和ECP这两
个标准,而且我们可以在CMOS当中自己设置并口的工作模式。

并口是计算机一个相当重要的外部设备接口,最常用来连接的设
备那就要算是打印机了,另外,有许多型号的扫描仪也是通过并口来
与计算机连接的。并口也是25针的,与25针串口不同的是,并口是
25个孔,所以常称为“母头”,而像串口就常称为“公头”。并口
的针脚定义如下:

IEEE1394接口又称Frie wire接口(中文俗称“火线”), 数据传
输率高,IEEE1394a接口能提供100Mbps,200Mbps,400Mbps等多种
传输格式;IEEE1394b能提供800Mbps数据传输率

eSATA的全称是External Serial ATA,eSATA实际上就是SATA
接口的外部扩展规范,传输速度和SATA完全相同。eSATA最高可提
供3Gb/s的传输速度,远远高于USB2.0和IEEE1394,目前很多台式
机的主板上已经提供了eSATA接口。

USB PLUS是一种接口的规格,可以说它并不算是真正意义上的
“USB”接口,因为它的基础是eSATA接口,或者我们可以说它就是
eSATA接口,只不过爱国者为了宣传或者统一称为而起名叫做USB
PLUS。我们知道,eSATA接口的传输速度远大于USB2.0接口,但是
它自身无法供电,移动设备也就无法使用eSATA接口。但爱国者通过
为传统的eSATA接口加入供电的功能,解决了这一问题,用户就可以
通过常规使用USB接口的方式来使用eSATA接口了。

DVI接口有多种规格,分为DVI-A、DVI-D和DVI-I,它是以Silicon
Image公司的PanalLink接口技术为基础,基于TMDS(Transition
Minimized Differential Signaling,最小化传输差分信号)电子协
议作为基本电气连接。TMDS是一种微分信号机制,可以将象素数据
编码,并通过串行连接传递。显卡产生的数字信号由发送器按照TMDS
协议编码后通过TMDS通道发送给接收器,经过解码送给数字显示设
备。一个DVI显示系统包括一个传送器和一个接收器。传送器是信号
的来源,可以内建在显卡芯片中,也可以以附加芯片的形式出现在显
卡PCB上;而接收器则是显示器上的一块电路,它可以接受数字信号,
将其解码并传递到数字显示电路中,通过这两者,显卡发出的信号成
为显示器上的图象。

前面我们已经提到过,DVI也分为几种规格,其中DVI-A其实就
是VGA接口标准,只是换汤不换药而已,目前的DVI接口主要是DVI-D
和DVI-I两种,而这两种规格中,又再分为“双通道”和“单通道”
两种类型,我们平时见到的都是单通道版的,双通道版的成本很高,
因此只有部分专业设备才具备。

区分不同DVI标准
常见的DVI接口中,DVI-D接口只能接收数字信号,接口上只有
3排8列共24个针脚,其中右上角的一个针脚为空。不兼容模拟信
号。
DVI-I接口可同时兼容模拟和数字信号。兼容模拟幸好并不意味
着模拟信号的接口D-Sub接口可以连接在DVI-I接口上,而是必须通
过一个转换接头才能使用,一般采用这种接口的显卡都会带有相关的
转换接头。

18针和24针DVI的区别
在买液晶显示器的时候,我们可能会发现,DVI有18针和24针
两种,有人说18针DVI是简化版,比24针的性能差很多,而也有的
人说24针DVI就是多了一些地线二者根本没有区别。究竟事实是怎
样?
之前我们已经跟大家提到过,在DVI的不同规格中,又分为“双
通道”和“单通道”两种类型,其实这18针、24针就是这两种类型
的差别。18针的DVI属于单通道,而24针属于双通道,也就是说,
18针的DVI传输速率只有24针的一半,为165MHz。在画面显示上,
单通道的DVI支持的分辨率和双通道的完全一样,但刷新率却只有双
通道的一半左右,会造成显示质量的下降。一般来讲,单通道的DVI
接口,最大的刷新率只能支持到1920 1080 60hz或1600 1200 60hz,
即现有23寸宽屏显示器和20寸普通比例显示器的正常显示,再高的
话就会造成显示效果的下降。

HDMI Type A socket.
HDMI的规格书中规定了三种HDMI接头, 分别是:

Pin Pin定义

测试规范
HDMI测试规范的规范细节请参考:《HDMI一致性测试规范1.1》,
《HDMI规范1.1》,《HDCP规范1.1》;
一.HDMI输出兼容性测试:
1,和HDMI接口电视的兼容性:同时传输音频和视频;
2,和DVI接口电视的兼容性:只传输视频;
3,和HDMI接口的功放的兼容性,只传输音频
判断标准:HDMI接口可以传输的音频支持“任何能通过S/PDIF
输出的压缩数字音频”和“2/6/8声道,32-192KHZ采样率的未压缩
的数字音频”,可以输出“I2S(一种数字传输界面,时差性能要优
于S/PDIF,适合短距离通讯)和SPDIF的音频”;它总能获得CD的
音频质量;HDMI接口可以传输的视频支持“高清1080I”,“高清
720P”,“普通隔行”和“普通逐行”(目前后两种我们没有支持),
同时支持NTSC和PAL电视制式;可以根据接受端可以接受的视频状
态自动输出“YUV”或“RGB”编码的视频格式:
二。HDMI端口插拔可靠性测试:
1,接口热插拔可靠性:在碟机和接受端都工作的状态下,插拔
HDMI接口,两端的设备是否工作正常,HDMI输出的音视频功能是否
正常;
2,ESD 测试
3,接口插拔寿命测试:多次插拔HDMI接口,测试HDMI接口寿
命;判断标准;热插拔时接受端能正常输出HDMI的音视频信号,源
端系统需仍正常工作;接口插拔寿命最少需要5000次以上;
三。HDMI输出的可靠性测试:
1,源输出端驱动能力测试;
2,连接线的衰减特性测试;
3,高频和大容量数据传输可靠性;
判断标准:最长可以传输30米,保证声音图像正常;大容量DVD
(多字幕,多通道)碟片播放画面的流畅性;
4,开机,待机时,HDMI是否输出正常。
四。HDMI连接线和接口的检测标准:
请参考HDMI接口和连接线的供应商的检测标准;
五。非正常工作状态下HDMI端口输出测试:
1,高低温状态;
2,高低压状态;
3,长时间工作状态;
判断标准:具体的温度,电压和工作时间的参数参考普通碟机;
在这些状态下,需要HDMI接口的音视频功能正常工作;
六。HDMI输出端口功能测试:
1,HDMI端口支持1080I,720P的高清格式视频输出;
2,HDMI端口支持各种压缩和非压缩的数字音频输出;
3,自动侦测接受设备的屏幕比例;判断标准:在同样的片源下,
HDMI高清输出图像效果应该比CVBS和普通色差“更清晰,无闪烁,
细节的表现力上更强,色彩更逼真”(可以用高清晰的JPEG图片或
DVD效果演示碟来演示);如果接受的电视设备可以解码由HDMI输
出的数字音频信号,接受端应该有声音输出;HDMI输出端可以自动
调整输出的宽高比来适应接受设备。

音频视频测试方案

HDMI测试包括视频测试和音频测试。
视频测试:
HDMI一致性测试标准推荐使用Quantum Data 882来进行一系列
的协议测试。
音频测试:HDMI的音频测试标准推荐使用AudioPrecision的
APX585来进行测试。AP公司是音频测试业界的标准仪器,为Dobly,
DTS ,miscrosoft DTM认证的指定音频分析仪

A卡与N卡的区别 首选说明的是Nvdia的GPU并没有集成音频
处理单元,所以各个HDMI显卡厂商都“曲线救国”在显卡上设置音
频输入接口,使用前要手动连接一下主板和显卡之前的数据线。而
ATI得GPU则没有这种问题。
以七彩虹显卡为例。
N卡上的音频是通过SPDIF IN接口引入的,在集成声卡主板上
或者独立声卡一般都有数字音频输出接口SPDIF OUT,用显卡附送的
音频线连接起来。这样HDMI才有音频信号输出,也就是说如果你
Nvdia显卡没有SPDIF IN,那么你只有将音响连接到电脑上了。

软件设置 一、NVIDIA独立显卡
步骤1:安装微软KB888111的HD Audio补丁和相应的声卡驱动
程序。
步骤2:在“控制面板→声音音频设备”中选择“SPDIF设备输
出”。
步骤3:安装NVIDIA显卡的ForceWare驱动,然后以高级方式打开
NVIDIA控制面板,进入“视频和电视→更改信号或HD制式”选项,
此时可以看到连接在电脑上的平板电视已经被系统检测出来(图2),
点击它的图标并根据电视的具体情况设置相应的视频分辨率即可(图
3),例如设置为Full HD的1080P模式
如果某些电视的分辨率比较特殊,我们还可以在“显示→管理自
定义分辨 率”菜单中自己编辑并建立新的分辨率模式(图4)。最后进行显卡
双头输出模式的设置,NVIDIA显卡一般提供了下面几个模式:双屏
显示(Dual View)、水平跨越、垂直跨越、复制等,这里推荐使用
Dual View模式,此时显示器和平板电视可以分别显示不同的内容,例如在显示器中使用
IE浏览网页,而在平板电视中观看高清电影
二、AMD独立显卡
步骤1:安装微软KB888111的HD Audio补丁。
步骤2:安装AMD显卡催化剂驱动程序以及催化剂控制中心(催
化剂驱动中包含显卡所集成的音频控制器驱动)。
步骤3:在“控制面板→声音音频设备”中选择“ATI HD Audio
rear output”作为音频输出设备(图5)。
步骤4:打开催化剂控制中心,在“多显示器桌面模式”菜单中
选择“扩展桌面模式”(图6),该模式类似于NVIDIA显卡的双屏
显示(Dual View),可以在两个显示器上分别设置不同的分辨率并
同时显示不同的窗口内容。随后在“视频→剧院模式”菜单中把“扩
展桌面显示覆盖”设置为“在剧院模式下(全屏幕)”(见图7和图
8)。最后在“显示器管理器”菜单中设置好平板电视的分辨率即可。
步骤5:AMD显卡还支持逐行扫描设置,这里选择“自动检测”(图
9)可以在播放1080i高清视频时适当减少画面中的毛糙、拉丝现象,
尤其是在高速运动画面中效果更加明显。
最新版本
负责为高清多媒体接口(HDMI)提供授权的代理机构HDMI
Licensing近日宣布该机构将在新版HDMI v1.4标准中加入立体视频
信号支持功能。负责标准制订的专家组将在下月召开的标准会议上将
向这个标准中加入暂定名为“Top/Bottom”的立体视频信号格式。标
准中将为立体视频信号的传输协议进行规定,不过HDMI Licensing
组织同时表示标准中暂不会对立体视频广播信号格式作强制性规定,
他们以后将会对这部分内容进行补充和修改。除了对立体视频信号的
传输协议进行规定之外,新规范同时还加入了数据传输功能,为HDMI
接口加入了一个专用的100Mbps以太网连接通道。另外还加入了用于
传输压缩格式音频信号的 Audio Return信道等等。

HDMI 1.4版线缆共有5种类型,今后规范的标识方式分别为:
Standard HDMI Cable 中文规范名称:标准HDMI线(最高支持
1080/60i)
Standard HDMI Cable with Ethernet 标准以太网HDMI线
Standard Automotive HDMI Cable 标准车用HDMI线
High Speed HDMI Cable 高速HDMI线 (支持1080p、DeepColor、3D)
High Speed HDMI Cable with Ethernet 高速以太网HDMI线
支持HDMI v1.4标准的设备已于2010年1月初召开的CES展会
上推出。
品牌
目前国际国内著名HDMI品牌有:索尼、兆龙、日立、松下、讯
维、开博尔、奥迪尔,JIB、北棋、HL、博禄德/BLUEDE, 秋叶原等。
而HDMI 1.4的插头及转接线的生产已经盛行,在东莞的南沣就
可以以专业技术批量生产。
hdmi兼容测试常见问题与解析:
绝大多数测试客户在第一次测试的时候都会或多或少的在一些
测试项目上失败。其实跟芯片相关的一些电气性能测试,比如“Jitter
Tolerance”等,芯片厂商都已经在芯片设计阶段考虑到如何保证通
过这些测试项目。所以客户需要特别注意一些跟系统设计相关的问
题,以及为配合测试所设计的功能,例如源端设备(Tx)需要提供可以
将HDCP(High Definition Content Protection)关闭和打开的选
项等。以下结合客户测试常遇到的问题对一些测试项目加以说明,希
望能够帮助读者在设计阶段就避免这些问题。
源端测试(Tx)
EDID 相关的测试
对于hdmi源端设备要求必须支持“Enhanced DDC”协议,即读
取接收端设备的EDID信息时可以使用段指针0x60读取首256字节以
后的信息。虽然现在绝大多数客户使用256字节的EDID信息,但是
hdmi测试时候会检测读取4个块(每块128个字节),即512字节
信息的能力。是否存在多块信息可以从EDID内容的0x7E地址获知。
客户自己测试时往往只测试对前256字节的支持能力,而忽略了对段
指针的要求。
+5V电源输出
有些客户习惯性地在hdmi输出端口的电源输出通路上串联电
阻,起到限流的作用。但在hdmi Tx 的测试中会接一个吸取55mA电
流的负载,然后测试输出电压,要求电压在4.8V和5.3V之间。例如
图1所示例子中串接了一个10欧姆的电阻,结果造成输出电压为,5
-10x0.055 = 4.45V < 4.8V,此项测试失败。
有关的 DDC/CEC 测量
客户在处理hdmi端口的消费类电子产品控制(CEC)管脚时,即
hdmi端口的第13管脚如果其产品不支持CEC功能,可以将此管脚
悬空。但往往是客户的产品虽然不支持CEC功能,还是将此管脚连接
到了主处理芯片的通用管脚上,已备今后扩展使用,此时需注意对此
管脚在电气性能和物理连接上的一些限制,比如电容需小于100pF
等,否则会导致hdmi测试无法通过。
接收端(Rx)测试
EDID相关测试项目应注意的问题
客户在测试过程中经常会失败在这些与EDID测试相关的项目。
其实这些项目如果熟悉规范的相关要求,通过相对来说是比较容易
的。例如有关规范要求在EDID的前128个字节中一定要提供“Monitor
Range Limit Header”和“Monitor Name Header”,但如果这两个
项目的内容分别不足18个字节的话,需要以0x0A为结尾同时以0x20
填充剩余的字节。另外一个经常在EDID测试中遇到的问题是,客户
不能将EDID中的短型视频描述符(SVD)模块与提交的能力申报表
(CDF)一致,在CDF中表明支持的格式在EDID的SVD模块中没有表明
支持,或者是相反。
TMDS信号差分阻抗匹配
现在大多数客户在设计电路板的时候都会考虑到TMDS信号差分
阻抗匹配的要求,但往往还是会在此项测试中失败,原因在于客户选
用的ESD保护器件或者是抑制EMI用的共模扼流圈寄生电容太大,导
致此项测试失败。现在很多用于高速线路的ESD保护器件的供应商都
会提供推荐的布线方案,而且也会提供阻抗测试图,客户可以要求这
些厂商提供相关的资料。此项测试是hdmi兼容性测试中为数不多的
跟硬件线路相关的测试项目,此项失败,客户往往需要更改电路板设
计,会耽误投产和上市时间。
DDC/CEC通道电容电压测试
此项测试是失败率非常高的项目。失败原因大多数是因为客户使
用的用于电平转换的MOSFET器件电容太大,我们建议在DDC通道上
所使用的MOSFET器件Ciss和Coss应该在10pF以下。
HPD输出电压
一些客户喜欢使用图2所示电路来利用hdmi端口的5V电压,同
时利用VCCD为hdmi端口的HPD管脚提供电压,但这会违反hdmi协
议中当hdmi +5V输入为0V时, HPD电压应大于0V, 并小于0.4V的
要求。这里最简单的方法是将hdmi输入端口的+5V电压串联一个1K
的电阻直接路由回HPD管脚。当然在此还是建议读者利用一个简单的
三极管开关电路对HPD管脚加以控制,这样可以主动告知源端设备下
游的设备是否已准备好或者告之源端设备重新开始一些验证动作例
如HDCP等,这可以增强设备的兼容性。
视频格式的支持
在此项测试中,对所有hdmi输入端口能够支持的视频格式会测
试支持50Hz的设备对于50Hz±0.5%(即49.75Hz和50.25Hz),和
支持59.94Hz或者60Hz的设备对59.94-0.5%(即59.64Hz)和60
+0.5%(即60.3Hz)场频变化的支持能力。客户在软件设计中需要
注意到这些对视频格式容忍度的要求。

求操作系统接口:Windows命令接口 设计(C++编的) 谢谢

基于XML的配置文件访问接口设计和实现(1)
目录
摘要
配置文件结构
XmlConfigReader类的实现
XmlConfigReader类的使用
摘要
在进行程序开发过程中,经常要将一些程序设置/使用的信息储存起来.由于这些信息和程序的设置/使用相关,与程序有相当的独立性,所以不可能硬编码到程序中.在这个时候我们选择使用基于Xml的配置文件进行存储.Microsoft的.NET Framework提供了一系列的基于.Config文件的读取的类,如System.Configuration 命名空间提供的AppSettings等类.但是此命名空间提供的类只能对配置文件进行读取,不能进行设置.所以在这里,我们实现自己的一个基于Xml的配置文件的类XmlConfigReader/XmlConfigWriter.
配置文件的结构
为了达到与原有的,系统自带的(.Config)配置文件的兼容性,我们选择使用类似.Config 文件的结构.示例如下:
<?xml version="1.0" encoding="utf-8" ?
<configuration
<appSettings
<add key="TimeOut" value="5000"/
<add key="UserName" value="client7" /
<add key="FileServerPort" value="8050" /
<add key="SpliteCharsForCMD" value=":"/
<add key="SpliteCharsForItem" value=";"/
<add key="SpliteCharsForSubItem" value=","/
</appSettings
<SockBaseSettings
<addd key="ServerIP" value="localhost"/
</SockBaseSettings
</configuration
所有的要设置的信息都放在Configuration节点的子节点(如appSettings/SockBaseSettings)的子节点中,这种结构有助于将不同的设置的信息进行归类/统一.结构和系统的.Config结构基本类似.这样就可以很方便的将此自定义的结构转为.Config文件.
XmlConfigReader类的实现
现在文件的基本结构已完成了,现在就开始编码,完成XmlConfigReader.
由于配置文件是以文件的形式放在硬盘上面的,所以这个XmlConfigReader类在解析Xml文件前得得到文件的路径.
public class XmlConfigReader
{
private string _filepath;
public XmlConfigReader(string filepath){
_filepath = Path.GetFullPath(filepath).ToUpper();
}
}
好,现在可以得到文件路径了.然后就是对配置文件进行解析了.在这里,我们选用.NET Framework提供的System.Xml命名空间中的轻量级的XmlTextReader来对配置文件进行解析.对应的XmlConfigReader中的函数定义如下:
public string Process(string sectionName,string key){
bool inConfiguration = false;
bool inSection = false;
string values;
XmlTextReader reader = new XmlTextReader(_filepath);
while( reader.Read()){
if( reader.IsStartElement()){
if( reader.Prefix == String.Empty)
{
if( reader.LocalName == "configuration")
{
inConfiguration = true;
}
else if( inConfiguration == true){
if( reader.LocalName == sectionName){
inSection = true;
}
else if( inSection reader.LocalName == "add"){
if( reader.GetAttribute("key") == null || reader.GetAttribute("value") == null)
{
throw new Exception(sectionName + " key or value is null");
}
if( reader.GetAttribute("key") == key){
values = reader.GetAttribute("value");
break;
}
}
}
}
}
}
reader.Close();
return values;
}
通过XmlTextReader的Read()函数对Xml文件中的节点进行遍历.同时先判断是否属于configuration节点中,再判断是否属于相应的sectionName中.只有在这两部分同时成立的时候才判断是否是相应的Key.如果是,得到其Value,并返回.
XmlConfigReader类的使用
好了,现在通过XmlConfigReader可以对配置文件进行读取了,这里我们看看实际使用的代码:
public class TestXmlConfigReader{
public void GetValues(){
XmlConfigReader reader = new XmlConfigReader(@"AppConfig.xml");
String Temp;
// Get appSettings username value
Temp = reader.Process("appSettings",”UserName");
// Get SockBaseSettings ServerIP value
Temp = Reader.Process(“SockBaseSettings”,”ServerIP”);
}
}
总结
通过XmlConfigReader类,我们可以很方便的自定义我们自己的配置文件.
基于XML的配置文件访问接口设计和实现(2)
目录
摘要
XmlConfigWriter类的实现
XmlConfigWriter类的使用
摘要
在进行程序开发过程中,经常要将一些程序设置/使用的信息储存起来.由于这些信息和程序的设置/使用相关,与程序有相当的独立性,所以不可能硬编码到程序中.在这个时候我们选择使用基于Xml的配置文件进行存储.Microsoft的.NET Framework提供了一系列的基于.Config文件的读取的类,如System.Configuration 命名空间提供的AppSettings等类.但是此命名空间提供的类只能对配置文件进行读取,不能进行设置.所以在这里,我们实现自己的一个基于Xml的配置文件的类XmlConfigReader/XmlConfigWriter.
XmlConfigWriter类的实现
由于要对配置文件进行写入,而且可能写入的次数比较多.所以这里我们不使用轻便的XmlTextWriter,使用XmlDocument.XmlDocument可以在内存中修改所有的Xml的节点,只有等到显式的调用Save函数的时候才会保存Xml文件.在有大量修改的时候,性能要好一些.
同样的,先实现XmlConfigWriter的构造函数
public class XmlConfigWriter
{
private string _filepath;
private XmlDocument doc ;
public XmlConfigWriter(string filepath)
{
_filepath = Path.GetFullPath(filepath);
doc =new XmlDocument();
doc.Load(_filepath);
}
}
通过构造函数,将配置文件的路径传进去,同时调用XmlDocument的Load方法,将此文件加载到内存中.
这里我们使用的是XmlDocument类.它实现 W3C 文档对象模型 (DOM) 级别 1 核心 (Level 1 Core) 和核心 DOM 级别 2 (Core DOM Level 2)。DOM 是 XML 文档的内存中(缓存)树状表示形式,允许对该文档的导航和编辑.通过XmlDocument,我们就可以很方便的在内存中直接操作节点.
.对配置文件的写入,不外忽三种,一种就是新插入一个节点,一种就是对现有节点的修改,最后一个就是删除现有的节点.我们首先从插入开始入手.代码如下:
private XmlNode CreateXmlNode(string localname){
return doc.CreateNode(XmlNodeType.Element,localname,"");
}
private XmlAttribute CreateXmlAttribute(string localname){
return doc.CreateAttribute("",localname,"");
}
public void AddSection(string section){
XmlNode secNode = doc.SelectSingleNode("/configuration/"+section);
if(secNode != null){
return;
}
doc.DocumentElement.AppendChild(CreateNode(section));
}
public void AddKey(string section,string key,string value){
XmlNode secNode = doc.SelectSingleNode("/configuration/"+section);
if( doc.SelectSingleNode("/configuration/" + section + "/add[@key=\"" + key + "\"]") != null)
{
return;
}
XmlNode chi = CreateXmlNode("add");
XmlAttribute att = CreateXmlAttribute("key");
att.Value = key;
chi.Attributes.Append(att);
att = CreateXmlAttribute("value");
att.Value = value;
chi.Attributes.Append(att);
secNode.AppendChild(chi);
}
对于配置文件的插入,有两种情况,一个就是插入一个新的Section节点(即appSettings/SockBaseSettings这样的节点),一个就是在当前的Section节点下面插入一个新的add节点.在上面的代码中,对于插入节点的操作,都是首先通过doc的SelectSingleNode函数来判断是否已存在此同名节点,如果存在,则直接return,避免创建同名的节点.但是,由于在最终使用的add节点是分属于不同的Section节点的,所以只是判断在同一个Section节点下面的此节点不能同名.
如果不存在同名的节点,就通过secNode.AppentChild函数将此新建的(通过CreateXmlNode函数)节点加入到doc对象中.同时,对于add节点,通过CreateXmlAttribute函数及XmNode.Attributes.Appent函数将其key / value属性加入到此节点中.这样,插入操作就完成了.
接着我们来完成删除操作.删除操作直接通过XmlDocument的SelectSingleNode得到目标节点的父节点,再通过XmlNode.RemoveChild操作将其删除.代码如下:
public void DeleteSection(string section){
XmlNode secNode = doc.SelectSingleNode("/configuration/"+section);
doc.DocumentElement.RemoveChild(secNode);
}
public void DeleteKey(string section,string key){
XmlNode secNode = doc.SelectSingleNode("/configuration/" + section + "/add[@key=\"" + key + "\"]");
if(secNode != null)
{
secNode.ParentNode.RemoveChild(secNode);
}
}
现在开始修改操作.对于修改操作,思路是这样的,首先通过XmlDocument的SelectSingleNode搜索,看是否有满足条件的节点.如果没有,直接return,如果存在,则分两情况.对于add节点,只是直接修改其value属性.对于Section节点,则是通过遍历把其下所有的子节点(add节点)得到,再把此Section节点删除,再生成一个新的节点(这个新的节点的Name就为要设置的值),再把得到的所有子节点再赋给这个新的节点.代码如下:
public void ModifySection(string oldSection,string newSection){
XmlNode secNode = doc.SelectSingleNode("/configuration/"+oldSection);
XmlNodeList list = secNode.ChildNodes;
doc.DocumentElement.RemoveChild(secNode);
secNode = doc.CreateNode(XmlNodeType.Element,newSection,"");
foreach( XmlNode i in list){
secNode.AppendChild(i);
}
doc.DocumentElement.AppendChild(secNode);
}
public void ModifyKey(string section,string key,string value){
XmlNode secNode = doc.SelectSingleNode("/configuration/" + section + "/add[@key=\"" + key + "\"]");
if(secNode != null)
{
secNode.Attributes["value"].Value = value;
}
}
好了,插入,修改,删除操作到现在基本完成了,但是现在还只是在内存中进行操作,还不是对实际的文件进行操作.这个时候,我们就还得通过XmlDocument.Save函数把内存中修改好的Xml文件写入到文件中去.代码如下:
public void Save(){
doc.Save(_filepath);
}
public void Save(string filepath)
{
doc.Save(filepath);
}
XmlConfigWriter类的使用
使用方法很简单.先产生一个XmlConfigWriter对象,通过构造函数把配置文件传进去,再通过Add/Modify/Delete等函数进行操作.代码如下:
XmlConfigWriter Writer = new XmlConfigWriter(@”appconfig.xml”);
Writer.AddSection(“appSettings”);
Writer.AddKey(“appSettings”,”ServerIP”,”localhost”);
Writer.ModifyKey(“appSettings”,”ServerIP”,”127.0.0.1”);
Writer.ModifySection(“appSettings”,”SockBaseSettings”);
Writer.DeleteKey(“SockBaseSettings”,”ServerIP”);
Writer.DeleteSection(“SockBaseSettings”);
Writer.Save();
总结
通过编写XmlConfigWriter,我们学会使用XmlDocument的使用.
基于XML的配置文件访问接口设计和实现(3)
目录
摘要
增加缓存支持
增加配置文件监视
增加ConfigurationSettings类
摘要
前面的两篇中,我们实现了XmlConfigReader和XmlConfigWriter的基本功能.由于XmlConfigReader的实现方式是每请求一次,就去解析配置文件一次,性能很低下.同时,为了更方便使用,我们增加一个ConfigurationSettings类,用来调用XmlConfigReader和XmlConfigWriter,使之用起来和System.Configuration中的类使用方式一样.
增加缓存支持
由于XmlConfigReader的实现方式是请求一次,解析配置文件一次,而且配置文件的信息在程序运行的时会大量使用,这样子显然效率太低.因此,这里就要使用到缓存.
缓存,其实就相当于一个静态的变量,在整个程序运行时是唯一的,通过这样的一个变量,把信息存储到这个变量里面,在程序的其它地方就可以直接得到这个信息了.从而避免了频繁的解析配置文件.这里,我们选择使用Hashtable做为缓存变量.
在MSDN中,我们可以查到System.Configuration命名空间中的AppSettings类返回的是一个NameValueCollection(Key/Value键值对).为了方便使用,我们将配置文件解析后的信息也存成NameValueCollection这样的集合.
这样定义好了后,对于Hashtable中的Key设置为Section节点的名字(appSettings/SockBaseSettings),其Value值即为此节点的所有子节点的NameValueCollection类的对象.
修改代码.给XmlConfigReader增加一个静态Hashtable变量,并修改相关函数.把得到的信息直接以NameValueCollection的形式存入到此Hashtable中.
private static Hashtable confTypes = new Hashtable();
private string rootname;
public void Process(){
XmlTextReader reader = new XmlTextReader(_filepath);
while( reader.Read()){
if( reader.IsStartElement()){
#region Analyze the files
if( reader.Prefix == String.Empty)
{
if( reader.LocalName == "configuration")
{
inConfiguration = true;
}
else if( inConfiguration == true){
if(reader.LocalName == "add")
{
if( reader.GetAttribute("key") == null || reader.GetAttribute("value") == null)
{
throw new Exception(rootname + " key or value is null");
}
AddKey(tables,reader.GetAttribute("key"),reader.GetAttribute("value"));
}
else
{
rootname = reader.LocalName;
}
}
}
#endregion
}
else if ( reader.LocalName == "configuration"){
inConfiguration = false;
}
}
reader.Close();
}
private void AddKey(string key,string value){
NameValueCollection collection ;
if(confTypes.ContainsKey( rootname )){
collection = (NameValueCollection) confTypes [rootname];
}
else{
lock(confTypes.SyncRoot){
collection = new NameValueCollection();
confTypes.Add( rootname,collection);
}
}
collection.Add(key,value);
}
上面代码中,我们修改了Process函数.把原来的直接return结果的地方改成调用AddKey函数.通过一个类成员 rootname临时储存当前的SectionName,通过AddKey把得到的Key/Value加入到Hashtable中.
现在这样修改后,就不能直接通过Process得到我们想到得到的Key的Value了.所以我们再写一个函数,
public NameValueCollection GetCollection(string SectionName){
if( confTypes.ContainsKey(SectionName)){
return (NameValueCollection)confTypes[SectionName];
}
else{
throw new Exception(confName + " is not found in XmlConfiguration files");
}
}
这里,我们直接通过SectionName得到此节点所有的子节点的NameValueCollection集合.这样,我们就可以得到我们想要的值了.
增加配置文件监视
上面的代码实现了配置文件的缓存.大大提高了灵活性.但是存在一个问题,就是,如果配置文件修改了,这个缓存不会自动更新.
要解决这个问题,我们得使用FileSystemWatcher这个类,用来订阅文件修改消息,进而更新缓存.由于在第一次解析前就要把此配置文件加入到监视文件表中,所以我们修改XmlConfigReader,增加一个静态的FileSystemWatcher,用来保存监视文件的对象,增加一个静态的Bool值表明是否修改过.再修改构造函数,使配置文件在一开始就加入到监视列表中.代码如下:
Private static FileSystemWatcher watch = new FileSystemWatcher();
Private static bool isModify = true;
public XmlConfigReader(string filepath){
_filepath = Path.GetFullPath(filepath).ToUpper();
watch.IncludeSubdirectories = false;
watch.Path = Path.GetDirectoryName(filepath);
watch.NotifyFilter = NotifyFilters.Size | NotifyFilters.LastWrite;
watch.Filter = Path.GetFileName(filepath);
watch.Changed += new FileSystemEventHandler(Change_Even);
watch.EnableRaisingEvents = true;
}
由于是通过事件机制实现文件修改通知的,所以我们还要实现Chane_Even这个函数,通过这个函数修改isModify的值.
private void Change_Even(object sender, FileSystemEventArgs e){
isModify = true;
}
这样子,对于配置文件的监视的代码就完成了,现在就是修改我们的GetCollection代码的时候了.
修改后的代码如下:
public NameValueCollection GetCollection(string SectionName){
if( isModify ){
lock(confTypes.SyncRoot){
confTypes.Clear();
Process();
}
isModify = false;
}
if( confTypes.ContainsKey(SectionName)){
return (NameValueCollection)confTypes[SectionName];
}
else{
throw new Exception(confName + " is not found in XmlConfiguration files");
}
}
到现在,整个XmlConfigReader的代码已完成了,可以实现对文件的监视,从而动态修改缓存中的值.
增加ConfigurationSettings类
为了便于使用,我们增加了一个ConfigurationSettings的类,使用他的用法和System.Configuration命名空间中的类的用法一样.代码定义如下:
public class ConfigurationSettings : XmlConfigWriter
{
private static string _filepath = @"AppConfig.xml";
public static string DefaultFilePath
private static XmlConfigReader reader;
{
get{return _filepath;}
set{_filepath = Path.GetFullPath(value);}
}
public static NameValueCollection AppSettings
{
get{
if( reader == null){
reader = new XmlConfigReader(DefaultFilePath);
}
return reader.GetCollection("appSettings");
}
}
public static NameValueCollection GetConfig(string sectionName){
get{
if( reader == null){
reader = new XmlConfigReader(DefaultFilePath);
}
return reader.GetCollection(sectionName);
}
}

电脑的组成部分和功能各是什么?

一个完整的计算机系统系统接口设计图片大全简单,是由硬件系统和软件系统两大部分组成的。
一、电脑的硬件系统
所谓硬件系统接口设计图片大全简单,就是用手能摸得着的实物,一台电脑一般有系统接口设计图片大全简单
1、主机:主机从外观看是一个整体,但打开机箱后,会发现它的内部由多种独立的部件组合而成。
下面介绍一下电脑主机的各个部件:
(1)电源:电源是电脑中不可缺少的供电设备,它的作用是将220V交流转换为电脑中使用的5V,12V,3.3V直流电,其性能的好坏,直接影响到其他设备工作的稳定性,进而会影响整机的稳定性。
(2) 主板:主板是电脑中各个部件工作的一个平台,它把电脑的各个部件紧密连接在一起,各个部件通过主板进行数据传输。也就是说,电脑中重要的“交通枢纽”都在主板上,它工作的稳定性影响着整机工作的稳定性。
(3) CPU:CPU(Central Precessing Unit)即中央处理器,其功能是执行算,逻辑运算,数据处理,传四舍五入 ,输入/输出的控制电脑自动,协调地完成各种操作。作为整个系统的核心,CPU 也是整个系统最高的执行单元,因此CPU已成为决定电脑性能的核心部件,很多用户都以它为标准来判断电脑的档次。
(4) 内存:内存又叫内部存储器(RAM),属于电子式存储设备,它由电路板和芯片组成,特点是体积小,速度快,有电可存,无电清空,即电脑在开机状态时内存中可存储数据,关机后将自动清空其中的所有数据。
(5) 硬盘:硬盘属于外部存储器,由金属磁片制成,而磁片有记功能,所以储到磁片上的数据,不论在开机,还是并机,都不会丢失。
(6) 声卡:声卡是组成多媒体电脑必不可少的一个硬件设备,其作用是当发出播放命令后,声卡将电脑中的声音数字信号转换成模拟信号送到音箱上发出声音。
(7)显卡:显卡在工作时与显示器配合输出图形,文字,其作用是负责将CPU送来的数字信号转换成显示器识别的模拟信号,传送到显示器上显示出来。
(8) 调制解调器:调制解调器是通过电话线上网时必不可少的设备之一。它的作用是将电脑上处理的数字信号转换成电话线传输的模拟信号。
(9) 网卡:网卡的作用是充当电脑与网线之间的桥梁,它是用来建立局网的重要设备之一。
(10) 软驱:软驱用来读取软盘中的数据。软盘为可读写外部存储设备。
(11) 光驱:光驱是用来读取光盘中的设备。光盘为只读外部存储设备,其容量为650MB左右。
2、显示器:显示器有大有小,有薄有厚,品种多样,其作用是把电脑处理完的结果显示出来。它是一个输出设备,是电脑必不可缺少的部件之一。
3、键盘:键盘是主要的输入设备,用于把文字,数字等输到电脑上。
4、鼠标:当人们移到鼠标时,电脑屏幕上就会有一个箭头指针跟着移动,并可以很准确切指到想指的们位置,快速地在屏幕上定位,它是人们使用电脑不可缺少的部件之一。
5、音箱:通过它可以把电脑中的声音播放出来。
6打印机:通过它可以把电脑中的文件打印到纸上,它是重要的输出设备之一。
7、摄像头、扫描仪、数码像机等设备。
________________________________________
二、电脑的软件系统
软件是指程序运行所需的数据以及与程序相关的文档资料的集合。可分为:
1 操作系统软件:人们知道,电脑完成许多非常复杂的工作,但是它却“听不懂”人们的语言,要想让电脑完成相关的工作,必须由一个翻译把人们的语言翻译给电脑。此时,操作系统软件就充当这里的“翻译官”,负责把人们的意思“翻译”给电脑。由电脑完成人们想做的工作。
2、应用软件:应用软件是用于解决各种实际问题以及实现特定功能的程序。
此外还有程序设计软件:程序设计软件是由专门的软件公司编制,用来进行编程的电脑语言。程序设计软件主要包括语言,汇编语言和高级语言。不过这些软件一般人是不使用的。
大致就说这些吧。 关于系统接口设计图片大全简单和接口详细设计的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 系统接口设计图片大全简单的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于接口详细设计、系统接口设计图片大全简单的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java实现的数字签名算法RSA完整示例
下一篇:使用java NIO及高速缓冲区写入文件过程解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~