长沙理工大学移动通信实习报告_第1页
长沙理工大学移动通信实习报告_第2页
长沙理工大学移动通信实习报告_第3页
长沙理工大学移动通信实习报告_第4页
长沙理工大学移动通信实习报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、城南学院通信工程移动通信实习报告姓 名 学 号 20118525030实习指导老师 代玲莉、曹敦、王新、吴志敏实习地点 长沙理工大学现代通信实验室实习时间 2014.9.29 2014.10.3 2014.10.27 2014.11.7指导老师评语:实习成绩等级:指导老师签名:日期:序 言 本次实习的内容是移动通信,实习时间为2014.9.29 2014.10.3 2014.10.27 2014.11.7 主要内容分为移动通信核心侧和移动通信无线侧两大部分。实习地点在长沙理工大学云塘校区理科楼。 实验室内包括无线侧部分的RNC(即实验室中的BSC6810)、NodeB、SDHMetro1000

2、等设备,核心侧包括MSOFTX3000、UMG8900、SGSN9800等设备。在老师的带领下熟悉了移动通信设备的基本组成,最后使用软件MML对设备进行离线配置来掌握移动通信设备的操作和维护。第一部分 移动通信核心侧 一、移动通信核心侧实习目的和要求1.认识华为WCDMA 3G移动核心侧设备MSOFX3000、UMG8900、HLR9820、SGSN9810等设备的外观及结构。2.认识移动核心侧设备的基本组成,了解WCDMA核心网网元设备及各个单板。3.能独立完成如MSOFX3000数据配置、HLR的数据配置和UMG8900的数据配置。4. 实习完成后,针对期间的主要收获,记录实习日志,并写实

3、习报告。 二、移动通信核心侧主要设备硬件结构介绍 CS域的设备主要有MSOFTX3000、UMG8900、HLR9820,PS域的设备主要有SGSN9810、GGSN9811。 1、MSOFTX3000硬件介绍 MSOFTX3000主要完成位置管理、呼叫控制、媒体网关控制等功能,可以同时作为MSC Server、 TMSC Server 、GMSC Server、VLR、SSP等功能实体进行组网。MSOFTX3000的N68-22机柜宽600mm,深800mm,高2200mm。MSOFTX3000硬件逻辑结构由5个模块组成,即:系统支撑模块、接口模块、信令底层处理模块、业务处理模块和操作维护模

4、块。MSOFTX3000硬件逻辑结构如图2-1所示:图2-1 MSOFTX3000硬件逻辑结构图 MSOFTX3000系统支撑模块实现软件/数据的加载、设备管理/维护及板间通讯等功能。接口模块提供各类物理接口以满足系统组网的需求,包括窄带接口单元、IP接口分发单元、ATM接口分发单元,通过扣在通用处理板上的扣板和后插板配合实现各类接口。信令底层处理模块提供信令的底层协议处理功能,包括七号信令MTP2处理单元和SCTP处理单元。业务处理模块由业务处理单元、中心数据库单元、VLR数据库板、媒体关控制单元构成。操作维护模块完成设备的操作维护管理,对用户提供进行本地操作维护的人机接口,并对网管系统提供

5、接口,此外,操作维护模块还进行话单管理,并提供计费接口给计费中心。 2、UMG8900硬件介绍 下图2-3是UMG8900整个系统图。图2-2 UMG8900系统图 由上图可以知道,UMG8900由操作维护子系统、分组业务处理子系统、网关控制子系统、业务资源子系统、信令转发子系统、时钟子系统、TDM业务处理子系统组成。在UMG8900中还有许多插板,比如说OMU、CMU、PPU、ASU等。OMU主要提供提供控制平面交换功能,完成框内所有单板控制信息交互,完成多框级联情况下的框间控制信息的交互和接口管理。完成设备所有单板状态的监控和管理,完成主控框内各单板和其它MGW插框各单板的管理和监控。OM

6、U内BAM,支持MML以及Telnet等接口,实现设备单板的配置管理和维护等,可以存储各种日志和告警信息文件。通过专用的维护模块来实现设备的状态查询、监控和上下电管理,通过控制单板上电顺序,可以避免瞬间电流的影响。3、 HLR9820硬件介绍 华为HLR9820软件包含SAU(负责信令的接入和发送)、HDU(HLR数据库单元:数据存储和访问接口,以及MAP消息处理)、SMU(用户管理单元)、BAM(提供设备操作维护接口)四个部分。下图2-3是HLR9820操作维护系统功能结构图。图2-3 HLR9820操作维护系统功能结构图 在上图中的SAU单元是一个用于信令接入和转发的交换机,主要是为IP/

