二次开发接口(精选4篇)
二次开发接口 篇1
随着计算机技术的发展,软件系统越来越复杂。这种变化在计算机辅助设计/制造(CAD/CAM)领域表现得尤为明显,以往大而全的CAD/CAM软件越来越显得力不从心。众多CAD/CAM软件开发者转而开始对这类软件的基础和共性进行研究,希望提供可进行二次开发的CAD/CAM平台支撑系统[1],使用户能在该支撑系统上进行二次开发,实现所需的特殊功能,定制出用户所在特殊领域的专用CAD/CAM软件。目前,为用户提供功能强大、使用灵活的二次开发接口,已经成为对CAD/CAM软件的普遍要求。二次开发也成为发挥CAD/CAM软件功能的重要途径之一[2]。TiGEMS是采用特征造型技术的三维几何造型软件[3],而特征造型技术也是当前CAD软件主流实现技术[4]。如何在二次开发接口中体现特征造型思想的特色和优点,是本文要探讨的主要问题。
二次开发接口的实现方式多种多样,目前流行的有通用文件格式实现的接口[5]、组件技术实现的接口[6]、数据库技术实现的接口[7]以及动态链接库技术实现的接口。不同的实现技术各有其优缺点,并且随软件技术的发展,二次开发接口技术也在发展变化中。当前很多CAD/CAM软件系统都同时实现了多种接口方式,以满足不同用户的不同需求。不论使用何种技术,能够将接口编程技术与宿主软件完美结合,在接口中体现宿主软件的特色和优点才是关键。并在三维几何造型系统TiGEMS中,选用动态库技术实现TiGEMS的二次开发接口的原因在于:(1)动态库技术有利于在接口中体现TiGEMS的特征造型思想,保持了各类用户对TiGEMS技术和使用特征的认知一致性;(2)用户有自定义特征的需求,在考察多种实现方式后认为,动态库技术为实现该需求的最好方式;(3)动态链接库技术发展时间长,技术成熟,掌握该种编程技术的程序员较多,适宜为工程技术人员做二次开发用;(4)使用基于动态库技术编写的用户程序执行效率高、速度快,能够充分满足用户的各种需求。
1 设计目标及原则
1.1 设计目标
设计目标用于规定设计的大方向和基本功能描述,在设计中起总括和纲领的作用,设计目标应该在设计方案中被逐一细化并最终得到实现。
(1)设计良好的三维几何造型系统的二次开发接口应该能够向用户展示系统的设计思想,引导用户正确、快速地掌握三维几何造型系统的特点;使接口开发用户对系统的感知与直接操作三维几何造型系统的感知一致。用户可以无障碍地从直接操作转到二次开发上来。
(2)用户通过接口开发模块能以插件形式载入三维几何造型系统中,也能以独立程序的形式与三维几何造型系统共同运行。用户可根据自己的需求和喜好在用户界面加入自己的设计元素,因此接口应该实现动态的用户界面(UI)管理功能,方便用户根据自己的需要定制操作界面,甚至重新构造用户操作界面[8]。
(3)二次开发接口应该具有良好的可扩展性。二次开发接口不但要求实现用户直接操作的所有功能,还应该实现更底层的数据定义和微操作功能,以及更高层的批量操作和集合操作功能。用户能够通过二次开发赋予三维几何造型系统更强大或更专业的功能。
1.2 设计原则
设计原则规定了在二次开发接口设计过程中需要遵守的规则和方法。遵守设计规则可以保证最终代码的质量、效率和稳定性,并为今后工作的可延续性提供方便。
(1)屏蔽不必要的细节。进行二次开发的用户多数是工程技术人员,不太可能精通专业的程序开发技术。他们要求的二次开发接口在功能强大的同时又要易学好用。因此封装细节信息,简化操作过程非常必要。
(2)严格封装内部对象和方法。二次开发程序对CAD软件功能的调用和对变量的存取,都要通过二次开发接口进行,严禁越过接口函数直接存取变量对象或者调用内部方法。
(3)保证接口的鲁棒性和独立性。用户往往会以设计人员没有想到的方式调用二次开发接口,因此必须保证接口函数的鲁棒性,不能在屏蔽细节的同时埋下隐患。每个接口函数实现的功能要单一、明确[9]。
(4)充分考虑接口可扩充性。二次开发接口程序架构应该是开放性的,可平滑扩展,能根据应用需求的增加将新的功能加入到接口中去,同时不影响已经实现的接口功能[9]。
2 TiGEMS二次开发接口的设计方案
TiGEMS是多文档/视图结构的应用程序,共实现了零件、装配、渲染、有限元和工程图5种文档类型。用户可以同时打开多种类型的多个文档,但在同一时刻只能编辑一个文档,即当前活动文档。TiGEMS使用特征树组织和管理特征并表示它们之间的相互关系。特征就是TiGEMS的核心数据,特征树即TiGEMS的核心数据组织方式:(1)二次开发接口应开放特征和特征树的操作方法,让用户能够编程实现对TiGEMS文档的操作;(2)实现用户定义特征功能,扩展特征外延;(3)能够对多个用户插件进行有效管理,最后可修改用户界面,实现动态UI。
2.1 接口功能模块综述
TiGEMS的二次开发接口可分为插件管理模块、UI控制模块、用户特征管理模块和用户接口模块,如图1所示。
为了使得TiGEMS支持二次开发,首先对TiGEMS的核心进行修改:增加了插件管理、UI控制和用户特征管理3个模块,然后在TiGEMS核心之外创建用户接口模块,封装所有TiGEMS功能调用,并向用户提供函数调用和对象定义的头文件和库文件。
2.2 插件管理模块
TiGEMS允许用户通过二次开发接口编写插件,插件可以调用所有二次开发接口提供的功能,但是不能独立运行,必须载入TiGEMS中才能使用。插件管理模块作为常住TiGEMS核心的一个功能模块,提供了载入、管理、卸载用户插件的功能。
由于TiGEMS的不同文档类型使用不同的类实现,具有不同的属性和操作方法,所以某个插件在某种文档中的功能对另一种文档并不适用。因此,要将插件和文档对应起来,同类文档的插件可以共享,不同类文档的插件必须相互隔离。
插件管理模块管理用户插件,根据用户需求将用户插件载入或者卸载,同时隔离对应不同文档类型的插件模块,避免冲突和混乱。
2.3 UI控制模块
UI控制模块可根据用户载入插件中定义的界面信息构造用户界面,以及在卸载插件时恢复以前的用户界面。当用户在不同文档类型中切换时,UI控制模块还需根据当前活动文档的不同重新构造用户界面。
2.4 用户特征管理模块
用户特征管理模块专门用来管理用户自定义的特征,由于用户定义的特征需要被TiGEMS的核心处理和识别[10],因此TiGEMS核心不可避免地要对用户定义的特征处理函数进行调用,这极大增加了TiGEMS的潜在不稳定性。为了最大可能地避免这种风险,用户特征管理模块统一负责用户定义特征的注册和TiGEMS核心对用户特征的调用,严格限制用户特征的行为。
2.5 用户接口模块
所有接口函数都封装在动态链接库文件中,与API函数声明、对象定义头文件一起提供给用户。用户编写好的插件程序也以动态链接库的形式载入TiGEMS。
接口函数部分根据功能的不同可以分为通用特征操作函数、UI控制函数、用户特征操作函数、插件管理函数及其他杂项函数。
通用特征即TiGEMS已经定义好的特征,这些特征的操作函数包括特征创建函数、特征修改函数、特征删除函数、特征复制函数、特征查询函数、特征重构函数和特征加入函数。
UI控制函数专门用来创建和修改用户菜单、工具条、按钮及浮动面板等用户界面元素,同时还可以添加更改窗口布局,整体显示风格等。UI控制接口函数通过调用处于TiGEMS核心的UI控制模块起作用。
用户特征操作函数可向TiGEMS注册、修改及删除用户自定义的特征类。
插件管理函数为用户提供在自主开发程序中管理TiGEMS二次开发接口插件的功能,当然也可以在插件中管理其他插件,进行插件的载入、卸载等操作。插件甚至可以通过管理接口函数实现卸载自身的操作。
其他杂项函数包括对象操作函数和辅助功能函数及文件操作函数。其中文件操作函数可用来打开、保存和关闭TiGEMS创建的特定格式,因为保密或者其他原因不能将格式开放给用户的文件。
3 TiGEMS二次开发接口的实现
TiGEMS二次开发接口的代码实现在Windows平台下VC++6.0中完成,具体工作可以分为TiGEMS核心代码修改和接口函数封装两大部分。TiGEMS二次开发接口代码实现的关健主要集中在TiGEMS核心代码的修改。插件管理、UI控制和用户特征管理都涉及到了对TiGEMS核心代码的修改。
3.1 插件管理
TiGEMS是多文档/视图结构的程序,同类文档的用户插件是共享的,但是不同类文档的用户插件互相隔离。实现插件的载入/卸载以及初始化都有一套专用的接口函数,并且插件管理模块在载入插件的同时将当前活动文档的类型作为插件的类型保存起来,为以后可能发生的文档切换等操作保存必要的信息。插件管理模块使用一个结构数组m_moduleList来管理所有被载入的用户插件,这个数组的每个组元对应一个插件,存放插件的名称、句柄、类型以及插件内部相关信息。其他模块通过识别插件的类型来判断该插件是否属于当前的活动文档。
3.2 UI控制
所有用户插件造成的用户界面的动态变化都由UI控制模块进行统一的调度和控制。用户插件中会携带有关用户界面的修改信息,在载入初始化时向UI控制模块提出界面请求,UI控制模块使用一个结构数来保存每个插件对用户界面的更改要求。每遇到一个新插件的界面更改要求,UI控制模块都会先进行条件预判断,全部或部分允许该用户插件对用户界面的改变。之后UI控制模块就不再干预界面与插件之间的交互。直到有插件载入、卸载以及文档切换时,UI控制模块才会干预用户界面的生成。
UI控制模块的另一个重要功能是在非同类文档切换时保证用户界面随之改变,对于可以与MFC文档类关联,随文档的切换而切换的界面元素(如菜单等),UI控制模块无需干预。但对于无法随文档切换而切换的界面元素(如命令窗口等),UI控制器需要捕捉文档切换消息,在消息处理中完成界面元素的重新构造。
3.3 用户定义特征管理
用户特征实现的关键在于如何定义以及TiGEMS如何识别并处理用户特征。为了让用户能在插件中创建特征定义,需要继承特征基类C_FeatureDef和c_FeatureStep的定义。考虑到用户特征的特殊性,在GEMSAPI模块中继承这两个类,定义了两个新的用户特征基类C_UserFeatureDef和C_UserFeatureStep,增加了表征用户特征的变量,并规定所有用户特征必须继承这两个特征基类。这样就解决了用户特征定义的问题,同时用户特征识别问题也因为用户特征继承自TiGEMS通用特征基类而得到解决,TiGEMS可以从特征基类中的m_property变量中获取所需的特征信息。用户特征在使用前需要先向用户特征管理模块注册,只有不存在重名和其他冲突的用户定义特征类才被允许注册。用户特征管理模块使用一个结构数组m_userFeature来管理用户特征。TiGEMS对用户特征的任何调用都要通过用户特征管理模块间接执行。这样做的好处在于提高了TiGEMS的稳定性,而且用户特征管理模块可以及时拦截某些可能出错的调用,如用户插件已卸载,但TiGEMS却要调用该插件中用户特征处理函数等。TiGEMS核心代码中所有需要判断特征类型并调用对应处理的模块,都要加入对用户特征判断的代码,以及通过用户特征管理模块调用用户特征处理的代码,以便实现TiGEMS对新加用户特征的响应。
为用户提供二次开发接口,满足各种专业用户的不同需求是提高三维造型软件使用范围和生命力的一个重要途径。TiGEMS作为一个成功的国产CAD软件,实现了二次开发接口,其功能得到进一步完善,应用范围得到了扩展,使用方式也变得更加丰富。
摘要:分析了CAD/CAM软件二次开发平台的基本设计理论和设计原则。针对典型的商业三维几何造型系统——TiGEMS提出了采用动态链接库技术的二次开发接口设计方法和实现过程。解决了TiGEMS二次开发接口的难点和问题。
关键词:动态链接库,二次开发,接口,特征造型,TiGEMS
参考文献
[1]SABIN M.CAD system component[J].Computer-AidedDesign,1996,28(3):183-192.
[2]赵卫东,柳先辉,卫刚.CAD软件二次开发平台实现技术[J].计算机辅助设计与图形学学报,2003,15(4):512-516.
[3]袁奕.特征造型在GEMS5.0中的实现[D].北京:清华大学,1998.
[4]叶修梓,彭维,何利力.从工业界的角度看CAD技术的研究主题与发展方向[J].计算机辅助设计与图形学学报,2003,15(10):1194-1199.
[5]陈为.基于AutoCAD二次开发的研究[J].计算机工程与应用,1997,33(1):39-43.
[6]陆薇,刘强,周琛,等.基于组件的开放式CAD系统模型[J].软件学报,1998,9(9):651-655.
[7]赵付青,余冬梅,张聚礼.CAD智能工程数据库实现方法的研究与应用[J].计算机工程与应用,2003,39(2):215-219.
[8]吴余华,童水光,许跃敏.国外CAD/CAM系统二次开发关键技术的研究[J].计算机辅助设计与制造,1996,15(8):11-12.
[9]王云鹏,雷毅,潘翔,等.CAXA电子图版的二次开发技术[J].计算机辅助设计与图形学学报,2002,14(2):189-192.
[10]宋玉银,蔡复之,张伯鹏,等.基于特征设计的CAD系统[J].计算机辅助设计与图形学学报,1998,10(2):145-151.
二次开发接口 篇2
随着计算机技术的发展, 计算机技术已在各个行业都已得到了大规模的应用, 发电厂的电气二次系统包含众多的控制设备, 这些设备都同样应用了计算机技术, 使它们具有更高的可靠性、功能配置更专业化、具备网络及通讯接口, 这样可以使它们被集中监视及控制。
可编程计算机控制器 (Programmable Computer Controller, 简称PCC) 是集计算机技术, 通讯技术, 自动控制技术 (简称3C技术) 为一体的新型工业控制装置。如今的PCC以其极高的可靠性, 丰富的编程语言, 实用的编程方法, 强大的功能, 优良的性能, 良好的耐恶劣环境的能力而成为工业控制领域中增长速度最迅猛的工业控制设备。新一代的PCC已经能胜任大型的集散控制和复杂的过程控制。其良好的兼容性, 强大的通讯功能, 优良的适时性, 丰富的功能函数, 品种繁多的硬件模块, 多种编程语言的使用等, 使PCC已能适应各种工业控制的需要。再有PCC是在PLC及PC的基础上发展起来的, 它不但吸收了PLC及PC的全部优点, 而且自身优势也非常明显。PCC采用了分时多任务操作系统, 不同于大多数PLC采用的单任务的时钟扫描方式。PCC与计算机相比同样更具优势, 用户接口不需要占用太多资源、灵活添加开关量采集控制、模拟量采集控制等功能。PCC与PLC的一个最大的不同点是PLC不具备与第三方设备通讯的能力, 而PCC除了具备标准的通信协议之外, 还向用户提供了第三方产品的通信协议开发工具-帧驱动器, 用户只需要了解通信协议细节, 用帧驱动器写出与第三方产品通信协议一样的通讯规约, 几可以方便的实现PCC与第三方产品之间的通信。的以下内容就详细介绍了关于帧驱动器的使用及应用实例。
1 系统结构及物理层连接
系统的结构图如图1, PCC采用2005系列产品, 具体配置为CPU型号IF 260、6槽底板、与上位机通讯卡IF681、与综保通讯卡为IF671, 综保采用Areva公司的P122、P922、P141等装置。物理连接为总线式连接, 串接所有设备相应的正端及负端, 在总线的两端加两个终端电阻。每台智能设备分配独立的地址, 设定固定的波特率, 总线长度不要超过1200米。
2 系统实现
2.1 Modbus协议介绍。
Areva综保在通讯时采用了MODBUS/RTU协议。Modbus协议最初由Modicon公司开发出来, 在1979年末该公司成为施耐德自动化 (Schneider Automation) 部门的一部分, 现在Modbus已经是工业领域全球最流行的协议。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备, 包括PLC, DCS, 智能仪表等都在使用Modbus协议作为他们之间的通讯标准。Modbus协议包括ASCII、RTU、TCP等, 并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构, 而不管它们是经过何种网络进行通信的。标准的Modicon控制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式, 数据通讯采用Master/Slave方式, Master端发出数据请求消息, Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据, 实现双向读写。
2.2 PCC的帧驱动包介绍。
PCC的帧驱动包是贝加莱公司针对第三方智能设备的接口开发的应用工具包, 该工具包使用方便、容易理解, 相对使用普通计算机开发接口更容易。工具包应用过程如下:接口初始化、打开接口、判断接口缓冲区是否有数据、如果有数据读缓冲区、向缓冲区发送数据、关闭接口。工具包包含如下功能块:FRM_xopen打开及初始化接口;FRM_gbuf发送数据前获得接口缓冲区;FRM_write向缓冲区写数据;FRM_robuf释放写缓冲区;FRM_read从缓冲区读取数据;FRM_rbuf释放读缓冲区;FRM_close关闭接口。
2.3 Areva综保功能及通讯介绍。
综保装置具有强大的保护、控制和数据采集功能, 可提供完整全面的保护、控制、测量、运行参数记录、故障记录、事件记录、故障录波、通讯等功能。使用PCC的帧驱动包按照Modbus协议, 可以实现PCC与综保设备的通讯联系, 从而使综保的各种信息传送到上位机中。事件记录作为保护的重要功能需要快速而准确地反应在上位机, 这也需要PCC实时查询综保是否有事件, 如果有就及时的提取出来, 再发送给上位机, 这个过程的报文如下:
a.读取装置的状态, 查看有没有新的未被确认的事件产生, 使用07功能码;
请求报文:01 07 41 E2
响应报文:01 07 07 63 F2 (有新事件未被读取)
b.如果有未被确认的事件, 则读取最早未确认的事件, 使用03功能码访问3600地址;
请求报文:01 03 36 00 00 09 8A 44
响应报文:01 03 12 00 24 (36, 过电压保护1段) 00 6F 00 76 00 00 00 05 (2005年) 0C (12月) B0 (即10h=16号) 0D (13点) B9 (即39h=57分) 14 9A (5秒274毫秒) 00 00 07 84
c.确认事件 (告诉装置刚才的事件已经成功读取) 使用05功能码写入4000地址
请求报文:01 05 40 0D FF 00 08 39
响应报文:01 05 40 0D FF 00 08 39
以上内容就是读取综保装置事件记录的过程。
2.4 实例代码。
PLC上指令表语言可在PCC上继续沿用, 而且用户还可采用更为高效直观的高级语言 (PL2000) 。它是一套面向控制的文本语言, 熟悉BASIC的技术人员会对它的语法有种似曾相识的感觉完全, 它对于控制要求的描述非常简便、直观。除此之外, PCC的应用软件开发还具有集成“C”语言程序的能力。下面介绍主要功能的代码:
a.初始化即打开串口
c.写缓冲区数据
结论:得PCC帧驱动器简单易于使用、通用性强, 针对不同的系统很容易移植或重新开发, 缩短了程序的开发周期。性能稳定可靠、适合各种规模的系统应用。
摘要:随着计算机技术的发展, 计算机技术已在各个行业都已得到了大规模的应用, 发电厂的电气二次系统包含众多的控制设备, 这些设备都同样应用了计算机技术, 使它们具有更高的可靠性、功能配置更专业化、具备网络及通讯接口, 这样可以使它们被集中监视及控制。介绍了使用PCC的帧驱动包工具开发电气二次设备接口的过程, 协议使用的是Modbus协议。
关键词:PCC,帧驱动,Modbus协议,综保
参考文献
谈谈SP短信接口网关开发 篇3
SP短信接口网关在运营商和SP企业之间起着重要的桥梁作用, SP短信接口网关性能的好坏将直接影响整个SP业务的性能, 因此, 如何开发出一个稳定、高性能的短信接口网关就显得至关重要。本文以笔者个人亲身的开发经历, 谈谈SP短信接口网关开发经验。
1. SP短信接口网关的开发
通用SP短信业务平台, 逻辑可分为用户层、系统层、接口层。短信接口网关处于SP业务平台的最底层, 是整个SP业务平台的基础, 因此, 我们在进行短信接口网关开发的时候, 必须严格按照底层通信模块的标准 (即高效、稳定) 来进行。下面将围绕提高短信接口网关处理能力、提高短信接口网关得稳定性以及其他控制措施三个方面展开阐述。
1.1 提高短信接口网关处理能力
作为底层通信接口, 其处理能力当然是最受关注的, 提高短信接口网关处理能力所用到的方法包括多线程编程、事务分割、内存缓冲以及滑动窗口机制。
1.1.1 多线程编程
如果仅仅采用单线程编程的话, 则接口网关无论如何都只能工作在半双工的模式下。为了提高通信效率, 短信接口网关采用了多线程的编程模式, 接口网关启动后, 由一个主线程分别启动两个主要线程, 即:发送线程和接收线程, 分别处理短信的发送和接收事务, 使短信接口网关真正做到全双工。
1.1.2 事务分割
由于接收短信的时候要做的事务比较多, 包括接收短信息、记录日志、解码、处理短信息、把处理结果入库五个动作。如果在一个事务中一次性完成这些动作的话, 那么, 将会影响短信接收的效率, 因此, 把整个接收事务细化成五个子事务:接收、写日志、解码、信息处理、入库, 这五个事务彼此相对独立, 仅仅通过各个子事务之间的缓冲池进行交互。这样一来, 就能够确保前面的事务不会因为后续事务处理速度跟不上而影响短信的接收。
1.1.3 内存缓冲
短信入库的速度受到I/O性能的影响, 如果频繁跟I/O交互的话, 将会严重影响短信的接收效率。结合考虑到目前所有的运营商短信网关/SP短信管理平台, 都仅仅能够为SP等ESME提供相对数量较少的缓冲池, 当处于某一个话务高峰的时候, I/O操作就会成为系统的瓶颈而导致部分短信息的丢失。考虑到计算机内存读写得速度远远高于I/O的读写速度, 为了提高接收效率, 确保不会因为接受效率而影响短信的正常接收, 在内存开辟一定数量的缓冲池 (根据实际短信息的吞吐量而定, 如1万条) , 如此一来, 即使碰到话务高峰的时候, 也能够把接收到的短消息及时地写入到内存中, 不至于短消息丢失。
1.1.4 滑动窗口
很显然, 在接收、写日志、解码、信息处理、入库五个子事务之间的处理速度不可能一致, 那么, 为了确保整个事务能够顺畅的进行, 那么, 我们还应该在每两个需要通信的子事务之间开辟对应的滑动窗口, 用于适配两个子事务的处理速度, 滑动窗口的大小应根据接口的吞吐量及峰值进行适当的调整。
1.2 提高短信接口网关稳定性
作为底层通信接口, 其稳定性也不容忽视, 提高接口网关稳定性的方法大致如下。
1.2.1 守护程序
作为不间断的底层通信程序, 其服务可用性的要求相当的高, 为此, 必须引入守护程序其进行监管, 一旦发现服务异常, 马上对接口网关程序做相应的处理, 如关闭异常进程并重新启动新的进程及时确保接口程序的服务可用。
1.2.2 监控模块
为了确保网关的高效运行, 还必须考虑系统监控问题, 通过监控模块实时监控网关的运行情况, 并及时的调整发送策略, 如发送速率、是否应急关闭关键字过滤功能等。
1.2.3 预警机制
考虑到大多数机房都是无人值守或巡查周期较长, 因此, 短信接口网关开发的时候还需要考虑接口的预警机制, 如短信接口网关长时间无收发记录或者待发送队列积压过多的时候, 能够触发预警流程, 及时地告知维护人员进行处理。
1.2.4 专用通道
在上述预警机制的部署中, 如果由于发送功能异常 (如发送线程异常、SP通道受限等) , 则预警短信也将无法通过接口进行发送, 必须有另外的通道把该预警短信及时的送达维护人员, 建议采用专用通道 (如GSM、CDMA工业Modem) 进行预警短信的发送。
1.2.5 现场保护与恢复机制
由于采用了内存缓冲机制, 为了确保短信息不丢失, 在守护进程进行异常处理的时候, 还需要考虑内存的现场保护, 把没有完成处理的任务保存期来, 以便在重新启动新的网关进程的时候, 能够把这些任务不遗漏的进行继续处理, 即现场恢复。
1.2.6 程序异常捕获
虽然有守护进程和监控模块能解决服务可用性的问题, 不过, 那是比较被动的解决途径, 为了能够更加积极地解决这个问题, 我们在网关开发的时候, 还需要多采用“try…catch…”语句, 能够更加有效地捕获到程序各个地方所可能产生的异常, 并积极地作相应处理。
1.3 其他控制措施
作为SP短信接口网关, 除了考虑处理能力与稳定性之外, 关键字过滤、发送优先级控制、发送流量控制这三种机制也是必不可少的。
1.3.1 关键字过滤
作为一个成熟的SP短信接口网关, 在规划过程中, 也必须考虑短信内容安全的问题。在功能模块分析中还必须增加关键字过滤模块。由于关键字过滤的算法相当复杂, 且对系统资源的开销相当大, 作为通用的SP短信接口网关, 仅仅考虑的是简单的关键字过滤而已。
1.3.2 发送优先级控制
值得一提的还有, 在SP短信应用中, 还有一类业务 (如获取校验码等) , 这类业务的实时性要求比较严格的, 所以, 不可能全部机械地扔到短信接口中进行排队发送。因此, 短信接口网关还必须引入一个重要的参数, 即发送优先级, 通过对发送优先级进行控制, 我们可以针对整个SP短信应用提交的发送请求, 按照既定的优先级由高至低有序的进行发送。
1.3.3 发送流量控制
在运营商的SPMS (SP管理系统) 或者SMGW (短信网关) 上都有对每一个ESME (扩展短消息实体) 都有一定的流量限制, 对于超过流量限制的短信息, 执行丢弃的动作。为了确保SP短信接口网关所提交到运营商的短信息不被丢弃, 那么, 在提交的速度上也必须有一个控制, 最快不能够超过运营商提供给该ESME的最快发送速度。
2. 结束语
本文设计的SP短信接口网关, 目前已开始应用于各类SP, 有着比较广阔的应用市场前景。本短信接口网关存在许多优点的同时, 也存在一些不足之处, 如目前版本仅支持SMGP协议等, 这些还需进一步的完善。
参考文献
[1]郝文化.Windows多线程编程技术与实例[M].中国水利水电出版社, 2005-10
[2]候俊杰.深入浅出MFC (第2版) [M].华东科技大学出版社, 2001-1
[3]葛亮.VisualC++从入门到实践[M].清华大学出版社, 2009-7
二次开发接口 篇4
1 硬件设计
系统硬件电路如图1所示,其中主处理器芯片采用三星公司的S3C6410,CAN总线控制器和收发器分别采用MCP2515和MCP2551[3]。
图1中SPIMOSI、SPIMISO、SPICLK和SPICS是处理器SPI接口的数据线和控制线,INT16是MCP2515的中断引脚,与处理器的外部中断引脚相连。S3C6410是一款采用ARM1176JZF-S内核的高性能32位处理器,其主频稳定工作在667 MHz,且芯片内拥有两路SPI串行总线控制器,这可实现与CAN总线控制器MCP2515的通信[4]。
Microchip公司的MCP2515是一款带有SPI接口的CAN总线控制器。完全支持CAN V2.0B 技术规范,该器件能发送、接收标准和扩展数据帧以及远程帧。MCP2515自带的两个验收屏蔽寄存器和6个验收滤波寄存器可过滤掉不必要的报文,并且内部包含了两个接收缓冲器和3个发送缓冲器。
MCP2551是一个可容错的高速CAN器件,可作为CAN协议控制器和物理总线接口。MCP2551可为CAN协议控制器提供差分收发能力,符合ISO-11898标准[5]。
2 软件设计
基于WINCE的设备驱动目前有3种:本机设备驱动程序、总线驱动程序和流接口驱动程序。系统采用流接口驱动程序,工作结构框图如图2所示[6]。
2.1 地址映射
在WINCE下,由于有MMU管理单元,因此不能使用物理地址,而只能采用虚拟地址(VA)来访问该寄存器[2],调用WINCE系统函数MmMapIoSpace()将物理地址转化为程序可直接访问的虚拟地址[7]。
需要映射的物理地址为:PHYSICAL_ADDRESS ioPhysicalBase = {0,0};映射的地址长度为:sizeof(S3C6410_GPIO_REG);调用MmMapIoSpace()函数:v_pIOPregs=MmMapIoSpace(ioPhysicalBase,sizeof(S3C6410_GPIO_REG),FALSE);然后可通过修改v_pIOPregs的值改变SPI寄存器,实现SPI通信。
2.2 SPI接口编程
SPI接口一共有4个多功能复用引脚,可通过这些引脚的赋值来完成SPI接口的初始化工作,使其正常启动,从而MCU能够调用SPI接口函数实现对MCP2515的操作。接口函数主要由Spi_Write和Spi_Read组成。程序流程设计如图3所示。
2.3 CAN初始化
CAN控制器MCP2515正常运行之前,需要完成初始化。初始化工作是在函数Init_MCP2515内完成的。首先设置CAN通信的波特率,随后屏蔽中断,设置屏蔽和接收寄存器,接着是清除接收和发送缓冲区,最后打开中断。
2.4 CAN收发实现
根据CAN通信协议的特性,CAN的收发程序中均包含标识符(ID)和数据。下面介绍了接收程序,在MCP2515中包含了两个接收缓冲器RXB0和RXB1,且每个接收缓冲器配有多个验收过滤寄存器。文中在中断方式下,通过设置验收过滤寄存器对符合条件的报文数据进行接收,函数流程设计如图4所示。
2.5 流接口函数编写
MCP2515的流接口驱动程序编译后生成DLL,然后建立CANBus.def文件将其中的接口函数导出。这一文件中包含CAN_Init()、CAN_IOControl()以及CAN_PowerUp()等一组标准函数,这些函数是用于完成标准的文件I/O函数和电源管理等。最终要将此文件添加到本驱动程序的工程中。
因此在对设备进行读写操作时,首先要先通过CreatFile()函数调用CAN_Open()打开设备,在此过程中CAN_Open()函数用到了初始化函数CAN_Init()返回的句柄,而CAN_Read()和CAN_Write()函数需要CreatFile()成功执行后返回的句柄。在应用程序中可通过ReadFile()和WriteFile()函数来调用CAN_Read()和CAN_Write()来对设备进行读写操作。
2.6 注册表
具体的流接口驱动程序和注册表是分不开的,在WINCE内核中添加注册表文件CANBus.reg,内容为
[HKEY_LOCAL_MACHINEDriversBuiltInCANBus]
"Prefix"="CAN"
"Dll"="CANBus.dll"
"Order"=dword:1
"Index"=dword:1
3 结束语
讨论了ARM11处理器S3C6410的CAN总线接口扩展的方法,利用该处理器内部集成的SPI接口扩展,设计出了详细的硬件电路,并设计了基于WINCE系统的CAN接口流驱动程序。试验验证CAN网络通信完全正常,证明了该方案的可实施性。
摘要:介绍了一种基于S3C6410的CAN总线接口扩展方案,通过SPI接口对CAN接口进行扩展,并给出具体的硬件电路。重点研究了WINCE系统下独立CAN控制器MCP2515的驱动程序。结合CAN总线技术规范和MCP2515的特点设计了相关的软件代码,编写了CAN流接口驱动程序,实验结果表明,在WINCE系统下能够较好实现CAN总线的通信。
关键词:CAN,SPI,S3C6410,流接口驱动,WINCE
参考文献
[1]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996.
[2]张冬泉.Windows CE实用开发技术[M].北京:电子工业出版杜,2006.
[3]武安河,部铭,于洪涛.windows2000/XP WDM设备驱动程序开发[M].北京:电子工业出版社,2003.
[4]杨军波,须文波.基于WINCE环境的CAN适配卡驱动程序的设计与实现[J].微计算机信息,2005(21):26-28.
[5]王丹,华红艳,赵嵩.基于双层CAN总线的声纳数据通信系统设计[J].电子科技,2010,23(9):14-17.
[6]李玲娟,毕瑞英.网格环境中基于元数据节点的资源发现方法[J].西安邮电学院学报,2008(1):97-100.
【二次开发接口】推荐阅读:
开发接口10-30
java开发接口范文06-03
关于国际收支网上申报系统银行数据接口程序开发有关事项的通知09-16
二次开发项目06-14
深度二次开发07-05
二次开发技术08-11
mapgis二次开发应用05-13
禅道二次开发总结06-04
VBA二次开发技术论文06-02
模拟接口05-12