电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

编程接口范文

来源:文库作者:开心麻花2025-11-191

编程接口范文(精选7篇)

编程接口 第1篇

GPIB总线是一种较成熟的总线, 往往用来控制速度不快, 流量不大的设备。如果应用在相应的场合, 把系统集成的经验运用得当, 就可以产生智能化的自动测试系统了。以下是对GPIB总线的实际应用的分析。

1、总线应用

GPIB总线在很多仪器设备上作为编程控制的接口, 像一般的示波器设备, 还有Agilent的很多测试仪器, 都有GPIB总线接口, 可以通过这个串行总线发送命令并得到一些数据。先简单介绍一下GPIB总线一般的应用, 在一个完整的系统当中, 有很多种体系结构和多种控制方式, 举例说明如下。

如图1所示, 一个测试系统中有P X I光纤控制方式, 有IEEE1394控制方式等等, GPIB适用于控制数据量不大的信号源, 如电源设备等。本文要陈述的是一种完全用GPIB总线集成的系统, 通过这个系统的描述, 阐述用GPIB系统集成的灵活性和集成思路。

2、集成思路

2.1 集成思路产生的过程

在测试专业中, 所用的仪器设备都需要经过鉴定和验收, 这样才能作为一种相对标准的仪器来对其他设备进行检验和测量。对仪器进行检验的过程我们叫做计量工作。例如Agilent33220, 这种安捷仑的任意波形发生器是测试专业最常用的, 过去的型号是Agilent33120。在使用它之前首先要进行标定, 也就是对信号的频率、波形进行检测, 看符不符合指标。这就需要用标准设备来对它进行检验, 如频率计数计, 数字万用表, 典型的有:A g i l e n t 5 3 1 3 1的频率计数计, Agilent34401数字万用表等。鉴定验收的过程是繁琐而又复杂的, 如果要到用户现场去测试, 工作就更难了。由此产生了改进的需求, 因为测试过程都是逐项手动进行的, 对实时性没有要求, 测试设备都具有GPIB接口, 所以完全可以用G P I B总线进行控制;在最后处理数据时, 计算机可以借助自身的办公自动化优势直接把结果输出在MicroSoft OfficeExcel表格里, 完成自动处理并生成实验结果。由此产生了集成思路, 系统的结构图如图2所示。

系统的核心, 计算机的控制结构图如图3。

计算机可以控制对Agilent33220的各项指标进行检测。33220的几项主要指标可以用具备GPIB接口的设备来检测得到, 包括频率、幅度、幅度平坦度和直流偏置, 每项指标都分不同条件的信号进行测试, 如频率分10mHz~100kHz十几个频率段进行测量。当测试幅度平坦度时, 信号频率在高于100 kHz时不能用34401进行检测, 这时就需要用专用设备辅助进行手动检测;另外还有少许指标需要借助示波器来进行测量, 如观察波形状态的正常与否, 就需要用示波器作简单的观察。除了需要用仪器进行测量的指标之外, 还有外观检查的许多指标, 这是需要用户根据33220的实际情况手动进行填写的, 可以在计算机上填写形成完整的实验表格。通过这种方式, 系统中主要需要人手动参与的工作就用计算机取代了。

2.2 虚拟仪器的概念

这么多设备需要计算机来控制, 需要选择适当的软件编程平台来制作软件。最终实现的软件控制界面如图4。

这种对仪器仪表的操作, 最适合用虚拟仪器技术来进行模拟, 这样不仅GPIB总线控制更容易实现, 而且程序也很美观。如图所示, 用GPIB线缆将各个设备都连接好以后, 全部加电, 如果设备正常连接到系统里, 计算机就能检测到它, 在程序一打开会显示系统连接状态。正常连接并能检测到的设备就显示绿色, 未连接的设备显示灰色。我们从界面的图形就能观察出系统是否就绪。

2.3 GPIB的连接方法

2.3.1 GPIB地址

具有G P I B接口的设备就可以设置GPIB地址, 每个设备具有一个唯一的地址, 如:G P I B 0::0 1。

注意在仪器面板上一般都有Menu (菜单) 的标志, 进入菜单以后可以设置GPIB Address (GPIB地址) 的值, 要注意给每个仪器分配一个唯一的地址。以33220为例, 设置过程是按Shift键进入Menu, 选择I/O M e n u, 选择G P I B A D D R, 设置地址, 最后按E N T E R键存储设置值。在本系统中我们给33220设置成01, 53131设置成02, 34401设置成03。33220是待测设备, 所以给它定义地址为1, 如果需要测量类似型号的设备33120, 地址也设置成1。

2.3.2 远程控制标志

当自动测试系统连接成功以后, 计算机能够检测到仪器设备并执行初始化, 这时在每种仪器面板的液晶屏上都有“Remote” (远程) 标志。

这表示通过GPIB连接的远程控制环节已经就绪, 可以运行在远程控制状态了。平常用手动控制时是没有远程标记的, 远程和手动控制都可以在设备面板上选取然后进行切换。

2.3.3 计算机的GPIB接口

计算机内装有IEEE488接口卡, 支持G P I B总线标准。这套系统所用的仪器, G P I B线缆和计算机内的G P I B接口卡都是Agilent的产品。与硬件相配套的是一套完整的驱动程序光盘, 使用这套软件系统可以观察G P I B网络的安装状态, 并且能检查设备的连接正常与否。计算机通过IEEE488接口卡和与它相连的G P I B总线, 可以对所有的设备进行控制。