7、No.7/ATM信令提供物理接口,处理TCAP层以上(包含TCAP层)的信令,将上层信令及业务的处理送到HDU完成。HDU是HLR的核心数据库,主要完成系统配置数据存储、用户数据存储、MAP业务处理、三项功能。BAM为用户提供了对设备的操作维护接口和后天管理功能。SMU为HLR9820提供用户数据管理功能。 4、SGSN9810硬件介绍 SGSN在网络中的位置非常重要,它提供了很多重要的功能,用户可以通过GPRS/UMTS网络实现基于IP、PPP的各类应用(IP/PPP承载业务)。如图2-4为SGSN9810结构:图2-4 为SGSN9810结构 SGSN9810基本功能有IP/PPP承载业务

8、:用户可以通过GPRS/UMTS网络实现基于IP、PPP的各类应用。移动性管理:用来控制MS在GPRS/UMTS的接入及跟踪MS当前的位置信息。安全性管理:对操作员的权限进行控制。会话管理:实现分组数据协议PDP上下文的管理。计费功能:SGSN、GGSN负责收集每个MS与无线网络及核心网络资源使用相关的计费信息,生产CDR,通过Ga接口发送到CG。QoS和流量管理:保证了对3GPP R99定义的四类QoS的完全支持。静态与动态路由:支持多种路由协议,可以实现Gn/Gp接口的灵活组网。SNMP功能:网管。UGFU VLAN功能:满足出报文带VLAN标签。特定用户QoS功能:对特定用户的QoS进行

9、限制。 5、GGSN9811硬件介绍 GGSN(Gateway GSN,网关GSN)主要是起网关作用,它可以和多种不同的数据网络连接,如ISDN、PSPDN和LAN等。有的文献中,把GGSN称为GPRSHYPERLINK /view/1360.htm路由器。GGSN可以把GSM网中的GPRS分组数据包进行协议转换,从而可以把这些分组数据包传送到远端的TCP/IP或X.25网络。 GPRS网络与外网的HYPERLINK /view/948516.htm分界线,对内负责Gn网络的传输,对外是一台因特网路由器。其中的BGGSN(Border GGSN)负责连接不同运营商之间的Gn网络,实现网间漫游。

10、GGSN通过基于IP协议的GPRS骨干网与其它GGSN和SGSN相连。其主要的功能有:网络接入控制功能、维护路由表,实现路由选择和分组的转发功能、用户数据管理,实现对分组数据的过滤、移动性管理功能等。其硬件逻辑结构图如下图2-5。图2-5 GGSN9811 硬件逻辑结构图 三、移动通信核心侧实习操作具体内容描述 在老师的带领下参观了MSOFT 3000以及UMGB 8900设备。了解了单板名称,单板实现的功能以及其后插板的接口连线。认识标签,学会根据标签找到线所连到的目的地址。对MSOFT3000的脚本进行配置练习。了触设备中各自单板的名称及作用。了解后插板上接口的连线,及线的走向。学习移动传

11、输设备的基本操作过程和常规维护管理。王老师给我们一个硬件数据配置的练习题:新建一个MSOFXT3000,配置了一个机柜,在位置2有一个基本框,具体单板配置如下。WIFM板的IP地址为0,掩码为,网关为。做这道题的时候先根据步骤如图3-1:图为3.1 为MSOFXT3000硬件配置示意图 首先配置机架、机框、单板,然后配置中央数据库功能,接下来配置FE端口信息,最后配置E1端口和时钟信息。程序如下:ADDSHF:SHN=0,LT=csust,ZN=0,RN=0,CN=0;ADDFRM:FN=0,SHN=0,PN=2;ADDBRD:FN=0,SLN=0,LOC=FRONT,FRBT=WCSU,MN

12、=22,ASS=255;ADDBRD:FN=0,SLN=1,LOC=FRONT,FRBT=WCCU,MN=23,ASS=255;ADDBRD:FN=0,SLN=2,LOC=FRONT,FRBT=WIFM,MN=132,ASS=255;ADDBRD:FN=0,SLN=3,LOC=FRONT,FRBT=WIFM,MN=133,ASS=255;ADDBRD:FN=0,SLN=4,LOC=FRONT,FRBT=WAFM,MN=134,ASS=255;ADDBRD:FN=0,SLN=5,LOC=FRONT,FRBT=WAFM,MN=135,ASS=255;ADDBRD:FN=0,SLN=10,LOC=F

13、RONT,FRBT=WIFM,MN=136,ASS=255;ADDBRD:FN=0,SLN=11,LOC=FRONT,FRBT=WIFM,MN=137,ASS=255;ADDBRD:FN=0,SLN=12,LOC=FRONT,FRBT=WMGC,MN=138,ASS=255;ADDBRD:FN=0,SLN=13,LOC=FRONT,FRBT=WMGC,MN=139,ASS=255;ADDBRD:FN=0,SLN=14,LOC=FRONT,FRBT=WCDB,MN=102,ASS=255;ADDBRD:FN=0,SLN=15,LOC=FRONT,FRBT=WCDB,MN=103,ASS=255;

14、ADDBRD:FN=0,SLN=0,LOC=BACK,BKBT=WEPI;ADDBRD:FN=0,SLN=13,LOC=BACK,BKBT=WCKI;ADDBRD:FN=0,SLN=15,LOC=BACK,BKBT=WCKI;ADDFECFG:MN=132,IP=0,MSK=,DGW=;MODFECFG:MN=132,IP=0,MSK=,DGW=,EA=FH;ADDFECFG:MN=133,IP=0,MSK=,DGW=;MODFECFG:MN=133,IP=0,MSK=,DGW=,EA=FH;ADDFECFG:MN=136,IP=0,MSK=,DGW=;MODFECFG:MN=136,IP=0

15、,MSK=,DGW=,EA=FH;ADDFECFG:MN=137,IP=0,MSK=,DGW=;MODFECFG:MN=137,IP=0,MSK=,DGW=,EA=FH;ADDEPICFG:FN=0,SN=2,E0=DF,E1=DF,E2=DF,E3=DF,E4=DF,E5=DF,E6=DF,E7=DF,BM=NONBALANCED;ADDCDBFUNC:CDBMN=102,FUNC=TKAGT-1&VDB-1&CGAP-1&JUDGE-1&VEIR-1&AFLEX-1&ECTCF-1&TK-1;SETCLKMODE:CL=LEVEL3,WM=AUTO; 四、移动通信核心侧实习过程和认识首先,

16、王老师用PPT给我们讲解了基本概论与原理,然后分组轮流去近距离接触设备,找各模块,然后在自己电脑上配置程序,配置完成后申请席位去查看自己配置的是否正确,并对错误的同学的典型例子进行了分析。 移动通信核心侧实习使我进一步消化课堂上学到的理论知识,加深对UMG8900工作原理的理解,通过这次实习,我感到受益匪浅,更深一步了解到CS域的UMG8900接口数据配置,在Mc接口上遵循从H.248协议与MGC进行通信H.248可以采用SCTP、UDP等不同的传输层协议来进行传输,目前在UMTS、GSM组网中应用较多的是采用SCTP协议传送。虽然在自己动手的过程中参考了别人的程序,但实习中读懂程序,然后根据

17、题目将程序更改,感觉很有趣。在实习的过程中还遇到过不少问题,但通过跟同学讨论,问老师,查资料,都一一解决了,提高了自己的动手能力,也丰富了知识。第二部分 移动通信无线侧移动通信无线侧实习目的和要求1.认识华为WCDMA 3G移动核心侧设备DBS3900、BSC6810等设备的外观及结构。2了解DBS3900、BSC6810设备各个单板及作用。3.在老师指导下完成DBS3900全局设备调试、BSC6810接口调试等。 4. 实习完成后,针对期间的主要收获,记录实习日志,并写实习报告。移动通信无线侧主要设备硬件结构介绍 1、BSC6810设备介绍:BSC6810采用华为公司12U屏蔽插框,机柜外形

18、尺寸2133mm(高)*600mm(宽)*800(深),可用空间高度44U ,正视硬件结构主要由风扇盒,安装挂耳,前走线槽,单板构成,后背板主要由接地螺钉,直流电源输入接口,配电盒监控信号输入接口和拨码开关构成,基本业务插框中置背板,前后共28个槽位,框内单板采用前后对插方式安装。机框类型为WRSS和WRBS,如图2-1、2-2:图2-1 BSC6810机柜结构及其指标图2-2 BSC6810机框介绍 WCDMA RNC交换机架(WRSR),1个BSC6810系统包括1个WRSR机架;WRSR机架包括WCDMA RNC交换插框、WCDMA RNC业务插框和配电盒;单个WRSR机架的满配置功耗为