测试过程如图5所示。

测试过程都是用类似以上的形式执行的, 这是测试频率的界面。所控制的设备是Agilent53131。通过程序可以实现从1 0 m H z到1 0 0 k H z不同频率段信号的测量, 测试时显示所测到的结果, 并且与标称值相比较得到误差大小。完成测试后, 程序会自动执行数据库存储。G P I B的控制过程被包含在了内部, 都是自动执行的, 不需要用户参与一点手动操作。

3、集成问题

在系统实现的过程中遇到了各种困难, 虽然通过GPIB的控制改善了测试方法, 但是还是有一些相关的集成问题是需要我们去解决的。如下所述:

3.1 硬件测试问题

3.1.1 低频信号测试的问题

53131在测试低频信号时容易死机, 原因是低频信号测试较慢, 往往需要等十几分钟, 中间如果出现故障, 用户不容易觉察。因此在测试信号之前先用示波器测量信号源, 看是否正常。在保证信号正常的情况下再进行测试, 一般不会出什么问题。

这是在自动测试中所增加的辅助手动工作。

3.1.2 幅度平坦度的测试方法

幅度平坦度的测试方法比较复杂, 需要有参考点来对比, 在这里取频率为1kHz时的测量值为参考点。这是根据以前测试的经验的来设置的。虽然在34401的手册中并没有详细说明, 但是在用户的配合下, 完全参照手动的方法, 在自动测试中实现了它。

这说明必须严格按照手动测试的流程去安排自动测试。

3.2 软件编程问题

有些编程的问题是难以想象到的, 例如在测试中对精度要求比较高, 频率的误差精度是10-6。在数据库存储中不支持高精度数据的存储, 往往把小数点后的数值忽略掉了。这样数据在采集时精度本来很高, 而在存数据库时被更改了, 于是在打印时所得到的数是错的, 误差达不到测试要求, 最后导致结果错误。所以我们在数据存储之前给每个值乘以10的倍数, 让它成为整数值, 在打印文档的同时再把数据还原成原始值, 这样在数据库存储过程中数据就不会失真了。

3.3 测试结果的输出

测试结果对实验来说占了比较重要的地位。现在多采用O F F I C E办公自动化的形式输出测试结果, 这里我采用Excel电子表格的形式。产生表格的过程是由程序所控制的, 不用用户手动填写, 用户需要做的就是把表格打印出来。格式如图6所示。

最后输出的这种结果, 正是建立在G P I B总线可编程性基础上的。

4、结论

以上系统的集成思路是这样的:实际应用对数据采集的速度要求不高, 主要设备都可以通过G P I B总线进行控制, 并且可以围绕计算机构成自动控制系统。所以正确的选择应用场合, 合理的利用GPIB作为控制总线, 再结合虚拟仪器和各种测试技术就可以成功的集成系统了。

摘要:本文通过对一个计量系统实例的分析, 讲述了通过可编程接口GPIB总线进行系统集成的方法和特点, 附带讲了一些经验。

关键词:GPIB,系统集成,自动测试系统,LabView

参考文献

编程接口 第2篇

这个层的功能是将Vertex Shader和Pixel Shader(在G8X的设计中已经差不多不用把他们俩再分开,差不多统一起来)处理完成的数据输出给用户,由用户进行处理后再反馈给流水线继续处理。它可以直接读写本地显存。如果是内存对齐的,速度会更快,这个部分可以参考simpleStream的代码。Event:和平时的大家在编程中使用的Event一个道理,都是起到通知的作用,创建一个事件,然后同步;Event在多线程编程中会经常遇到。Context:上下文,什么叫叫上下文- -!(中文翻译叫上下文,实在的,俺觉得这个翻译不恰当,但是很多传统的书都这么翻译了,咱们也只能叫上下文)这里的Context和CPU里面使用的Context差不多,都是一个process里面需要用到的一些“资源”(系统资源:堆栈,内存等等)。我倒觉得翻译为process包含的东东更为恰当。Module:可以理解为linux里面的module意思;如果你不了解linux也不用担心,module就是一个个的专门针对Device的程序。知道很久很久以前的dos时代就有的.com文件吗?那个东东就像直接在CPU上可以调用的一个文件,加载到内存中就可以运行的。

这里的module就是加载到Device上就可以运行。Execution control:这个就是从驱动层面来控制线程怎么在Device上运行。Stream和Event在Runtime API和Driver API中都有,函数接口也差不多。Context, Module, Execution control就只有在Driver API层面才有。上面的这些都没多少难点,其实API的讲解,一般都没多少难点,难点在于怎么能灵活的运用API,那就得通过多次的练习,多用API实践;其实有的时候也能发现API的不足,才会产生新的API。这里就不放具体的代码,代码可以参考编程手册上面,

5. 好了,这里就剩下OpenGL和Direct3D的接口函数了,他也有两个层次的API,有Runtime层次的,也有Driver层次的。Runtime和Driver层面都有调用的API,CUDA2.0在这里也做了一些优化,在内存交换方面。具体代码参考编程手册。前面说过要讲解函数的定义,其实在以前的帖子里面正好已经翻译过一段,不过现在要讲解,也就提出来,专门再把那些东西翻出来:GPU NVIDIA_CUDA_Programming_Cuide_1.0 Chapter 4. Application Programming Interface

4.2.1 Function Type Qualifiers 函数类型

4.2.1.1 __device__

__device__ 规定的函数:

在device上执行。

只能在device上调用。

4.2.1.2 __global__

__global__ 定义了一个kernel函数:

在device上运行。

只能在host上调用

4.2.1.3 __host__

__host__定义的函数:

在host上运行,

只能在host上调用。

没有定义__host__,__device__或者__global__的函数等同于__host__函数,系统都会把函数编译成host函数。

另外,__host__定义可以和__device__定义一起使用,编译器会把这个函数编译为host和device通用的函数。

4.2.1.4 Restrictions (强调,限制)

__device__函数通常是inline,所以如果需要不inline 就需要加上uninline

__device__和__global__函数都不支持递归调用。

__device__和__global__函数都不能定义static变量在函数内部。

__device__和__global__函数不能使用可变参数。

__device__函数没有函数地址,也没有指向它的函数指针,但是__global__函数有。

__global__定义和__host__定义不能一起使用。

__global__函数必须是void返回类型。

任何调用__global__的函数都必须指明运行配置。(Section 4.2.3)也就是线程kernel的调用方法。

__global__函数是异步调用的。在运行结束前就会返回。

浅谈利用软件编程和接口技术 第3篇

在软件开发中, 风险时刻存在羽任何软件项目的过程当中, 风险会降低软件的质量, 提高软件开发的成本, 甚至会延迟项目的完成。造成软件项目开发风险的因素很多, 软件开发人员、软件开发环境、技术原因、质量原因、成本原因和进度原因, 这些都是影响风险的因素, 所遇到的风险因素主要有:没有准确把握项目进度、团队成员之间没有进行良好沟通, 这些因素都是可以避免的, 同时, 技术、设计、维护等方面也可能发生潜在的危险。

2 软件编程避免风险的措施

2.1 风险的设别、分析和监控

在编程开始阶段, 管理者要根据风险分解条目、风险资料库、项目说明范围总体计划等资料, 与有关专家和项目的主要参与人共同分析项目风险的来源和分类, 找出影响项目正常实施的风险因素, 从而制定控制风险的计划和费用, 做到风险管理职责明确。

在影响软件开发的多种风险中, 各个因素的重要程度不尽相同, 有些事主要风险, 有些事次要风险, 这就需要对风险进行分析和归类。定量分析和定性分析师风险分析的两种常用方法, 通过这两种方法的应用, 确定影响项目的关键风险, 用来为控制风险的措施制定做参考。

风险监控工作贯穿于整个软件编程开发的全过程, 风险监控的主要工作是:在软件编程开发前期, 建立完善的风险管理计划, 制定识别、分析风险的方法, 对风险管理人员划分明确的职责范围。

2.2 规避风险的措施

采取主动方法永远是规避风险的最好策略。首先, 要做好人员储备工作, 人员保障是做好一切共组的基础, 对于编程开发工作人员, 一定要确保在某个人临时离开的情况下有后备人员顶替其工作, 尤其是一些关键性的技术岗位, 一定要培育好后备人员;其次, 要提前对关键技术进行调研, 在技术方面, 通过分析关键技术, 避免软件的很快落后, 在项目开发过程中要注意收集有关风险的信息, 避免对合同公司过分依赖;另外, 要制定好完备的项目计划书, 时刻监视项目的进度。同时还要做到对软件工程的科学配置管理, 建立完善的风险应对策略。

3 软件编程和接口技术保障软件可靠性中的应用

3.1 计划阶段和需求分析阶段

在规划项目开发计划时期, 要依据产品要求制定出具体的软件开发计划, 并且要对产品的可靠性做出判断。需求分析时期要确定软件开发的主要任务, 并且设计出软件程序的大体流程框架、输入输出数据和模块定义、接口和数据结构等, 同时, 要对可靠性预计进行细化, 制定出具体的可靠性指标。具体方法是:确定功能概图、分类和定义失效、确定用户的可靠性分析、研究平衡关系、建立可靠性指标。

3.2 在软件设计和功能开发阶段

软件设计是逐步细化上一阶段定义的功能模块, 确立系统的框架结构, 从而形成若干可编程的模块。说明硬件与软件之间的接口以及他们各自通外部环境的接口, 细致描述各模块工作过程。功能实现主要是根据设计方案进行软件编程。在模块之间分配可靠性指标后, 按可靠性指标进行设计。

3.3 在软件系统测试和试运行阶段

系统的测试和运行时为了检验产品的软件是否实际可用。系统测试是整个软件开发的最后阶段, 这个阶段控制的好可以增强产品首次使用的可靠性。现场试运行主要是为了验证产品的使用说明以及系统测试得出的可靠性指标。

3.4 产品维护阶段

维护阶段主要是完善和改正产品使用过程中暴漏出来的缺点和错误。这个阶段主要是通过监视产品现场运行的可靠性和客户的满意程度, 从而达到进一步提高软件开发质量的目的。

保障软件可靠性是一门新兴的学科, 在软件质量提高上, 国内外还没有一套行之有效的管理方法, 同时, 软件可靠性工程是一涉及内容很广、系统性很强的工程, 对这样技术的研究要加大力度。

4 接口和接口采样技术

4.1 接口的作用

接口是连接机电系统与微电子的通道, 由于二者在性质上有很大差别, 接口必须具有调整、匹配、缓冲的功能才能保证二者的协调运转。首先, 接口可以转换行电平、并且放大其功率, 由于微机的电平与设备之间往往存在不一致的情况, 因此必须通过端口进行电平转换, 有时还需要放大功率;其次, 通过安装光电耦合器、脉冲变压器或继电器, 在电器上把微机设备和电气系统隔离开来, 来组织干扰信号的进入;另外, 当被控对象的检测和控制信号为模拟量时, 必须在微机系统和被控对象之间设置A/D或D/A转换电路, 以便使微机所处理的数字与被控的模拟量达到匹配。