19、4650W。WCDMA RNC业务机架(WRBR),1个BSC6810系统包括1个WRBR机架;WRBR机架包括WCDMA RNA业务插框和配电盒;单个WRBR机架的满配置功耗为4660W。WCDMA RNC交换插框(RSS),BSC6810系统包括1个RSS插框,RSS包括操作维护管理单板OMUa、GE交换和控制单板SCUa、信令处理单板SPUa、通用时钟单板、数据处理单板、RNC接口板。WCDMA RNC业务插框(RBS),BSC6810系统包括15个RBS插框;RBS插框包括信令处理单板、数据处理单板、GE交换和控制单板、RNC接口板。 接下来是详细介绍BSC6810的硬件结构,如图2-

20、3为BSC6810的SCU单板,图2-4为BSC6810的DPUb单板:图2-3为BSC6810的SCU单板 该插框是SCU单板的配置维护主控板,为SCU单板提供GE交换,为 本插框其他单板提供同步时钟和时间同步信息,固定配置在基本业务插框和扩展业务插框的第6、7号槽位,构成主备用关系。 图2-4 为BSC6810的DPUb单板DPUb板为数据处理单元,提供无线帧协议处理功能、复用和解复用功能、实现数据的选择和分发、完成SPUa单板和DPUb单板间内部通讯协议处理。 GCU为通用时钟单板,提供系统时时间同步所需的系统时间信息和传输同步所需的同步定时信号,可外加GPS接收卡,固定配置在0号业务插

21、框的第12、13号槽位,构成主备用方式。具体功能介绍如图2-5:图2-5 GCU单板介绍 AOUa单板是一种光接口板,支持ATM over通道化的STM-1/OC-3c。如图2-6:图2-6 AEUa单板介绍 UOIa是 一种光接口板,通过加载不同的软件可分别支持ATM或IP over非通道化STM-1/OC-3c传输方式。如图2-7:图2-7 UOIa单板介绍 2、DBS3900硬件介绍 DBS3900设备包括基带处理模块BBU3900、室外型射频拉远模块RRU、射频模块WRFU。基于IP交换的无线平台,支持GSM和WCDMA双模共机柜应用,支持HSPA+,支持向LTE平滑演进。采用双星型G

22、E IP交换,支持更大的内部数据交换能力,满足未来HSPA+和LTE更大数据流量的需求。实验室DBS3900结构图如图2-8所示:图2-8 实验室DBS3900结构移动通信无线侧实习操作具体内容描述在老师的带领下我们参观了NODE B基站,认识NODE B实物对应的名称。NODE B是WCDMA系统的基站(即无线收发信机),通过标准的LUB接口和RNC互联,主要完成Uu接口物理层协议的处理。它的主要功能是扩频、调制、信道编码及解扩、解调、信道解码,还包括基带信号和射频信号的相互转换等功能。实物如图3-1所示:图3-1 NODE B实物图从上到下依次是天线、避雷针、GPS、RRU、电源单板、防雷

23、单板、BBU单板等,并了解设备间的连线。信号从天线进来经过馈线途径衰减器衰减进入RRU。从RRU的CPRI光口出来连入BBU,然后从BBU的E1线连入防雷板,再从防雷板的E1线接入配线架。然后从配线架出去到METRE1000,进行光电转换,然后回到配线架,再接入到RNC。我们了解了信号接收和数据在NODE B设备中的走向;认识移动通信设备的外观及结构,了解几种实际设备的型号、参数、性能指标和运行情况;了解BNC的逻辑结构,RNC逻辑上由交换子系统、业务处理子系统、传输子系统、时钟同步子系统、操作维护子系统、供电子系统和环境监控子系统组成。移动通信无线侧实习过程和认识 首先由老师讲解PPT给我们

24、大致解释了设备的各个模块的功能以及整个流程中的次序。讲解完毕后我们分组依次参观了实验室的设备。老师详细地给我们讲解了NODE B基站设备各部分的名称,解释了信号流程以及数据在基站内的走向。在讲解各个单板时,上面的接口也做了详尽的说明,并且在考核钟对我们进行了测验。 首先,老师用PPT为我们演示讲解了基础理论知识。之后,老师以小组的方式近距离接触机器进行讲解。老师为每个小组的同学讲解设备机框之间以及各单板之间的连接,老师详细地给我们讲解了NODE B基站设备各部分的名称,解释了信号流程以及数据在基站内的走向。在讲解各个单板时,上面的接口也做了详尽的说明,介绍完之后,再对配置脚本里的各配置语句的意