4.2 输入模拟信号的接口

模拟信号输入接口的主要任务是将被控对象传感器的输出信号的电压值读入转换成二进制码读入。在控制系统中, 传感器或变送器发出的输出信号是反映被控制对象运行的状态信号, 这些状态信号往往是模拟电压或电流信号, 但是计算机接受信号的形式只限于数字状态的信号, 因此, 只有把模拟电信号转换为数字信号的接口路才能达到利用的目的。

4.3 输出模拟信号的接口

把计算机输出的数字信号为模拟电压和电流信号是模拟信号输出接口的主要任务, 转变以后来驱动执行器, 从而达到对象的目的。计算机只能输出数字信号, 而控制系统执行器接受的信号是模拟电压或电流信号, 并且由运算来产生控制信号, 因此, 只有将数字信号转换成模拟信号或电流信号的接口才能达到利用的目的。

4.4 开关信号通道的接口

数字量之类的最基本的输入或输出信号是系统控制中需要经常处理的一些信号, 这些信号都是以二进制的逻辑“1”和“0”出现的。首先, 输入通道接口的主要任务是把来自控制过程的开关信号、逻辑电平信号和一些系统设置的开关信号输送给计算机;其次来看输出通道接口, 把经过计算机逻辑运算处理后的开关信号传递给开关执行器是开关信号输出通道接口的主要任务。

5 结语

总之, 合理利用软件编程技术和计算机接口技术, 在软件项目开发过程中具有重大意义, 他们, 它们的可靠性可以大大提高系统的稳定性, 同时也提高了系统的质量。利用软件编程和接口是一项涉及面很广的工程, 必须与具体系统相结合进行研究, 它的应用将有力地推动软件开发事业的发展。

摘要:软件行业的更新换代很快, 有效利用软件编程和接口技术能够极大地促进软件开发系统的发展。本文论述了软件编程中可能遇到的风险及规避措施, 简单介绍了软件编程和接口技术在保障系统重要性方面的作用。

关键词:软件编程,接口技术,软件开发,系统

参考文献

[1]周荷琴, 吴秀清.微型计算机原理与接口技术[M].北京:中国科学技术大学出版社, 2008, 6.

[2]刘建宁.探析小容量自动化检测软件编程设计与应用[J].科学时代, 2010 (1) :30~31.

[3]蒋宗华.基于模块接口的入侵防御系统研究[J].计算机工程, 2010 (17) :152~154.

编程接口 第4篇

一、通过服务需求的分析划分功能及技术

在软件技术开发之前, 软件工程师首先应该确定软件在研制及开发过程中的具体属性, 通过对每一项内容的分析, 根据软件的职业岗位、系统软件的控制以及具体模式的分析, 进行服务需求的划分, 从而充分展现出网络工程软件系统的基本结构。例如, 在软件系统开发之前, 设计人员要将软件分为若干层级, 不同的层级要履行不同的职责, 一些负责信息的识别、一些负责信息的传输分类、一些负责管理的监督及检测。只有在系统建立的过程中, 保证不同软件系统可以充分行使其基本的权利及义务, 才可以实现网络工程的有序开发及运行。由于软件开发是一项较为漫长的过程, 所以, 在整个阶段, 设计人员要在模块分级的基础之上, 根据环境及基本条件的分析, 设计开发相关流程, 并逐步设计出软件的基本结构以及接口数据的结构, 使软件技术的编程实现其最高的应用价值。

二、严格遵守指标设计的基本内容

网络环境软件在运行的过程中, 其行为能力相对有限, 而且在软件编程之初会明确目标及功能, 但是, 由于软件的实践时间相对较长, 所以设计会逐渐改变软件编程的原有属性, 在最终程度上导致设计的指标发生偏移。因此, 软件编程应该利用不同的设计方式及技术, 有效维护软件设计内容的基本工作。例如, 在软件设计的过程中, 设定一个单元, 主要是负责软件运行中的校验工作。当软件编程出现一定故障时, 这一单元就会立刻检测到异常现象, 并将检测到的信号传递到计算机界面之中, 从而导致用户网络系统出现异常现象, 所以, 该系统就会对这一指标内容进行重新的设计及判定。虽然这种设计会加重编程工作的复杂性, 导致软件编程及设计效率降低, 但是, 可以在最大程度上强化网络系统工程软件设计的可靠性, 从而为整个信息的编程提供系统性的依据。

与此同时, 在软件工程指标设计的过程中可以发现, 其接口技术是整个工程中的关键内容, 故障信号会通过计算机接口技术的处理、编辑才可以将信息准确的送达到界面窗口。而且, 在软件单元设计的过程中, 其内容相对较为复杂, 因此, 应该制定系统性的操作技术, 保证编程工作的有效进行。在实施数据传输的过程中, 需要通过接口技术进行屏蔽信息数据, 从而保证不确定信号以及系统本身的安全性。因此可以发现, 指标设计的落实及软件的维护, 需要软件编程以及接口技术的充分融合, 才可以保证信息传输的有效性, 实现信息处理的综合性发展。

三、软件编程及接口技术的维护