25、义及配置原理,然后进行实际操作。第三部分 实习总结 这次实习虽然时间很短,但在实习中接触到的设备都是把理论应用于实践的,这样的方式使我们清晰的掌握了我们专业知识的应用方向以及方式,潜移默化中解决了我们对于专业前途的迷茫,原来移动实习是这样的。在实习中我们不仅仅参观了设备,还亲手动手配置,本次实习我们主要进行了移动通信核心侧、移动通信无限侧的学习。对WCDMA的全网结构和基本设备有了一定的了解,并进行了脚本配置,通过控制脚本的学习加深对实验设备的了解,其中包括了MSOFTX3000和BSC6810的基本配置。通过这次实习,提高了我们对通信领域的认识,有利于培养我们在该方面的设计能力,锻炼我们独立

26、分析问题和解决问题的能力。 这次实习提供了非常好的实习环境,让我们每个人都能亲眼、亲手看和操作设备,使我进一步消化课堂上学到的理论知识。附录:代码功能:新建一个MSOFXT3000,配置了一个机柜,在位置2有一个基本框,具体单板配置如下。WIFM板的IP地址为0,掩码为,网关为。程序如下:ADDSHF:SHN=0,LT=csust,ZN=0,RN=0,CN=0;ADDFRM:FN=0,SHN=0,PN=2;ADDBRD:FN=0,SLN=0,LOC=FRONT,FRBT=WCSU,MN=22,ASS=255;ADDBRD:FN=0,SLN=1,LOC=FRONT,FRBT=WCCU,MN=23

27、,ASS=255;ADDBRD:FN=0,SLN=2,LOC=FRONT,FRBT=WIFM,MN=132,ASS=255;ADDBRD:FN=0,SLN=3,LOC=FRONT,FRBT=WIFM,MN=133,ASS=255;ADDBRD:FN=0,SLN=4,LOC=FRONT,FRBT=WAFM,MN=134,ASS=255;ADDBRD:FN=0,SLN=5,LOC=FRONT,FRBT=WAFM,MN=135,ASS=255;ADDBRD:FN=0,SLN=10,LOC=FRONT,FRBT=WIFM,MN=136,ASS=255;ADDBRD:FN=0,SLN=11,LOC=FR

28、ONT,FRBT=WIFM,MN=137,ASS=255;ADDBRD:FN=0,SLN=12,LOC=FRONT,FRBT=WMGC,MN=138,ASS=255;ADDBRD:FN=0,SLN=13,LOC=FRONT,FRBT=WMGC,MN=139,ASS=255;ADDBRD:FN=0,SLN=14,LOC=FRONT,FRBT=WCDB,MN=102,ASS=255;ADDBRD:FN=0,SLN=15,LOC=FRONT,FRBT=WCDB,MN=103,ASS=255;ADDBRD:FN=0,SLN=0,LOC=BACK,BKBT=WEPI;ADDBRD:FN=0,SLN=13

29、,LOC=BACK,BKBT=WCKI;ADDBRD:FN=0,SLN=15,LOC=BACK,BKBT=WCKI;ADDFECFG:MN=132,IP=0,MSK=,DGW=;MODFECFG:MN=132,IP=0,MSK=,DGW=,EA=FH;ADDFECFG:MN=133,IP=0,MSK=,DGW=;MODFECFG:MN=133,IP=0,MSK=,DGW=,EA=FH;ADDFECFG:MN=136,IP=0,MSK=,DGW=;MODFECFG:MN=136,IP=0,MSK=,DGW=,EA=FH;ADDFECFG:MN=137,IP=0,MSK=,DGW=;MODFECF

30、G:MN=137,IP=0,MSK=,DGW=,EA=FH;ADDEPICFG:FN=0,SN=2,E0=DF,E1=DF,E2=DF,E3=DF,E4=DF,E5=DF,E6=DF,E7=DF,BM=NONBALANCED;ADDCDBFUNC:CDBMN=102,FUNC=TKAGT-1&VDB-1&CGAP-1&JUDGE-1&VEIR-1&AFLEX-1&ECTCF-1&TK-1;SETCLKMODE:CL=LEVEL3,WM=AUTO;附录资料:不需要的可以自行删除 perl函数应用一、进程处理函数1、进程启动函数函数名eval调用语法eval(string)解说将string看作P

31、erl语句执行。正确执行后,系统变量$为空串,如果有错误,$中为错误信息。例子$print = print (hello,worldn);eval ($print);结果输出hello, world函数名system调用语法system(list)解说list中第一个元素为程序名,其余为参数。system启动一个进程运行程序并等待其结束,程序结束后错误代码左移八位成为返回值。例子proglist = (echo, hello,world!);system(proglist);结果输出hello, world!函数名fork调用语法procid = fork();解说创建程序的两个拷贝-父进程和

32、子进程-同时运行。子进程返回零,父进程返回非零值,此值为子程序的进程ID号。例子$retval = fork();if ($retval = 0) # this is the child process exit; # this terminates the child process else # this is the parent process结果输出无函数名pipe调用语法pipe (infile, outfile);解说与fork合用,给父进程和子进程提供通信的方式。送到outfile文件变量的信息可以通过infile文件变量读取。步骤:1、调用pipe2、用fork将程序分成父进

33、程和子进程3、一个进程关掉infile,另一个关掉outfile例子pipe (INPUT, OUTPUT);$retval = fork();if ($retval != 0) # this is the parent process close (INPUT); print (Enter a line of input:n); $line = ; print OUTPUT ($line); else # this is the child process close (OUTPUT); $line = ; print ($line); exit (0);结果输出$programEnter

34、a line of input:Here is a test lineHere is a test line$函数名exec调用语法exec (list);解说与system类似,区别是启动新进程前结束当前程序。常与fork合用,当fork分成两个进程后,子进程用exec启动另一个程序。例子 结果输出函数名syscall调用语法syscall (list);解说调用系统函数,list第一个元素是系统调用名,其余为参数。如果参数是数字,就转化成C的整型数(type int)。否则传递字符串的指针。详见UNIX的帮助或Perl文档。使用syscall必须包含文件syscall.pl,即:requi

35、re (syscall.ph); 例子结果输出2、进程终止函数函数名Die调用语法die (message);解说终止程序并向STDERR输出错误信息。message可以为字符串或列表。如果最后一个参数不包含换行符,则程序文件名和行号也被输出。例子die (Cannot open input file);结果输出Cannot open input file at myprog line 6.函数名warn调用语法warn (message);解说与die类似,区别是不终止程序。例子warn(Danger! Danger!n);结果输出Danger! Danger!函数名exit调用语法exit

36、 (retcode);解说终止程序并指定返回值。例子exit(2);结果输出无函数名kill调用语法kill (signal, proclist);解说给一组进程发送信号。signal是发送的数字信号,9为杀掉进程。proclist是进程ID列表。详见kill的UNIX帮助。例子结果输出3、进程控制函数函数名sleep调用语法sleep (time);解说将程序暂停一段时间。time是停止的秒数。返回值为实际停止的秒数。例子sleep (5);结果输出无函数名wait调用语法procid = wait();解说暂停程序执行,等待子进程终止。不需要参数,返回值为子进程ID,如果没有子进程,返回-

37、1。例子结果输出函数名waitpid调用语法waitpid (procid, waitflag);解说暂停程序执行,等待特定的子进程终止。procid为等待的进程ID例子$procid = fork();if ($procid = 0) # this is the child process print (this line is printed firstn); exit(0); else # this is the parent process waitpid ($procid, 0); print (this line is printed lastn);结果输出$ programthi

38、s line is printed firstthis line is printed last$4、其它控制函数函数名caller调用语法subinfo = caller();解说返回调用者的程序名和行号,用于Perl Debugger。返回值为三元素的列表:1、调用处的包名2、调用者文件名3、调用处的行号例子结果输出函数名chroot调用语法chroot (dir);解说改变程序的根目录,详见chroot帮助。例子结果输出函数名local调用语法local($variable);解说在语句块(由大括号包围的语句集合)中定义局域变量,仅在此语句块中起作用,对其的改变不对块外同名变量造成影响。

39、千万不要在循环中使用,否则每次循环都定义一个新的局域变量!例子结果输出函数名times调用语法timelist = times解说返回该程序及所有子进程消耗的工作时间。返回值为四个浮点数的列表:1、程序耗用的用户时间2、程序耗用的系统时间3、子进程耗用的用户时间4、子进程耗用的系统时间例子结果输出二、数学函数函数名sin调用语法retval = sin (value);解说参数为弧度值。函数名cos调用语法retval = cos (value);解说参数为弧度值。函数名atan2调用语法retval = atan2 (value1, value2);解说运算并返回value1除以value2

40、结果的arctan值,单位为弧度,范围在-PIPI。应用例:角度转化成弧度子程序。sub degrees_to_radians local ($degrees) = _; local ($radians);11: $radians = atan2(1,1) * $degrees / 45;函数名sqrt调用语法retval = sqrt (value);解说平方根函数。value为非负数。函数名exp调用语法retval = exp (value);解说返回e的value次方。函数名log调用语法retval = log (value);解说以e为底的自然对数。函数名abs调用语法retval