在软件编程、接口技术处理结束之后, 计算机系统产品就到了试运行的阶段。在整个试运行阶段, 软件的功能及系统会出现各种潜在性的问题, 这些问题的出现主要是由于产品的升级及革新, 所以, 在这一阶段内, 应该进行科学化的技术探究, 从而充分保证系统运行的有效性。对于软件设计工程师而言, 在这一阶段要仔细对各种软件系统进行检测, 以数据统计的形式对计算机软件操作的价值及空间进行质量的评分。通过对比、评估发现软件编程与预期内容存在的差异性, 当差异出现时就会运用到接口技术。例如, 使用者在分析软件工程及属性的过程中, 需要对接口技术中硬件、软件的实效区域进行分开处理, 然后在按照先前制定的操作标准进行实践, 在最终制定出问题解决的优化策略, 从而为软件技术的开发及接口技术的应用提供有效性的依据。

结束语

总而言之, 在计算机网络系统运行及技术开发的过程中, 通过合理软件编程及接口技术的应用, 可以充分实现软件开发的核心含义, 同时保证计算机系统运行的安全性及稳定性, 提高系统应用的质量。由于软件编程以及接口技术是一项涉及范围较为广泛、工程相对巨大的系统形式, 在整个技术优化的过程中, 应该进行系统性的研究及技术的整合, 从而全面推动计算机软件开发技术的发展。

参考文献

[1]邓雪峰, 刘大臣.软件编程和接口技术浅析[J].科技展望, 2015, 06:6.

编程接口 第5篇

在传统的项目开发过程中, 由于客户的需求经常变化, 如果不采用面向接口编程, 那么就必须不停改写现有的业务代码。改写代码可能产生新的问题, 而且改写代码还会影响到调用该业务的类, 可能全都需要修改, 影响系统本身的稳定性。而且为了将改写代码带来的影响最小, 就不得不屈服当前的系统状况来完成设计, 代码质量和稳定性更低。当这种情况积累到一定程度时, 系统就会出现不可预计的错误, 代码凌乱, 可读性差, 系统的维护工作越来越重, 最终可能导致项目失败。

接口在项目就是一个业务逻辑, 面向接口编程就是先把客户的业务提取出来, 作为接口。业务具体实现通过该接口的实现类来完成。当客户需求变化时, 只需编写该业务逻辑的新的实现类, 通过更改配置文件中该接口的实现类就可以完成需求, 不需要改写现有代码, 减少对系统的影响。采用基于接口编程的项目, 业务逻辑清晰, 代码易懂, 方便扩展, 可维护性强。接口本质上就是由制定者来协调实现者和调用者之间的关系, 只有实现者和调用者都遵循“面向接口编程”这个准则, 制定者的协调目的才能达到。

2 面相接口编程

通常用接口来定义实现类的外观, 也就是实现类的行为定义, 用来约束实现类的行为。接口就相当于一份契约, 根据外部应用需要的功能, 约定了实现类应该要实现的功能, 可以实现不相关类的相同行为, 而不需要考虑这些类之间的层次关系。接口的思想就是“封装隔离”, 封装是指对被隔离体的行为或职责的封装, 隔离指的是外部只能通过接口进行调用, 而不知道内部是如何具体实现的。由于外部调用和内部实现被接口隔离开了, 那么只要接口不变, 内部实现的变化就不会影响到外部应用, 从而使得系统更灵活, 具有更好的扩展性和可维护性。

那么在程序中应该如何使用接口来做到真正的面相接口编程呢?现在假设有一个接口叫Api, 然后有一个实现类Impl, 在客户端要使用接口的话就需要创建一个Impl的实例, 将它赋值给一个Api接口类型的变量, 然后客户端就可以通过这个变量来操作接口的功能了, 结构图如图1所示。

3 简单工厂模式的定义及使用

从图1中可以看出客户端在调用的时候, 不但知道了接口, 同时还知道了具体的实现就是Impl类。接口的思想是“封装隔离”, 而实现类Impl应该是被接口Api封装并同客户端隔离开的, 客户端根本就不应该知道具体的实现类是Impl。如果把Impl从客户端拿掉, 让Api真正地对实现进行“封装隔离”, 却无法得到Api接口对象。用来解决上述问题的一个合理的解决方案就是使用简单工厂模式。

简单工厂就是提供一个创建对象实例的功能, 而无需关心其具体实现。被创建实例的类可以是接口、抽象类和具体的类。虽然不能让模块外部知道模块内部的具体实现, 但是模块内部是可以知道实现类的, 而且创建接口是需要具体实现类的。那么就可以在模块内部新建一个类, 在这个类里面来创建接口, 然后把创建好的接口返回给客户端。外部应用只需要根据这个类来获取相应的接口对象, 然后就可以操作接口定义的方法来实现需要的功能, 不用关心具体是如何实现的。这样的对象就称为简单工厂, 通常命名为Factory。其结构如图2所示。

使用简单工厂的时候, 通常不用创建简单工厂类的实例。因此可以把简单工厂类实现成一个工具类, 直接使用静态方法就可以了。也就是说简单工厂的方法通常是静态的, 所以也被称为静态工厂。如果要防止客户端随意创造简单工厂实例, 还可以把简单工厂的构造方法私有化。一个简单工厂可以包含很多用来构造的方法, 这些方法可以创建不同的接口、抽象类或者类实例。一个简单工厂理论上可以构造任何东西, 所以又被称之为万能工厂。从理论上讲, 简单工厂什么都能创建, 但对于简单工厂可创建对象的范围通常不要太大, 建议控制在一个独立的组件级别或者一个模块级别, 否则简单工厂可能会职责不明。简单工厂的调用顺序图如图3所示。

4 简单工厂模式优缺点

虽然说简单工厂的方法大多是用来创建接口的, 但真正能实现功能的是具体的实现类, 这些实现类并不需要靠简单工厂来创建, 简单工厂只是实现了选择一个合适的实现类来使用。既然要实现选择, 就需要选择的条件或者是选择的参数, 选择的条件或参数通常来源于客户端或者配置文件或者程序运行期间的某个值。如果从客户端传入参数的话, 客户端就必须知道每个参数的含义, 也需要理解每个参数对应的功能处理。这就要求必须在一定程度上向客户暴露一定的内部实现细节。另外如果需要新增一个实现类就需要修改工厂类, 从而降低了系统的可维护性和可扩展性。此时可以通过使用配置文件来解决, 当有了新的实现类后, 只要在配置文件里面配置上新的实现类即可。

简单工厂的优点一个是帮助实现组件的封装, 让组件外部能真正实现面相接口编程。另外可以实现客户端和具体实现类的解耦, 客户端无需知道具体是有谁实现和如何实现的, 只需要通过工厂来获取它需要的接口对象。

简单工厂的缺点一个是可能增加客户端的复杂度。如果通过客户端的参数来选择具体的实现类, 就必须让客户端能理解各个参数所代表的具体功能和含义, 这样会增加客户端使用的难度, 也部分暴露了内部实现细节, 这种情况可以通过选用可配置的方式来实现。另外不方便扩展子工厂, 私有化简单工厂的构造方法, 使用静态方法来创建接口, 也就不能通过简单工厂的子类来改变创建接口的的方法, 不过通常情况下是不需要为简单工厂创建子类的。

参考文献

[1]刘萍.基于简单工厂模式的三层架构系统设计及应用[J].中国科技信息, 2013 (07) .

[2]陈臣, 王斌.研磨设计模式[M].清华大学出版社, 2011 (01) .

编程接口 第6篇

Abis接口定义为基站子系统(BSS)的两个功能实体基站控制器(BSC)与基站收发信台(BTS)之间的通信接口,是BTS通过地面电路接入BSC而定义的BSS内部接口。欧洲电信标准局(ETSI)制定的GSM建议对Abis接口进行了较为详细的规范,其中08.52进行了概述性描述,08.54涉及物理电气层接口,08.56、08.58分别涉及第二、第三层协议。由于Abis接口还没有像A接口(MSC与BSC之间接口)一样得到完全规范,因此Abis接口仍为一个内部接口,各生产GSM设备的厂家为了各自的商业利益,往往会对该接口自行定义,使得接口实际标准不统一,实现差别比较大。这种不统一给GSM网络的维护管理、性能优化和监测监控带来困难,面对GSM系统对网络安全性、稳定性的高要求,对Abis接口展开一定深度的理论和实践研究是有很大意义的。Abis接口包括的信令很多,在工程实践上信令包含的内容不同情况下有不同的应用含义,所做的工作为进一步了解GSM系统的应用现状提供了必要的理论准备,为进一步研究Abis接口的工程实践提供一个全局的必要基础。

2 GSM系统结构与接口

2.1 GSM系统

GSM系统由交换子系统SS(Switching System)、基站子系统RSS(Base Station System)、操作维护中心OMC(Operation and Maintenance Center)等部分组成,如图1所示。

2.2 接口

GSM系统接口,是指各组成单元间物理和逻辑的连接。如图2所示。

文中将较为详细地讨论其中各厂商自定义未开放的Abis接口。

2.3 接口协议

Abis接口是BSS子系统的两个功能实体BSC和BTS之间的通信接口,用于BTS和BSC之间的远端互连。Abis接口支持系统向移动台提供的所有业务,并支持对BTS无线设备的控制和无线频率的分配。它的特点是:部分标准化,即当前不存在专有的互操作性。

BTS和BSC之间交换的消息包括:业务交换、呼叫建立和BTS操作与维护的信令交换。

BTS和BSC之间的物理接入有:2.048Mbit/s(E1)或者1.544Mbit/s(T1)的PCM数字链路,也就是由32路或24路64kbit/s话路组成。

话音以每时隙4x16kbid/s的速率传输(远端译码)。数据以每时隙4x16kbit/s的速率传输。如果是初始用户,速率也可将300kbid/s,1200kbit/s,2400kbib/s,4800kbit/s,9600kbit/s或者14400bit/s调整到16kbid/s。

Abis接口上的协议可分为3层。

第一层是PCM传输层(E1或T1):对于语音,其编码速率是16kbit/s,复用后在64kbit/s的时隙上传输;对于数据,其速率是同步的并可以调节。

第二层是LAPDm协议:标准的HDLC过程,包括无线信令链路(RSL)和操作与维护链路(OML)。

第三层是应用协议:包括无线子系统管理(RSM)和操作与维护过程。

L2层的地址是通过TRX(或BCF)来进行区别的,在LAPD帧中的TEI值即用来区别所用的TRX。不同的L2层链路被分别用来传输不同的消息类型。管理消息在无线信令链路上传输,网络管理消息在操作维护链路上传输,L2层管理消息在L2管理链路上传送。

3 接口信令帧结构分析

Abis接口上的信令都有固有的结构,可以分为3层,分别为物理层、LAPD层和包含网络状况和管理应用等重要信息的第三层。下面将分别对每一层的结构进行分析说明。

3.1 物理层