41、 = abs (value);解说绝对值函数。(Perl 4中没有)函数名rand调用语法retval = rand (num);解说随机数函数,返回0和整数num之间的一个浮点数。函数名srand调用语法srand (value);解说初始化随机数生成器。保证每次调用rand真正随机。三、字符串处理函数函数名index调用语法position = index (string, substring, position);解说返回子串substring在字符串string中的位置,如果不存在则返回-1。参数position是可选项,表示匹配之前跳过的字符数,或者说从该位置开始匹配。函数名rind

42、ex调用语法position = rindex (string, substring, position);解说与index类似,区别是从右端匹配。函数名length调用语法num = length (string);解说返回字符串长度,或者说含有字符的数目。函数名pos调用语法offset = pos(string);解说返回最后一次模式匹配的位置。函数名substr调用语法substr (expr, skipchars, length)解说抽取字符串(或表达式生成的字符串)expr中的子串,跳过skipchars个字符,或者说从位置skipchars开始抽取子串(第一个字符位置为0),子串

43、长度为length,此参数可忽略,意味着取剩下的全部字符。当此函数出现在等式左边时,expr必须为变量或数组元素,此时其中部分子串被等式右边的值替换。函数名study调用语法study (scalar);解说用一种内部格式提高变量的访问速度,同一时刻只对一个变量起作用。函数名lcuc调用语法retval = lc(string);retval = uc(string);解说将字符串全部转换成小/大写字母。函数名lcfirstucfirst调用语法retval = lcfirst(string);retval = ucfirst(string);解说将第一个字母转换成小/大写。函数名quotam

44、eta调用语法newstring = quotemeta(oldstring);解说将非单词的字母前面加上反斜线()。语句 : $string = quotemeta($string);等效于:$string = s/(W)/$1/g;常用于模式匹配操作中,确保字符串中没有字符被看作匹配操作符。函数名join调用语法join (joinstr, list);解说把字符串列表(数组)组合成一个长的字符串,在每两个列表元素间插入串joinstr。函数名sprintf调用语法sprintf (string, fields);解说与printf类似,区别是结果不输出到文件,而作为返回值赋给变量。例子$

45、num = 26;$outstr = sprintf(%d = %x hexadecimal or %o octaln,$num, $num, $num);print ($outstr);结果输出26 = 1a hexadecimal or 32 octal四、标量转换函数函数名chop调用语法$lastchar = chop (var);解说var可为变量或数组,当var为变量时,最后一个字符被删除并赋给$lastchar,当var为数组/列表时,所有元素的最后一个字符被删除,最后一个元素的最后一个字母赋给$lastchar。函数名chomp调用语法result = chomp(var);解

46、说检查字符串或字符串列表中元素的最后一个字符是否为由系统变量$/定义的行分隔符,如果是就删除。返回值为实际删除的字符个数。函数名crypt调用语法result = crypt (original, salt);解说用DES算法加密字符串,original是将要加密的字符串,salt是两个字符的字符串,定义如何改变DES算法,以使更难解码。返回值为加密后的串。函数名hex调用语法decnum = hex (hexnum);解说将十六进制数(字符串形式)转化为十进制数。函数名int调用语法intnum = int (floatnum);解说将浮点数舍去小数部分转化为整型数。函数名oct调用语法de

47、cnum = oct (octnum);解说将八进制数(字符串形式)或十六进制数(0 x.形式)转化为十进制数。函数名ord调用语法asciival = ord (char);解说返回单个字符的ASCII值,与PASCAL中同名函数类似。函数名chr调用语法$char = chr (asciival);解说返回ASCII值的相应字符,与PASCAL中同名函数类似。函数名pack调用语法formatstr = pack(packformat, list);解说把一个列表或数组以在实际机器存贮格式或C等编程语言使用的格式转化(包装)到一个简单变量中。参数packformat包含一个或多个格式字符,

48、列表中每个元素对应一个,各格式字符间可用空格或tab隔开,因为pack忽略空格。除了格式a、A和外,重复使用一种格式多次可在其后加个整数,如: $twoints = pack (i2, 103, 241);把同一格式应用于所有的元素则加个*号,如: $manyints = pack (i*, 14, 26, 11, 83);对于a和A而言,其后的整数表示要创建的字符串长度,重复方法如下: $strings = pack (a6 x 2, test1, test2);格式的情况比较特殊,其后必须加个整数,该数表示字符串必须的长度,如果长度不够,则用空字符(null)补足,如: $output =