Abis接口的物理层是CCTTT的G.705规范中32*64kbids时隙结构的2M数字链路,或者64kbit/s的数字链路,其物理和电气特征符合G.703建议。在用软件进行解码时,一般是从二层的帧数据开始着手,物理层上硬件部分的比特流同步和帧数据的提取在文中不予详细讨论。

3.2 LAPD层

GSM网络系统的Abis接口在这一层采用LAPD协议,即D通道链路接入规所以通常称其为LAPD层。这一层主要是解决数据的封装问题。

所有的数据链路层实体间的信息交换符合图3所示中的格式。有两种格式:不包含信息域的格式和包含信息域的格式,即信息域为可选,要依照具体的帧类型。

3.3 BTSM层

在Abis接口上,第三层是BTSM层,即BTS管理层。BTS管理层(BTSM)主要负责控制BTS的一些操作以及从空口和从A接口过来的信令的传送。便如,从RR层来的消息要发送到MS,必须要以一定的消息类型来发送,这个消息类型就是BTSM中的数据请求消息;同样,从MS来的第三层要发送到BTS,也必须要以一定的消息类型来发送,这个消息类型就是BTSM中的数据指示消息。

BTSM层的消息按照传输方式可以分为透传与非透传信令,按照协议实体的不同功能可以分为无线链路层管理消息,专用信道管理消息、公共信道管理消息、TRX管理消息以及本地业务消息5种类型。

3.3.1 信令分组及信令格式

信令按照其不同的功能被分在不同的信令组中,每一个信令组都是为实现某类功能的信令规程中的信令集合。信令分组在解码的控制中有很重要的作用。信令分组以Message Discriminator来区分,按照不同的功能可以分为5种类型。每一种类型分组里所包括的信令及每一分组的公共格式如下:

(1)无线链路管理层消息

这些信令都和无线链路层管理规程相关。它们的通用信令格式如图4所示。

(2)专用信道管理消息

这些信令都是和专用信道管理规程相关。它们的通用信令格式如图5所示。

(3)公共信道管理消息

这些信令都是和公共信道管理规程相关的信令。它们的通用信令格式如图6所示。

(4)TRX管理消息

这些信令都是和TRX管理规程相关的信令。它们的通用信令格式如图7所示。

(5)位置服务消息

位置服务消息只有位置信息(LOCATION INFORMA-TION)一条信令,它是和位置服务规程相关的信令。格式如图8所示。

3.3.2 通用信元解析

通用格式包括的是本组信令公有的信元组成。而每一种信元又有其自身的字节构成。将阐述这些通用信元的字节构成,分析它们的各种比特组合的含义。每一条信令中除通用信元外的其它信元的组成原理和通用信元是类似的。通用信元主要有消息识别(Message discriminator)、消息类型(Message type)以及信道号(Channel number)。这三条信元通常又被称为三层信元头。

消息识别(Message discriminator):该信元一个字节用于区别透明和非透明消息,同时区分无线链路管理、专用信道管理、公共信道管理、TRX管理消息和本地业务消息。

消息类型(Message type):消息类型元素惟一的识别了发送消息的功能。是一个单独的字节,其中比特8是扩展比特,预留将来使用,目前置为0。这个信元的字节编码每一种组合表示了一种信令类型。

信道号(Channel number):信道号指出在哪个物理信道或子信道上传送信息,包含了信道类型和时隙号元素。

4 解码流程

获得原始数据之后,数据经转换存储即可进行信令解码。在了解了信令结构之后,对信令进行解码其实就变得很简单了,只需根据信令结构对各层各结构单元进行指针的移位和取值,然后参照3GPP协议将其所代表的含义表达出来或加以应用。下面对Abis接口信令的解码的流程进行说明,重点是对信令中的数据提取的阐述。

4.1 解码流程

LAPD层主要是进行数据的封装,以达到正确传送数据的目的,真正的信息是包含在层三中。当信息自上而下进行交付发送时,首先进行三层的封装,然后是二层的封装。解码正好相反,必须先去掉二层的封装,然后获取三层的信息。

对二层即LAPD层进行解码时,首先进行地址域的解码。地址域的字段可以按顺序解码,依次为SAPI,C/R和扩展字节中的TEI。SAPI值可以指示相关的三层信息实体类别,是呼叫控制、分组通信规程还是二层管理规程。C/R值指示该帧是命令还是响应。

解完地址域之后,在控制域上需要首先判别帧类型。在第三字节取出帧类型判断字段(第三字节的后4位)进行判别。若第三字节的最低位为0,则为信息帧;最低两位为01,则为S帧;最低两位为11,则为U帧。

若判断为S帧,根据这个字节的第3,4比特来进一步判断S帧的具体类型。例如第3,4比特为00,表示是RR帧,已准备好接收;为01,表示是RNR帧,指示忙状态;为11,表示是REJ帧,表示请求重发编号从N(R)开始的I帧。

若判断为U帧,则根据这个字节的第8,7,6位和第4,3位一起进行进一步的命令类型判别。

U帧和S帧的解码比较简单,需要注意的是I帧和U帧中的UI帧、XID帧的解码,因为它们含有信息域。解含有信息域的帧时,可以在判断LAPD帧的类型时设一个标志变量。根据控制域的特征比特判断为含有信息域时,便将标志变量置为真,继续进行三层信息域的解码。否则将标志变量置为FALSE,说明非信息帧,不需进行三层解码。