49、 pack (a 6 a, test, test2);pack函数最常见的用途是创建可与C程序交互的数据,例如C语言中字符串均以空字符(null)结尾,创建这样的数据可以这样做: $Cstring = pack (ax, $mystring);下表是一些格式字符与C中数据类型的等价关系:字符 等价C数据类型CcharddoubleffloatiintIunsigned int (or unsigned)llongLunsigned longsshortSunsigned short完整的格式字符见下表。 格式字符 描述a用空字符(null)补足的字符串A用空格补足的字符串b位串,低位在前B位串

50、,高位在前c带符号字符(通常-128127)C无符号字符(通常8位)d双精度浮点数f单精度浮点数h十六进制数串,低位在前H十六进制数串,高位在前i带符号整数I无符号整数l带符号长整数L无符号长整数n网络序短整数N网络序长整数p字符串指针s带符号短整数S无符号短整数u转化成uuencode格式vVAX序短整数VVAX序长整数x一个空字节X回退一个字节以空字节(null)填充函数名unpack调用语法list = unpack (packformat, formatstr);解说unpack与pack功能相反,将以机器格式存贮的值转化成Perl中值的列表。其格式字符与pack基本相同(即上表),不

51、同的有:A格式将机器格式字符串转化为Perl字符串并去掉尾部所有空格或空字符;x为跳过一个字节;为跳过一些字节到指定的位置,如4为跳过4个字节。下面看一个和X合同的例子: $longrightint = unpack (* X4 L, $packstring);此语句将最后四个字节看作无符号长整数进行转化。下面看一个对uuencode文件解码的例子:1 : #!/usr/local/bin/perl2 : 3 : open (CODEDFILE, /u/janedoe/codefile) |4 : die (Cant open input file);5 : open (OUTFILE, ou

52、tfile) |6 : die (Cant open output file);7 : while ($line = ) 8 : $decoded = unpack(u, $line);9 : print OUTFILE ($decoded);10: 11: close (OUTFILE);12: close (CODEDFILE); 当将pack和unpack用于uuencode时,要记住,虽然它们与UNIX中的uuencode、uudecode工具算法相同,但并不提供首行和末行,如果想用uudecode对由pack的输出创建的文件进行解码,必须也把首行和末行输出(详见UNIX中uuenco

53、de帮助)。函数名vec调用语法retval = vec (vector, index, bits);解说顾名思义,vec即矢量(vector)函数,它把简单变量vector的值看作多块(维)数据,每块含一定数目的位,合起来即一个矢量数据。每次的调用访问其中一块数据,可以读取,也可以写入。参数index就象数组下标一样,提出访问哪一块,0为第一块,依次类推,要注意的是访问次序是从右到左的,即第一块在最右边。参数bits指定每块中的位数,可以为1,2,4,8,16或32。例子1 : #!/usr/local/bin/perl2 : 3 : $vector = pack (B*, 11010011

54、);4 : $val1 = vec ($vector, 0, 4);5 : $val2 = vec ($vector, 1, 4);6 : print (high-to-low order values: $val1 and $val2n);7 : $vector = pack (b*, 11010011);8 : $val1 = vec ($vector, 0, 4);9 : $val2 = vec ($vector, 1, 4);10: print (low-to-high order values: $val1 and $val2n); 结果high-to-low order value

55、s: 3 and 13low-to-high order values: 11 and 12函数名defined调用语法retval = defined (expr);解说判断一个变量、数组或数组的一个元素是否已经被赋值。expr为变量名、数组名或一个数组元素。如果已定义,返回真,否则返回假。函数名undef调用语法retval = undef (expr);解说取消变量、数组或数组元素甚至子程序的定义,回收其空间。返回值始终为未定义值,此值与空串等效。五、数组和列表函数函数名grep调用语法foundlist = grep (pattern, searchlist);解说与同名的UNIX查找

56、工具类似,grep函数在列表中抽取与指定模式匹配的元素,参数pattern为欲查找的模式,返回值是匹配元素的列表。例子list = (This, is, a, test);foundlist = grep(/tT/, list);结果foundlist = (This, test);函数名splice调用语法retval = splice (array, slipelements, length, newlist);解说拼接函数可以向列表(数组)中间插入元素、删除子列表或替换子列表。参数skipelements是拼接前跳过的元素数目,length是被替换的元素数,newlist是将要拼接进来的列表。当newlist的长度大于length

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论