当信令属于I帧、UI帧和XID帧,则说明包含有三层的信息,我们需要从所有的信元中取得相应的参数,即必须对层三进行解析。三层信息的前3个字段都是一样的,分别是Message discriminator(群组类别)、Message type(消息类型)、Channel number(信道号)。对这3个信元的解码可以写在一个函数当中。解Messagetype信元,判断出消息类型之后,就可以调用具体的消息解码函数。比如Data Request消息,在解完三层信元头(即Message discriminator,Message type,Channel number三个信元)之后,可以知道这个消息的类型,于是可以调用相应的消息类型函数进行解码。在这3个信元之后的是L3 Information信元,包含的是空口信令的内容。空口信令帧格式与Abi:接口基本类似,都由相对固定的信元构成,其解码和Abis口的三层信元的原理是一样的。其实,在Abis接口上,空口的三层内容己经作为一个信元被包含在Abis接口的相应信令当中。

4.2 部分代码

从这里的函数调用就可以看出整个信令解码的流程。首先是参数的初始化,然后进行LAPD层的解码,最后是信息域。

参考文献

[1]ETSI GSM08.58“Base Station Controller-Base Transceiver Station(BSC-BTS)interface.Layer3specification”.

[2]ETSI GSM04.08“Mobile radio interface layer3specifica-tion”.

[3]CME20System survey Training Document.ERICSSON.

[4]Advanced System Technique-Course Documentation EN/LZT1233333R2D,ERICSSON.

[5]韩文杰.GSM原理及其网络优化.第7版,机械工业出版社,2001.

编程接口 第7篇

1 银行接口

1.1 通讯协议

为了建立数据源与系统之间通用的数据接口,实现实时地数据传输,必须定义通信协议,以传送接口数据。

通讯协议为TCP/IP协议,使用Socket进行通信,采用短连接方式。

Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。

服务器,使用Server Socket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。

客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。

双方数据传输遵循数据交互的通信格式及发送和接收的顺序。传输数据通过RSA加密解密算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest,Adi Shamir和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。主要通过公钥和密钥:公钥可以对外公开,供其他人加密使用,而把私钥秘密保存用于解密。RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前,RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。

银行外联系统会统一对外公布一个TCP/IP服务端口号,用于接收企业方发起的交易。

1.2 通讯报文结构

数据交互的通信格式包括报文长度+HEAD报文头+BODY报文体+EXT扩展报文,具体的XML报文体由单独交易说明。数据交互的通信格式如表1所示。

1.2.1 报文头

报文头用于描述当前的通讯报文,其大小是固定的,可用如下数据结构来定义:

1.2.2 报文体

传输的相关信息,见以下XML传输例子中的BODY结点。

1.2.3 扩展区域

当前报文的附加数据区,该区域作为数据区的补充,存放一些通讯双方约定的数据,如MAC等。其有无数据有H_Is Having Ex字段决定,也是一个XML标签数据。

1.3 应用报文格式

1)报文必须是包含�’作为结束符的字符串。

2)报文必须符合GB2312标准。

1.3.1 报文标准

本系统的消息传递遵循XML报文标准。以下是对XML报文标准的简要说明。

字段包含一个字段(错误代码),一个字段(错误提示信息),没有或多个字段,可能还存在一些其他信息字段如汇总信息的字段等,其中字段包含的可能是所有的输入信息(目前只存在一个),所有的输出信息(目前只存在一个),所有的查询结果信息(可能没有或多个)。

1.4 通讯描述的时序关系

如图2所示。

短连接采取每传输一次数据都进行一次“连接-传输-断开”的过程。

数据发送XML报文体采用XML数据格式,由下面描述:

请求方的发送接收顺序:1)建立TCP连接;2)发送信息通信报文;3)接收响应报文;4)断开连接;

接收方的发送接收顺序:1)建立TCP连接;2)接收信息通信报文;3)发送响应结果报文;4)断开连接。

1.5 加密处理

在交易中对报文体按照双方约定的加密方式进行加解密处理。本交易中提供了一个企业设置密钥的交易,企业可以通过此交易重置交易密钥。

2 接口系统功能流程

如图3所示。

3 代码实现

3.1 发送信息

3.2 接收信息

3.2.1 接收信息需要开个侦听器

4 结束语

此系统是全自动定时执行,无人值守,可以根据用户设定时间(可以设多个时间点)。所有的报文传输数据都通过加密。其它相关代码,具体见程序。并给出了该系统的具体实现环节。实验结果表明,该系统能够挖掘一些有益的信息,从而为开发该系统的人员提供有益的参考。

参考文献

[1]Michael E.Whitman/Herbert J.Mattord齐立博.信息安全原理[M].2版.北京:清华大学出版社,2006:75-80.

[2]明日科技.Visual C#项目开发实例自学手册[M].北京:人民邮电出版社,2008:349-359.

[3]张雪洁.基于XML的数据集成平台框架及关键技术研究[D].河海大学.2004.

[4]Terry Quatrani,Jim Palistrant.IBM RSA和UML可视化建模指南[M].北京:机械工业出版社,2007:5-8.

[5]胡道元/闵京华/邹忠岿.网络安全[M].2版.北京:清华大学出版社,2008:19-73

[6]孙海民.精通Windows Sockets网络开发——基于Visual C++实现[M].北京:人民邮电出版社,2008:50-63.

[7]刘恒.网络安全呼唤IMS[J].数据通信,2003,(06):24-25.

编程接口范文

编程接口范文(精选7篇)编程接口 第1篇GPIB总线是一种较成熟的总线, 往往用来控制速度不快, 流量不大的设备。如果应用在相应的场合, ...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部