前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的c语言开发主题范文,仅供参考,欢迎阅读并收藏。
中图分类号:TP311文献标识码:A文章编号:1009-2374 (2010)12-0037-02
随着信息处理技术的飞速发展,DSP在电子信息、通信、软件无线电、自动控制、仪器仪表、信息家电等高科技领域获得了越来越广泛的应用。
以往开发DSP嵌入式产品时首先会想到用控制器的汇编语言编写软件,主要原因有:(1)控制器问世时,只配有相应的汇编语言开发工具,没有相应的高级语言开发工具可供使用;(2)汇编语言生成的程序对应的二进制代码少,执行速度较快;(3)存储器寻址空间和价格的限制。随着技术的发展,上述问题已基本解决。而且用C语言开发DSP嵌入式系统,具有开发周期段、可移植性好、调试和维护方便等优点。目前在许多应用领域,大家已经逐渐开始用C语言开发嵌入式产品。
现在,世界上的DSP芯片有300多种,生产DSP的公司有80多家,主要厂家有TI公司、AD公司、Lucent公司和Motorola公司。TI公司作为DSP生产厂商的代表,品种最多,大约占60%的市场份额。TI公司还推出了与其生产的DSP配套的软件集成开发环境Code Composer,用户可在该环境下用汇编语言和C语言进行软件开发。TMS320VC33作为TI公司第二代芯片的高速低功耗改进型浮点型TMS320VC33,在工业控制领域得到了广泛应用。目前,很少见到DSP系统下的C语言开发资料,本文以TMS320VC33为例,在TI公司提供的软件集成开发环境Code Composer下(版本4.10.36),向大家介绍如何用C语言开发DSP嵌入式系统。
一、TMS320VC33芯片的C语言开发过程
整个过程主要分为以下4个步骤:编辑C语言源程序;编译和链接;在线仿真;固化程序。
在Code Composer下,新建一个工程CSRJ.MAK;新建一个C源代码文件CSRJ.C(其内容为C语言源程序)和一个头文件VC33.H(程序设计中用到的TMS320VC33寄存器的定义),将这两个文件添加进CSRJ.MAK工程。
(二)编译和链接
1.TI公司的COFF文件格式。Code Composer的汇编器和编译器建立的目标文件格式为公共目标文件格式COFF(Common Object File Format)。这种格式易于进行模块化编程,增强程序的可读性和可移植性,为代码段和存储器的管理提供了更有力和灵活的方法,也为高级语言和汇编语言程序的编写提供了极大的便利。
在COFF目标文件格式中,最关键的概念便是段(SECTION)。段是COFF目标文件格式中的最小单位,在存储器中占据连续空间的代码或数据块。一个目标文件中的每一个段都是分开的和各不相同的。所有的段分为两大类:已初始化段和未初始化段。已初始化段包含程序代码或数据,未初始化段为未初始化的数据保留存储空间。C编译器对C程序编译后产生已初始化段(如:.text段、.cinit段)和未初始化段 (如:.bss段)。
2.链接器对段的处理。链接器对段的处理任务有两个:一是将COFF目标文件中的块用来建立程序块和数据块,并将这些块组合成可以被DSP芯片执行的COFF输出模块;二是为各输出块指定存储地址。
链接器有两条命令支持上述任务:MEMORY和SECTIONS。MEMORY命令定义目标系统的存储器各部分命名并指定起始地址和长度;SECTIONS命令用于指定如何组织输入段以及在存储器何处存放输出段。若不用这两个命令,则链接器采用缺省分配算法。推荐使用这两个命令,一般在链接器命令文件 (扩展名为.CMD)中确定。
下面分析一个TMS320VC33芯片的典型CMD文件(文件名为CSRJ.CMD)。
csrj.obj/* 源程序编译后对应的目标文件 */
-l Rts30.lib/* 链接Rts30.lib库*/
-stack 0x800/* 设定系统堆栈2K大小 */
MEMORY /* MEMORY命令规定系统的存储器配置*/
{
STACKRAM: origin = 0x00807000, length = 0x00001000 /* 内部RAM*/
RAM: origin = 0x00800000, length = 0x00007000 /* 内部RAM*/
VECTORS: origin = 0x00809fc1, length = 0x63/* 中断向量表区间*/
}
SECTIONS/* SECTIONS命令规定程序中段的具体分配分配方法*/
{
.text: { } > RAM/* 系统程序存放位置 */
.cinit: { } > RAM/* C初始化表存放位置 */
.bss: { } > RAM /* 未初始化数据存放位置 */
.stack: { } > STACKRAM /* 堆栈存放位置 */
vectors: { } > VECTORS /* 中断向量表存放位置*/
}
程序若要使用中断,可按如下方法在csrj.c中进行定义。
asm(" .sect \"vectors\" "); /* 中断向量表定义*/
asm(" br _c_int01 ");
asm(" br _c_int02 ");
asm(" br _c_int03 ");
asm(" br _c_int04 ");
asm(" br _c_int05 ");
asm(" br _c_int06 ");
asm(" br _c_int07 ");
asm(" br _c_int08 ");
asm(" br _c_int09 ");
asm(" br _c_int10 ");
interrupt void c_intX() /* 中断处理函数,其中X为01~10之一*/
{
中断处理程序语句
}
3.编译选项等设置。(1)添加前述命令文件CSRJ.CMD和库文件RTS30.LIB到CSRJ工程中;(2)选择“Project”下的“Option”选项,在“Compiler”菜单下设置“Target Processor”为“C33”;在“Assembler”菜单下设置“Target Processor”为“C3X”(其它选项根据需要设置);(3)单击界面“Rebuild All”按钮,即可编译链接,生成CSRJ.OUT文件。
(三)在线仿真
将仿真器与目标板连接,打开“Option”菜单下的“Program Load…”选项菜单,选择所有选项后单击界面“Rebuild All”按钮,可编译链接生成CSRJ.OUT文件并将该文件载入;点击界面按钮“Run”,即可仿真运行。
(四)固化程序
TMS320VC33芯片一般外挂FLASH或EPROM来存储固化程序,因此程序固化前要根据外挂的FLASH或EPROM的具体要求,将CSRJ.OUT文件转换成相应格式后写入FLASH或EPROM。
二、DSP系统下的C语言编程应注意的问题
(一)内存依赖关系
为了最大化代码性能,编译器尽可能将指令并行处理。但是要做到这一点,就要确定指令间的关系。如果一条指令需在另一条指令执行后才能执行,那么这两条指令就存在依赖关系。当编译器不能识别指令间是否独立时,就要告诉编译器他们之间的关系,可以通过关键字“restrict”声明变量或优化命令选项来通知编译器。
Code Composer提供了四个优化命令选项:Level 0寄存器级别、Level 1局部级别、Level 2函数级别、Level 3文件级别。从表面看,直接使用Level 3最简捷,可以一步到位。然而在实际中,选择时应根据系统实际情况而定。一般较大的系统软件不宜采用Level 3级优化,因为这样一般容易造成系统死循环。在实际工作中,一般根据系统实时性要求,对于关键处的函数选用Level 2级,对于次要的可以选用Level 1级、Level 0级或不选,这样不会造成系统程序不执行或程序混乱的现象。
(二)变量的声明
函数调用时,尽可能使用全局变量,这样可以减少对变量的堆栈处理,同时也节省了寄存器的使用。
另外,在 Code Composer环境下全局变量的声明和初始化要占用约双倍的存储区域。因此,为了节省资源,对于数据量较大的查表常数数据,要采用特殊方法定义,使其只占用自身大小的存储资源。对表1所示数据的全局定义进行举例。
表1
1.22 3.55 4.67 9.53 8.11
6.97 9.45 7.54 8.16 1.08
若用常规方法如下定义:
biao_xyx[2][5]={1.22,3.55,4.67,9.53,8.11,6.97,9.45,7.54,8.16,1.08};
编译后查看.map文件,发现该数据在.cinit段占用12个字,在.bss段占用了10个字。
若用如下特殊方法定义
asm(" .global _biao_xyx ");
asm(" .sect \".data_chabiao\" ");
asm("_biao_xyx : .float 1.22, 3.55, 4.67, 9.53, 8.11 ");
asm(" .float 6.97, 9.45, 7.54, 8.16, 1.08 ");
extern float biao_xyx[2][3];
编译后查看map文件,发现该数据在只在.data_chabiao段占用了10个字。
(三)多调用TI提供的固有函数和功能函数
TI基于C语言开发提供了很多实际有效的固有函数。如果采用一般C语言自己编的函数,可能会需要更多语句,耗时可能增加。
(四)合理编写循环体
在数据处理过程中,循环体用得较多,处理量较大,坏的编程风格会浪费不必要的时间。一般应注意:在循环体内不要包含调用;循环体不要有过多指令;对于多重循环,如果内层循环体较短,可以考虑打破该循环体,与外部循环结合;将与循环变量无关的判断语句移到循环体外。
(五)注意浮点格式转换
为使硬件获得更高的效率,TMS320VC33芯片采用了不同与IEEE标准的浮点格式。在开发DSP系统通信软件模块时,若采用浮点格式进行数据传输,一定要注意外部系统使用的哪种格式,必要时要进行相应的格式转换。
三、结语
本文以TMS320VC33芯片的开发为例,介绍了用C语言开发DSP嵌入式系统的过程和注意事项,希望能对读者有所帮助。
参考文献
[1]杜普选,马庆龙.实时DSP技术及浮点处理器的应用[M].北京:清华大学出版社,2007.
[2]汪安名,程笠,徐宝根.DSP嵌入式系统开发典型案例[M].北京:人民邮电出版社,2007.
[3]TMS320C3x/C4x Assembly Language Tools User’s Guide[S].Texas Instruments,1997.
摘要:近些年来,随着时代经济的飞速发展以及科技的进步,当下主流的编程语言中,C++语言作为一种特殊的编程语言,主要来源于C语言的演化,同时C++语言跨平台软件开发的如何设计始终是当前软件开发行业领域研究的热点之一。本文在对基于C++语言的跨平台软件开发设计研究时,首先分析了C++语言,其次分析了跨平台软件开发环境,最后探讨总结了C++语言的跨平台软件开发设计过程。
关键词 :C++语言;跨平台;软件开发;设计研究
现如今计算机语言中C++语言使用频率和次数最多,同时编程速度较高,进而广泛的应用于跨平台软件的开发设计中。跨平台作为软件开发中的重要概念之一,不仅仅依赖于实际的操作系统,结合跨平台开发的实际需求,逐渐推动了现代化软件工程的蓬勃发展。因此本文对基于C++语言的跨平台软件开发设计进行研究有一定的经济价值和现实意义。
1、C++语言的相关概述
C++语言主要是由C语言演化而来的,C语言开发演化过程中,逐渐注重系统软件开发的特性,并伴随着C++语言的兴起,其新特性逐渐增加。当前C++语言和其它相对高级的语言相比较而言,有着特殊的运行性能,在实际的运行过程中,并不需要借助于虚拟机将其作为中介,进而将C++语言的运行效率显著提高。
同时C++语言在实际的开发过程中,往往有着相对较低的开发成本,C++语言应用的过程中,逐渐被引入各种各样的特性,将其在泛型编程拓展过程中,对于高层次的软件工程问题有着一定的积极作用。
总之,C++语言有着相对根本性的优势,不仅仅可以用于高级系统程序的设计和3D游戏的开发应用,同时也可用于数值科学计算以及通用程序设计等。
2、跨平台软件开发环境
2.1 跨平台的相关概念
跨平台作为现代化软件开发中相对重要的一种概念,不仅仅对操作系统没有一定的依赖性,同时对于硬件环境也没有一定的依赖性,而在实际的开发应用程序过程中,更要将其在另一个操作系统下保持有着正常性的运行,基于跨平台的实际需求,就要结合现代软件工程的发展,对各种不同的平台加以支持,进而将其带给市场的潜力充分发挥。
2.2 跨平台软件开发需要的环境
一般而言,开发环境构成的过程中,往往需要有着一定的软件编辑器、程序调试器以及程序编译器三种,但是就其实质性而言,Sandbox这种软件不仅仅可以实现代码的编译,同时也可实现代码的调试,其内部同样各种各样的平台中往往需要有着各种各样的代码库和依赖库。开发程序中,同样也存在多种类型的源代码,在C++语言的软件开发和编译中,就要做好最终结果质量的控制,并有最好的代码产生,在对错误捕捉和调试过程中往往需要一定的支持。
跨平台软件开发主要是将抽象实现的一种重要因素,往往需要将抽象以及相关的一些设计逐渐的借助于新的开发手段进行开发研究,实现在不同平台上都能实现特殊的编译。
3、C++语言的跨平台软件开发设计
C++语言跨平台软件开发设计过程中,更要做好各个环节的综合设计,就其实质性而言,C++语言的跨平台软件开发设计可以从以下几个环节做起:
3.1 将语言的扩展特性避免
一般而言,任何语言在编程的过程中,往往都是对相对较老的程序以及文件进行选择。这些相对较老的程序包含一些原有的程序和基本公式,相对来说这些程序和公式不仅仅有着规范性,同时也有着标准型,而当前现代化的新程序库相对来说是杂乱无章的,在跨平台上产生过程中,常常面临各种各样的故障,虽然会获得一定的支持,同时也会有不精确定义的事故存在。
C++语言的跨平台软件开发设计过程中,就要避免语言存在一定的扩展特性,这种跨平台开发过程中往往有着相对较高的异常灵敏度,无限度的对新特性利用中,就要借助于C++语言标准函数的基本模型,并保证开发软件和产品有着相对较强的稳定性。
3.2 将动态处理实现
C++语言跨平台软件开发中,就要对多种环境运行的可移植代码库加以编写,在实际的项目开发过程中,就要对可能存在的问题加以避免,并处理好一个平台在另一个平台上没有特性这一问题,进而实现动态性的处理。
3.3 借助于脚本文件实现管理
就C++语言的跨平台软件开发设计而言,就要做好脚本文件的基本管理工作,保证编写的程序代码不仅仅有着简单易懂的特点,同时也要有着一定的简洁性,对合理的软件结构进行构建,将和平台相关的一些文件以及数据库充分的分隔,在实际的开发过程中借助于脚本文件进行某种程度上的编译,将其在各个部位合理的分配。对应用程序使用的过程中,就要将配置文件中的相关配置选项调出来,进而将里面的程序读取,并在跨平台软件开发过程中,尽可能的保证平台相关联的文件进行全部的分离,借助于特殊的手段将该功能充分实现。
3.4 对安全的数据串行化使用
现如今,C++语言的跨平台软件开发设计过程中,对于如何保证跨平台数据存储的安全性和可靠性这一问题,始终是当前软件开发设计的核心问题之一,而C++语言的跨平台软件开发设计过程中,可以借助于软件的fread指令,做好对每个编译器和单一目标平台的综合性处理,并在实际的跨平台操作环境中,借助于实际方法对数据进行不同程度上的存储和加载,进而对平台的独立性加以保障,借助于跨平台将数据在目标文件进行存储过程中,一般而言,不同的平台间往往有着一定的差异,在实际的处理过程中,同样也将会有着多样性的结果特征。
3.5 C++语言跨平台开发中的编译和测试
C++语言跨平台开发变异和测试过程中,更要做好科学化的编译和测试,在实际的跨平台软件开发过程中,尽可能的保证相关联的一些代码在长时间的使用过程中,保证其代码可以在另外的平台上加以检测,并借助于不同的平台进行测试,进而将bug及时的发现。
3.6 实现抽象
一般而言,实现抽象主要是对跨平台应用程序中被移植过程中有着一定的有效性,通过对这种方式加以借用,进而实现软件的单独性开发,并将具有独立性和简洁性的程序拿出,在实际的跨平台开发设计过程中,往往需要对多种函数进行利用,进而在实际的开发过程中,并不用对所有的函数进行变异,而C++语言跨平台软件设计过程中,主要是对封装方法加以采用,进而将抽象的过程实现,这种封装方法相对来说,需要视情况而定,一旦存在相对特殊的情况时,就要借助于其它的方式做好程序的基本调用工作,并做好对该功能的基础命名工作。实现抽象的过程中,一旦对该程序及其公式使用之后,就要将该功能的主要程序直接调用,并将该功能充分实现。
3.7 C++语言跨平台软件开发的实现过程
C++语言跨平台软件设计开发的实现过程中,首先就要做好功能模块实现过程和非功能模块实现过程,在代码编写之前,就要对源代码在文本编写过程中的相关编辑策略加以规定,对\t格式加以统一,并使得代码的结构尽可能有着简单化的基本特点。
C++语言跨平台软件开发实现过程,同样也要对统一的工程宝建立,并对跨平台的代码库加以建立,借助于平台依赖库对平台相关代码进行封装,做好对处理器差异、编译器差异的合理控制,保证有着对齐的内存和有着顺序的字节,并将平台无关的代码实现,做好内存的管理。
操作系统和接口库实现的过程中,往往不同的操作系统将会存在各种各样的系统限制,在实际的开发设计过程中,更要对限制的参数进行适当的调整,并做好对文件描述符的基本限制,尤其是在Unix系统中,就要借助于文件的描述符这种系统性的资源,提高程序的通用性和灵活性。网络程序开发过程中,任何一个网络连接将会对一个文件描述符占用,一旦程序将很多的Socket连接打开,其程序在实际的运行过程中借助于fopen将难以打开文件。对这一问题如何加以解决呢?可以将其系统逐渐的升级为64位系统,同时还可以采用64位方式编译程序,对sys/io.h中的函数操作文件加以使用,并对文件池技术加以采用,将一部分文件描述符预留。进程和线程在实际的限制过程中,就要对线程数进行创建,并将符的数量以及进程线大小的限制加以描述,其操作系统抽象层中操作系统函数不能直接的被调用,更应该将其在一个操作系统抽象层中包装的库中实现,将其在底层的操作系统中直接的脱离出来,并保证系统调试有着相对有效的起点。
用户界面的实现过程中,就要做好跨平台软件图形界面的基础设计工作,将程序基础的逻辑代码和数据构成,金可的借助于跨平台的开发工具包,借助于C++语言实现,进而开发利用C++语言跨平台应用程序的一种用户界面,进而做好相关界面的控制。
结语
总而言之,本文在对C++语言的跨平台设计进行研究时,通过对C++语言和跨平台需要的环境进行分析,进而对C++语言跨平台设计做了主要的探讨,进而总结出,C++语言跨平台设计过程中,不仅仅要有着相对丰富的经验,同时更要在开发的软件中将更多的功能和实际的操作容积加入,借助于相对优越的设计,综合性的提高软件的额功能。本文研究分析C++语言的跨平台设计时,希望其中的设计思路以及相关的理论基础为更多的跨平台开发设计工程师给予一定的帮助,同时本文中存在的不足之处还望更多相关研究人员给予指正。
参考文献:
[1] 张驰. 基于C++语言的跨平台软件开发的设计与实现[D]. 北京交通大学,2010.
[2] 侯成杰. 航天器C语言软件常见编程错误分析及检测方法研究[J].空间控制技术与应用,2013,06:53-57.
[3] 杨波,沈承舒. 面向嵌入式软件开发的C语言程序设计课程改革探索[J]. 计算机教育,2014,05:105-107.
[4] 吴兴华. 基于C语言软件开发的效率、移植及调试[J]. 数字技术与应用,2013,12:172.
[5] 杨鹏. 基于C++语言的跨平台软件开发的设计[J]. 硅谷,2014,04:19+21.
[6] 徐巍. 跨平台移动开发框架的比较分析与实例开发[D]. 吉林大学,2014.
[7] 谢东来. C语言软件设计中的主要问题分析[J]. 计算机光盘软件与应用,2013,04:235-236.
【关键词】精品课程;Web;应用开发;B/S
0 前言
传统的课堂教学中,存在教学任务重,教学课时紧张的特点。作为公共基础课的《C语言程序设计》,是培养学生计算机编程能力的入门课,在课程教学中课时与教学任务之间的矛盾更加突出。精品课程网站的出现,为学生在课下学习和复习提供了一个有效的平台,可以弥补课堂教学的不足,同时,优质教学资源也可以通过精品课程得到更为广泛的共享,极大的提高了其教学价值。
如何设计一个功能稳定、内容丰富、界面美观、使用方便的精品课程网站,对于《C语言程序设计》的教学是一个极具探讨价值且亟待解决的问题。
1 《C语言程序设计》精品网站建设需求与功能分析
《C语言程序设计》精品课程网站要求能够方便用户在线资源共享及教师管理者资源的有效。网站平台要具有界面美观,操作方便,稳定性与安全性好的特点。在网站内容方面,要结合该课程较强的实践性的特点,实现学生与教师的有效互动。因此,在功能上应实现用户注册、课程资源,资源管理,资源浏览,留言及回复,公告管理,用户管理等功能。课程资源包括课件、习题、参考资料、教学大纲、教案、教学视频、演示动画等的。资源管理实现上述资源的修改与删除。用户管理实现用户账号信息的管理、密码修改与重置等。
2 《C语言程序设计》精品网站开发技术
本网站采用JSP作为网站网页开发技术,MYSQL作为存储数据信息的后台数据库。JSP是Sun公司推出的构建在Servlet规范提供的功能之上的动态网页技术。MYSQL是一个开放源码的关系数据库管理系统,目前已经被广泛地应用在中小型网站中。
网站平台的开发,采用目前最流行的SSH(Struts+Spring+Hibernate)框架及MVC(模型Model-视图View-控制器Controller)设计模式,充分考虑了平台的可扩充性和安全性及稳定性的要求。平台的实现包含了表示层、业务逻辑层、数据持久层和域模块层的设计与开发。该开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离,是的系统具有很好的可维护性。在表示层中,首先通过JSP页面实现交互界面,负责接收请求(Request)和传送响应(Response),然后Struts根据配置文件将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,由Spring IOC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供缓冲池、事务处理等容器组件以提升系统性能和保证数据的完整性。在持久层中,将依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,然后返回处理结果。同时,平台在网页刷新方面采用了Ajax (Asynchronous JavaScript and XML,异步JavaScript和XML)技术完成页面的局部刷新。在资源上传方面,采用SmanUpload组件实现了文件的上传。采用FlashPaper实现文档到FLASH动画的转换。在线编辑则使用了开源的在线HTML编辑器KindEditor。
3 精品网站主要功能模块设计与实现
结合《C语言程序设计》精品课程网站的建设需求,下面对该平台的一些主要功能模块的设计与实现进行介绍。
3.1 系统功能建模设计
系统用户主要包括学生用户、教师用户及管理员,可以依据三者各自的功能,采用用例图实现其功能的模型化概要设计,并且利用活动图、状态图及类图实现其细化,实现平台主要功能模块的详细设计。下面是教师用户角色的用例图。
图1 教师用户角色用例图
3.2 系统主要功能实现
根据详细设计阶段的成果,进行程序代码的编写,完成预期的功能模块。开发实现过程中注意了代码书写的规范化及可重用性,对于界面,采用了一些精美的图片与动画,使得实现的网站平台在可用性、界面友好性方面有好的体现。同时,按照预期的需求对其进行相应的黑盒测试与白盒测试,检验其是否满足实际的要求。
4 课程精品网站的
本精品网站在在WINDOWS平台或LINUX平台下,下面以在WINDOWS平台的过程来进行说明:
4.1 安装WINDOWS SERVER服务器版操作系统
由于《C语言程序设计》精品课程完整有着大量的用户,存在较大的并发访问情况和安全性需求,因此网站需要在性能稳定,安全性高的服务器平台。我们首先需要安装WINDOWS 2000 SERVER以上的服务器版本,本网站的服务器为WINDOWS 2008 SERVER。
4.2 安装JDK并进行配置
JDK是JAVA开发及运行的环境,网站的运行需要JDK的支持,下载JDK的WINDOWS版本安装包进行安装,然后配置相应的环境变量,包括java_home,path和classpath三个部分。
4.3 安装Tomcat WEB服务器
下载并安装Tomcat,Tomcat是Apache的一个JSP常用的WEB应用服务器,具有很好的稳定性。
4.4 安装MYSQL数据库管理系统
网站采用MYSQL作为数据库管理系统,下载并安装MYSQL,然后创建网站所需要的数据库和用户。
4.5 安装JDBC驱动
JDBC(Java Database Connectivity)是一种可以执行SQL语句的Java API,提供了程序访问数据库的接口。平台对数据库的访问需要安装JDBC驱动。
4.6 网站到TOMCAT(下转第13页)
(上接第15页)将精品网站的JSP程序放置在直接放到Webapps目录下或者自己建立的目录下,修改配置server.xml,实现网站的最终。可以通过修改server.xml文件,在Host标签内建一个Context实现,内容如下:
其中path是虚拟路径,docBase是JSP应用程序的物理路径,workDir是这个应用的工作目录,存放运行是生成的于这个应用相关的文件。
这些步骤完成后,就可以浏览器里直接访问该网站。
5 结束语
作为学生自学重要途径的精品课程资源建设,是对优质课程资源共享的一个重要途径,同时也弥补了课堂教学的不足。本文分析了《C语言程序设计》精品课程网站的需求,讨论了精品课程网站的开发技术和开发思想。设计和实现了精品课程网站的开发,并且给出了网站的方法。精品课程网站的建设和其合理应用,对于学生的学习有较好的效果,为进一步促进教学质量的提升打下坚实的基础。
【参考文献】
[1]郑伟平,范冰冰,胡遵华,田杰.多租户精品课程网站系统的研究与实现[J].东北师大学报:自然科学版,2013(02).
[2]周玉芬,柯和平,陈锐浩.基于绩效技术的精品课程网站建设研究[J].中国电化教育,2012(07).
关键词:Coco2d-x;动态更新;Lua;跨平台开发
中图分类号:TP368.1 文献标识码:A
Abstract:The Lua scripting language technology has brought the new heaven and earth for the development of Coco2d-x.Through the Lua scripting language development Cocos2d-x application,get rid of the tedious code of C/C++ development,makes the development of fast and efficient and can run on multiple platforms at the same time,the Lua scripting language can expand sex,can make it a good integration in the application.At the same time the Lua language become controller in development.Control the application logic and Coco2d-providing display functions of x and cross-platform features.Such development can dynamically modify the client not only bugs,but also dynamic update application content to avoid the update of customer churn.Free,small,fast,easy to transplant the Lua language reduces the development cost and guarantee the application performance.
Keywords:Cocos2d-x;dynamic updating;Lua;cross-platform development
1 引言(Introduction)
Cocos2d-x是基于C++语言的移动端应用程序开发的开源框架。Cocos2d-iPhone项目的C++版本[1]。Cocos2d-x开发框架用C++语言重写了Cocos2d开发框架从而实现应用开发跨平台,在跨平台移动端应用开发中Cocos2d-x框架被大量使用[2]。其开发的手机应用,可以在C++或者Lua中编写。Cocos2d-x项目能够兼容iOS操作系统,Android操作系统,黑莓Blackberry操作系统等。在PC端Cocos2d-x开发框架支持的操作系统包括Linux操作系统、Mac操作系统和Windows操作系统等PC端操作系统,因此,Cocos2d-x能够在PC端操作系统中可以进行编辑和调试使得其在开发中变得高效快捷[3]。
2 基于Lua动态脚本语言Coco2d-x应用开发的关键技术(The key technology of Cocos2d-x application development based on the dynamic scripting language Lua)
(1)Lua技术
Lua是一个小巧的动态语言。Lua动态语言的设计初衷,为应用程序开发提供订制功能与灵活的拓展。作为脚本语言它具有轻量、可拓展、简洁等特点[4]。因为C++语言与Lua脚本语言具有良好交互能力。可以复杂繁琐的C++开发变为简单快捷的Lua语言开发。
(2)Lua与C++交互技术
Lua动态脚本语言与C++语言的通讯分为两部分,首先是Lua动态语言通过Lua Binding访问C++语言中的类库或者函数以及传递参数,其次分是C++语言回调Lua C API访问Lua的函数以及传递参数。
(3)Cocos2d-x开发手机应用技术
在实际开发中,使用Cocos2d-x框架进行移动端应用程序开发,依赖其可以和平美兼容,使其项目可以做到多个平台一套代码,多个平台一个版本避免了多平台版本不统一的尴尬。通过与之相配套的CocosStdioUI编辑快速生成plist文件可视化进行界面布局提高实际项目中的开发效率,让应用开发变得更加迅捷高效开发。
3 基于Lua动态脚本语言Coco2d-x应用开发的应用
与实现(The use and implementation of Cocos2d-x
application development based on the dynamic
scripting language Lua)
3.1 Lua与C++的交互技术实现
在C++中初始化Lua:
Lua_State * L=lua_open(); //初始化Lua环境
void CCinitLua() {
lua_openlibs(L); //载入Lua全部标准库
}
完成在C++来执行Lua文件。Lua被嵌入到C++程序中,起到一个黏合作用。而Cocos2d-x框架其强大的功能分别来自于不同的类库。Lua动态语言在程序开发中作为整个应用程序的逻辑控制器,在开发中Lua脚本语言充当大脑而开发框架充当肢体。以消息机制为例,通过调用C++语言的函数达到,回调Lua动态语言函数。以C++绘制函数为例,C++通过绘制函数传输一个消息给Lua语言,当绘制函数进行重绘时也就在Lua语言中执行相同的函数。这样就可以在书法简练没有类型的Lua中编写C++代码,省去了C++的复杂语法从而有拥有了C++的强大功能。通过这个方式就能够实现其他事件机制。
动态脚本语言Lua调用C++接口时,进行参数传递,回调结果的获取。需要把C++中函数位置通过指定的方式传达给Lua语言。在Lua调用C++,C++从栈中找到交互的栈,从而获取其中的参数,调用结束后将返回结果信息放入栈中。在当Lua语言中绘制函数被调用时,同时也调用了C++中做相应处理的函数,这样动态语言Lua与C++的交互就是实现的。
3.2 Lua与Cocos2d-x交互
Cocos2d-x具体来说更像是一个类库的合集其中把图形渲染和多媒体播放甚至物理引擎,分解集合成一个lib。通过C++调用这个lib中的具体方法而实现快速的手机应用开发的框架。通过Lua动态语言嵌入到Cocos2d-x开发框架中,并与其良好的结合。达到了在脚本中开发跨平台手机应用。
3.3 利用Cocos2d-x开发应用
目前移动端操作系统主要有iOS操作系统,Android操作系统。移动应用程序开发需要使用Cocos2d-x进行开发可以避免一款程序多套代码的尴尬。
(1)利用Lua+Coco2d-x开发Android应用
通过Native Development Toolkit(NDK)我们可以在eclipse里面集成外部库(比如Cocos2d-x),使用C/C++来编写Android程序。这些库被编译成动态库通过JNI(Java Native Interface)与Java Android体系程序进行交互。下面有两种使用方法:
①独立模式:直接在makefile中使用arm-linux-androideabi-g++。
②集成模式:使用$NDKROOT/ndk-build shell工具,它是一种高度可定制的makefile,专门为NDK库所设计的。
首先修改Anroid/jni/Android.mk中文件如下:
LOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)subdirs:=$(addprefix $(LOCAL_PATH)/http:///../,$(addsuffix /Android.mk, \
cocos2dx\CocosDenshion/android\lua/proj.android/jni\))subdirs+= $(LOCAL_PATH)/pyramid/Android.mk
include $(subdirs)
修改jni\Application.mk文件:
APP_MODULES:=cocos2d cocosdenshion lua game
在android\src\org\cocos2dx\xx\x\.java中修改:
static {
System.loadLibray("cocos2d");
System.loadLibrary("cocosdenshion");
System.loadLibrary("lua");
System.loadLibrary("game");
}
(2)利用Lua+Coco2d-x开发iOS应用
在Mac操作系统终端中填入:
cd $COCOS2DX_HOME
sud./install-templates-xcode.sh-u
在Cocos2d-x框架安装成功以后在Xcode中会出现新的Cocos2d-x模板选择即可创建新的工程。由于lua语言不能直接与Objective-C交互,所以我们使用Lua Bingding和C/C++交互。同时C++和Objective-C可以混编,使用C++可以直接调用Objective-C,让C++作为Lua和Objective-C交互的桥梁(图1)。
(3)Lua开发应用
我们通过用Lua动态语言创建场景、层、精灵来实现应用中的一个通过用户触摸图片跟随用户手指移动的功能。
Mc_Scene=cocos2d.CCScene.node()
Mc_Layer=cocos2d.CCLayer.node()
Mc_Scene:addChild(Mc_Layer)
Mc_Sprite=cocos2d.CCSprite:SpriteWithFile
("machao.png")
Mc_Layer:addChild(Mc_Sprite)
SceneSize=cocos2d.CCDirector:shareDirector:getWinSize()
Mc_Sprite:setPosition(cocos2d.CCPoint(SceneSize.width*0.5,SceneSize.height*0.5))
Mc_Layer.__CCTouchDelegate__:registerScriptTouchHandler(cocos2d.CCTOUCHBEGAN,"btnTouchBegin")
Mc_Layer.__CCTouchDelegate__:registerScriptTouchHandler(cocos2d.CCTOUCHMOVED,"btnTouchMove")
Mc_Layer.__CCTouchDelegate__:registerScriptTouchHandler(cocos2d.CCTOUCHEND,"btnTouchEnd")
Pointbegin=nil
Function btnTouchBegin(e)
Local v=e[1]
Local pointMove=v:locationInView(v:view())
pointMove= cocos2d:CCDirector:sharedDirector():covertoGL(pointMove)
Mc_sprite:setPosition(cocos2d.CCPoint(pointMove.x,pointMove.y))
End
Function btnTouchMove(e)
Local v=e[1]
Local pointMove=v:locationInView(v:view())
pointMove= cocos2d:CCDirector:sharedDirector():covertoGL(pointMove)
Mc_sprite:setPosition(cocos2d.CCPoint(pointMove.x,pointMove.y
End
Function btnTochMove(e)
Cocos2d.CCLuaLog("T_end")
end
CocoDenshion.SimpleAudioEngine:shareEngine():playBackgroundmusic("background3.mp3",true)
CocoDenshion.SimpleAudioEngine:shareEngine():preloadEffect("effect1.wav")
Cocos2d.CCDirector:shareDirector():runwithScnen
(Mc_Scene)
Cocos2d.CCLuaLog("脚本运行结束")
4 结论(Conclusion)
本文使用Lua动态语言进行移动应用程序的设计与开发,把灵活高效的脚本语言应用到移动端应用程序开发,通过其良好的嵌入能力与Android平台和iOS平台结合,利用Cocos2d-x进行应用开发。Lua动态语言能使应用程序的逻辑和与前端视图完全剥离开,不仅大大减少的应用程序的开发周期还使其具有客户端动态更新的功能,又通过Cocos2d-x开发框架与多平台相兼容,降低了开发成本。同时也降低了应用程序的复杂程度,增加了代码的可复用性。
参考文献(References)
[1] Jayant Varma.Lua实战:IOS游戏开发[M].北京:人民邮电出版社,2014:77-78.
[2] 刘剑卓.Cocos2D-X游戏开发技术精解[M].北京:人民邮电出版社,2013:53-54.
[3] 满硕泉.Cocos2D-X权威指南[M].北京:机械工业出版社,2010:26-27.
[4] Ierusalimschy R.Progarmming in Lua[M].北京:电子工业出版社,2006:141-143.
作者简介:
关键词:20CrMnTiH;齿轮钢;开发
引言
20CrMnTiH齿轮钢是我国用于制造各种汽车以及工程机械等传动齿轮以及齿轮轴的材料所使用最为广泛的一种钢种,在齿轮钢总量中占有重要的比重。齿轮是比较关键的机械零件,它在实际的应用过程中承受着交变载荷以及冲击载荷等,所以对钢的性能要求较为严格。
1.20CrMnTiH齿轮钢的基本概述
1.1 20CrMnTiH齿轮钢关键技术分析
在我国的20CrMnTiH齿轮钢产业的长期发展过程中,在生产的工艺上已经逐渐的成熟,形成了一套有着我国特色的齿轮钢生产工艺,在对这些技术进行应用的过程中能够在很大的程度上提高生产的效率。其中,通过电炉少渣出钢的工艺能够有效的降低脱氧的负担,并对钢中所夹杂的一些杂质含量起到了有效的控制作用;在无氧化保护浇注这一关键技术的应用基础上,对钢中的氧含量得到了有效降低;通过对结晶器电磁搅拌这一关键技术的有效应用,大大减少了铸坯化学成分的偏析;另外,在快速白渣这一关键技术的应用过程中,对钢中的氧含量也得到了有效的降低[1]。
1.2 20CrMnTiH齿轮钢的性能分析
这一产品有着高碳的耐磨表层以及低碳的高强韧性心部,这样能够对巨大的冲击载荷以及磨损等得以承受,在其性能方面主要有可加工性以及使用性能。在可加工性能这一方面,传统的齿轮加工大多是采取插齿以及车削加工等,在随着我国的科学技术的发展以及齿轮加工自动化的形成,在生产效率方面有了很大的提高,通过数控技术进行绿色加工已经得以实现[2]。一般常见的轮齿失效就是吃面点蚀以及折断等,而在疲劳失效这一方面主要就是钢中的杂质所导致的,随着我国在新技术方面的引进,对其使用的性能已经大大的得到了提高,齿轮钢的纯洁度得到了保障。
2.20CrMnTiH齿轮钢的开发流程及技术创新探究
2.1 20CrMnTiH齿轮钢的开发流程分析
在我国实际的20CrMnTiH齿轮钢的开发内容方面涉及的较为广泛,其中在开发的过程中需要通过专业的技术人员对钢的质量以及工艺的要求进行把控,并结合企业自身的发展特点,然后才能够对20CrMnTiH齿轮钢的开发路线以及相关的设备配备进行确定。然后就是依据着相关的工艺要求以及企业的现阶段设备以及外购的检测设备基础上,对钢的相关工艺特点以及操作水平、生产的现状等进行整合成对实际有着指导作用的指导书,接着对初步的开发进行审核,并形成试验方案。
然后经过相关的评审之后要能够对开发的要求满足情况加以确认,不符合实际开发要求的要能够进行积极的改善。在这些完成之后就要进行初步的开发生产,在开发的过程中对出现的问题要进行及时的解决应对,避免失控情况的发生,同时还要能够对开发的要求得以满足。在试验开发的阶段一定要严格的按照标准进行实施,在物理检验以及化学检验方面都要能够得以加强,从而满足对20CrMnTiH齿轮钢开发设计的要求达到标准。另外,对20CrMnTiH齿轮钢开发过程中要进行多次的试验,确保钢中的杂质最大化的清除,要对影响这一开发的因素进行积极的排除,从而形成适合这一工艺开发的最佳参数。
2.2 20CrMnTiH齿轮钢的技术创新探究
在20CrMnTiH齿轮钢的开发中,对其技术要能够进行创新,首先就是在快速白渣工艺这一创新技术方面,在经过对精炼炉操作得以优化之后,对其造渣的工艺也进行了有效的改善。在具体的操作过程当中就是对精炼炉的碱度进行适当的控制,将其控制在2.0―3.0之间,这一技术不仅有着较有效的脱氧效果,同时在流动性方面也比较的优良。
另外,在少渣出钢这一工艺的创新点最为主要的就是电炉用挡渣锥进行的挡渣,同时又加入了挡渣车,这样在定位上就相对来说比较的准确,挡渣的效果能够得以完善的呈现出来,从而对少渣多钢得到了实现。然后就是在连铸无氧化浇铸这一创新技术方面对低过热浇注有了保障,同时也对高的中间包液位浇注有了保证,在液面的稳定性方面也有了保障,避免了中包液面的大波动所造成的钢液卷渣现象[3]。
在深脱氧这一创新技术的应用过程中,也在很大的程度上对钢中的氧含量有了降低,在对电炉出钢进行了有效控制之后,实现了少渣出钢,这样就有效的对脱氧的负担有了降低,从而对精炼炉中的A1含量得到了有效控制。在过热度过高的情况下就会使得柱状晶过于发达以及中心碳的偏析较为严重等情况的出现,所以将过热度控制在二十摄氏度到三十摄氏度之间是比较适宜的,而在拉速这一方面将其控制在1.1到1.3m/min这一范围内是较为合适的。
而在电磁搅拌以及氩气搅拌的技术创新应用过程中,不只是将钢中的一些有害气体得以减少了,并对剩余的一些杂质进行了改性的处理,在杂物的含量级别方面有了很大程度上的降低,这一创新技术的应用在质量水平方面和技术协议中的脆性夹物以及塑性夹物小于三级的规定是相契合的。
3.结语
总而言之,在20CrMnTiH齿轮钢的开发过程中会遇到诸多的问题,故此要能够找到问题的根源所在,有针对性的加以解决。随着我国的科学技术的进步,对20CrMnTiH齿轮钢的开发以及研究方面定将会迎来一个新的发展局面。
参考文献:
[1]杨跃标,邓深,朱超云,周汉全,江学德.20CrMnTi齿轮钢方坯连铸工艺的研究与应用[J].柳钢科技,2012,(04).
关键词:SuperMapObjects,电子地图,十堰市
1 引言
传统的地图制图理论已经基本成熟,但是任何一门学科的发展都是和现代科学技术的发展分不开的,现代科学技术的发展促进学科的发展,所以地图制图学也不例外[2]。计算机技术、多媒体技术、网络技术以及其它相关的或可能相关的技术正在影响或可能影响地图制图学的发展,因此电子地图信息研究与实践是对地图制图学新技术和新理论的补充和完善,这是本论文的意义之一[1]。电子地图相对独立,可以根据需要方便快捷的转化为纸制地图;电子地图中挂接的多媒体信息内容具有动态性,可以方便的对信息内容进行补充和更新,同时内容组织更加灵活;在电子地图上可以方便的进行量算和相关分析,同时借助于多媒体技术使信息的表达形式更加丰富多彩;随着信息化的发展,电子地图作为空间信息的主要载体和传播工具在国民经济建设中发挥着不可替代的作用。因此研究电子地图具有十分重要的现实意义。
2 SuperMapObject简介
SuperMap组件式GIS以标准的ActiveX组件的方式,嵌入流行的可视化高级开发语言环境中进行开发。充分发挥VisualBasic, Delphi, Visual C++, C++ Builder, PowerBuilder, C,C#等高级开发工具在面向对象编程、可视化程序设计环境中体现的新一代程序设计语言的优势,结合各种第三方ActiveX组件,对GIS功能进行无限扩展。。
SuperMapObjects组件开发平台以一系列ActiveX组件形式提供GIS基本功能,包括核心组件库(工作空间控件和地图控件)、布局组件、三维组件、拓扑组件、图例组件库(图例控件、图例列表控件和图例组合列表框控件)、属性表格组件、工作空间管理组件、加密锁信息组件等多个可分拆的组件.SuperMap Objects组件之间既互相联系,也保持相对独立性.其中核心组件库(工作空间控件和地图控件)是基础的、必选的组件,其他组件全都是可选的。
3 系统设计
该系统设计的目的是让人们通过这个系统对十堰市的环境和旅游景点有更好的了解,为一些旅游人士提供公交搭乘的指导,并可以查询一些单位的资料。
3.1 系统总体设计
根据系统建设目标和原则,系统开发将采用如下步骤:
第一步:完成城市基础地理信息等的输入、分层管理,建立各类对象的属性数据库;
第二步:数字化十堰市城区全图;
第三步:实现电子地图的基本功能;
第四步:网上查找十堰市城区主要地物和自然的图片或影像资料,并建立其与相应对象的关连;
第五步:电子地图的测试与完善。
3.2系统功能设计
系统的总体功能结构如下图:
图1 电子地图功能的总体结构图
3.2.1地图的基本操作
通过放大、缩小、漫游、自由缩放、全幅显示等操作实现对地图显示的控制。
3.2.2公交换乘查询(图2)
通过该功能把起点和终点选中后,就可以查询出你可以乘坐的公交车次。
3.2.3图上量算
图上量算是GIS最常用的功能之一。在图中新建线或多边形,在多边形中有area面积属性,在线中有length属性,可以读取两者属性得到面积和距离。。
3.2.4属性查询(图3)
用户可以利用鼠标选取或直接输入单位名称,就可以查询到相关资料。
图2 电子地图公交换乘图3 电子地图属性查询
4 结语
本系统从设计,编码到实现的过程中,是以软件工程和地理信息系统工程原理为指导,利用现有的地理信息系统平台提供的开发平台,进行平台应用和二次GIS 开发的实践性教学。全面分析了电子地图的理论基础,包括电子地图的概念和特点,以及电子地图的研究现状,同时结合地理信息系统的发展特点,总结了电子地图研发方式;分析了地理信息系统的发展现状并详细叙述了地理信息系统开发的三种形式。电子地图的地理信息和多媒体信息数据量大,有效的数据组织与数据管理是系统高效运行的关键。本文研究了电子地图数据的组织和管理方法。。多媒体电子地图仍然处于发展中,尚有很多问题值得我们去探索和开发。
参考文献
[1] 张家坤, 林亚平. 基于SuperMap IS的电子地图信息服务系统的设计与实现[J]. 长沙通信职业技术学院学报 ,2006,5(3):47-51
[2] 李曙光,荆便顺,尹如军等. 交通电子地图设计和制作[J]. 西安公路交通大学学报,2001.20(1):78-80.
关键词:JTBC;网站开发;管理系统
中图分类号:TP311.52 文献标识码:A文章编号:1007-9599 (2011)05-0000-02
JTBC-based Development of Mongolian Web Content Management System
Ta Na
(Inner Mongolia Autonomous Region Hulunbeir College,Institute of Computer Science and Technology,Hulunbeier,021008,China)
Abstract:In this paper,based on the "language/code/procedures"
between two separate JTBC system Mongolian secondary development web content management system thought to Mongolian web content management system development critical problems such as the display of Mongolian fonts,special layout requirements,WYSIWYG editing,the background was compared,and the overall solution of system development were discussed.
Keywords:JTBC;Website development;Management system
一、引言
蒙古民族具有悠久的历史和灿烂的文化,目前蒙古学的研究,已经不只局限于语言文字、文学、历史等传统学科的范围,而向纵与横的方面全面展开,产生了许多相关学科,如蒙古族哲学及社会思想史、蒙古族经济及经济史、蒙古族风俗、蒙古族艺术以及蒙古族医学等等,蒙古学研究逐渐形成了一个较完整的体系。随着互联网的发展与普及,蒙古文化迫切需要通过网络平台进行传播与交流。
网站作为信息交流的主要平台,其建设、管理与维护主要依靠网站内容管理系统来实现。近年来,中英文网站内容管理系统的发展已比较完善,然而因为蒙古文在语言、文字方面的特殊性,蒙古文网站内容管理系统的发展比较缓慢,蒙古文在浏览器中的显示、排版等关键的技术问题仍没有完美的解决方案。本文提出了基于JTBC系统进行二次开发蒙古文网站内容管理系统的思路,并对如何实现蒙古文字体的显示,蒙古文特殊的排版要求及所见即所得的后台编辑等关键问题进行研究,提出了又一种整体解决方案。
二、系统开发的关键问题
(一)蒙古文字体的显示问题。蒙古文字体的显示是蒙古文网站建设的关键问题之一,从蒙古文网站的发展历程上,蒙古文的显示大致采用了如下几种方法:
1.图片法:直接在需要显示文字的位置用处理好的图片来代替显示。这种方式显示效果稳定,但不能动态显示内容,适合于标题等相对固定的显示方案,不适合用于正文。
2.Flash法:利用Flash内建的嵌入字体机制来辅助实现。这种方法能够适应内容的动态变化,具有较好的显示效果,但实现较为复杂,一般用于利用Flash、Flex开发的站点。
3.ActiveX控件法:页面嵌入ActiveX控件实现蒙古文显示、编辑、字体集成等功能。这种方法不仅可以解决蒙古文字体的显示还可以解决蒙古文的排版问题,但实现较为复杂,并且需要用户下载安装控件,一般用在蒙古文的后台编辑方面。
4.字体嵌入法:使用网页嵌入字体(Web Embed Font)技术。目前主流浏览器都已支持CSS的 @font-face属性在页面中嵌入OpenType字体。这种方法不需要用户介入字体问题,最为人性化,实现起来也相对简单。
(二)蒙古文的排版问题。蒙古文的书写格式为自上而下、从左到右,目前主流浏览器都不支持这种文字布局格式。如何遵从蒙古文的书写格式在网页中正确显示是蒙古文网站需要解决的重点问题之一。当前网页的排版大多使用CSS(Cascading Style Sheet,可译为“层叠样式表”)来进行控制,而主流浏览器所支持的CSS2版本对竖排文字的布局规则只有tb-rl(toptobutton-righttoleft,从上到下-从右到左),可喜的是W3C在CSS3中添加了tb-lr(toptobutton-lefttoright,从上到下-从左到右)的书写方向,并明确说明tb-lr的书写方向是针对蒙古文的书写方向,但浏览器对于CSS3的全面支持可能还需要一段时间。
(三)后台所见即所得的编辑问题。作为内容管理系统,后台内容的编辑是最重要的一个管理模块。中英文网站的后台编辑模块发展已比较成熟,开源的Web编辑器也很多。在蒙古文网站内容管理系统的后台编辑模块中,需要对蒙古文信息进行录入、编辑、排版、。目前所有的Web编辑器都不支持蒙古文自上而下、从左至右的特殊排版格式,要想实现所见即所得的编辑,同时具备文本的复制、粘贴、插入等编辑功能,目前一般的方法是采用ActiveX控件的方式来实现。
利用ActiveX控件需要用户进行一次控件的注册,但对于网站的管理员这项操作比较明确,为实现蒙古文的多项编辑功能,这种方案较为合理。
三、基于JTBC开发蒙古文网站内容管理系统的整体解决方案
JTBC网站内容管理系统是一套可对现有模块进行扩充与克隆的网站系统核心,采取语言/代码/程序 两两分离的技术模式,全面使用了模板包与语言包结构,特别适合多语种网站的开发。JTBC系统具有完备的后台管理功能,前台页面的组织主要通过调用模板来实现,语种的变换由语言包来实现。基于JTBC系统开发蒙古文网站内容管理系统主要的工作有:蒙古文语言包的配置、蒙古文调用模板的制作、后台管理系统蒙古文化的实现以及蒙古文后台编辑系统的实现。
(一)蒙古文语言包的配置。JTBC系统中所有文字的使用都是通过调用语言包中的标签来实现的,因此实现蒙古文的调用只要在语言包中配置相应的蒙古文标签即可,涉及的配置文件主要有三个方面:
mon/language/sel_lng.jtbc文件语系配置文件,添加语系首先要在此文件中进行配置。此文件为XML格式,需要在及标记中配置蒙古文选择标签。
2.Admin/common/language/guide.jtbc文件:此文件为后台管理系统的语言文件,其中有语系选择项,需要在及中添加蒙古文语系选项。
3.各模块的语言文件:后台所有模块的语言文件,都是XML格式,存储在后台系统及各模块的common/language/目录下,后缀名为.jtbc。
关于配置文件的具体配置方法可参看JTBC系统帮助。
(二)蒙古文调用模板的制作。JTBC系统的页面组织主要是通过调用模板来实现,网站内容根据调用模板的规则进行显示。制作蒙古文调用模板的关键问题是蒙古文的显示和如何按照蒙古文的书写格式进行排版。建议标题、logo等静态内容可以采用图片法,动态文本内容采用字体嵌入法。蒙古文的排版问题鉴于目前主流浏览器尚不支持CSS3的writing-mode:tb-lr属性,因此采用CSS+JavaScript相结合的方式进行处理。其中CSS样式使用writing-mode:tb-rl属性使蒙古文从右到左显示,然后利用JavaScript程序将文本左右互换,实现蒙古文自上而下、从左到右的显示。JavaScript程序算法思想为:逐一读取文本内容,遇换行符截取进行左右互换。
(三)后台管理系统蒙古文化。JTBC系统的后台管理系统采用模块化设计,进入相应的管理系统则调用该系统模块的模板包及语言包呈现管理界面。后台管理系统蒙古文化只要修改各模块的模板包及语言包即可。模板文件存储于后台系统及各模块的common/template/目录下,后缀名为.jtbc。JTBC系统的模板多以表格方式制作,为了便于布局,建议采用了Div+CSS方式进行了改写。利用writing-mode:tb-rl属性进行竖排。此项工作涉及多个模板文件,工作量较大,但只要掌握了语言标签与链接方式,就可以按照自己的意愿进行个性化的修改了。语言包的配置之前已经介绍,这里不再重复。
(四)蒙古文后台编辑系统的实现。在JTBC系统中,Web编辑器采用的是TinyMce,TinyMce是一个轻量级的基于浏览器的编辑器,由JavaScript写成。TinyMce不支持蒙古文自上而下、从左到右的书写格式,因此,想要实现蒙古文所见即所得的后台编辑本文采用结合ActiveX控件的方式。TinyMce支持插件开发,本文提出由ActiveX控件实现蒙古文所见即所得的编辑,而后以调用插件的方式将TinyMce与ActiveX控件进行结合。基于ActiveX控件的蒙古文编辑目前研究已比较成熟,这里不过多讨论。
Web编辑器与蒙古文控件的交互主要指蒙古文文本信息的相互传递。控件中的蒙古文文本需要传递到Web编辑器中显示、保存,Web编辑器中的蒙古文文本需要传递到控件中进行编辑。TinyMce通过插件调用ActiveX蒙古文编辑控件,控件运行在客户端,其属性值不能直接提交给服务器,我们利用表单进行数据传递。ActiveX控件属性通过表单的ONSUBMIT事件,赋值给表单的某一域后再提交给服务器。在TinyMce插件的显示页面中我们创建表单,定义一隐含域。在表单的ONSUBMIT事件中利用脚本将控件的文本属性值传递给服务器了。在服务器端我们利用JavaScript脚本进行蒙古文的竖显。对于控件获取Web编辑器的蒙古文信息,直接利用变量赋值就可以了。
四、结束语
本文针对基于JTBC系统开发蒙古文网站内容管理系统的各个问题进行论述,提出利用字体嵌入技术解决蒙古文的字体显示;利用CSS结合JavaScript技术实现蒙古文的布局;利用ActiveX控件结合TinyMceWeb编辑器实现蒙古文所见即所得的后台编辑以及通过语言包、模板包实现JTBC后台管理系统的蒙古文化的整体解决方案。为蒙古文网站内容管理系统的开发提出了又一种思路。随着信息技术的发展,相信对蒙古文的支持会越来越完善,蒙古族悠久的文明、灿烂的文化也会越来越多的为世人所知。
参考文献:
[1]蒙古族简史.北京:民族出版社[M],2009
关键词:MVC NHibernate 开发框架
中图分类号:TN 文献标识码:A 文章编号:1007-9416(2012)02-0088-02
1、引言
软件在开发过程中,如果没有一个好的设计模式和开发框架,则需要编写大量的基础代码,这无疑降低了开发效率;同时,从基础源代码着手开发的套装软件或定制软件往往都具有较高的耦合度,维护困难。因此,开发人员逐渐把软件开发的重点从数据结构和算法转向设计模式和开发框架上。
MVC(Model-View-Controller)是目前软件开发中广泛采用的一种设计模式。它把一个Web应用分离为模型、视图和控制器三个部分,使得系统结构清晰,利于维护和扩展。NHibernate是Microsoft .NET的ORM持久化框架,从Java的Hibernate项目移植而来。NHibernate框架从数据库底层来持久化.Net对象到关系型数据库,使软件代码仅仅和对象关联,从而摆脱了SQL、和事务、缓存等底层开发。本文在分析目前主流开发框架的基础上,将MVC设计模式与NHibernate框架有效整合,来降低系统总体架构的藕合度和业务模型的开发难度。
2、主流的开发框架
2.1 SSH开发框架
SSH开发框架是指在J2EE平台下融合了Struts、Spring和Hibernate的开发框架,其体系结构如图1所示。
其中,Struts是典型的基于MVC设计模式的框架,主要用于表示层的构建,具体实现是通过控制器将表现逻辑和业务逻辑解藕,以提高系统的可维护性、可扩展性和可重用性;Spring是一个模块化的框架,主要负责业务逻辑层的构建,允许开发人员自由选择适合的模块进行开发;Hibernate是一个开放源代码的对象关系映射框架,主要负责持久层的构建,对JDBC进行了轻量级的对象封装,支持开发人员使用对象编程来操纵数据库。
2.2 WebForm三层开发框架
在.NET平台下,本身就是一个基于事件响应的Web开发框架,但是结构单一、层次不够分明。因此,在客户端与数据库之间加入一个“中间层”(即组件层),出现了三层开发框架,如图2所示。
其中,表示层是展现给用户的界面,即用户在使用一个系统时的所见所得;业务逻辑层实现对数据层的操作,完成对数据业务的逻辑处理;数据访问层直接操作数据库,实现数据的增加、删除和更新等。
2.3 MVC开发框架
MVC是微软开发的一个实现MVC设计模式的Web开发框架,由Castle的Monorail(一种MVC Web开发框架)演变而来,其结构如图3所示。
其中视图可以通过在ASPX页面中开发用户接口来实现;控制器的功能在逻辑功能代码中实现;模型通常与应用系统的业务部分和数据库对应。
以上三种主流开发框架中,J2EE平台的SSH开发框架在大型项目开发过程中比.NET平台的开发框架具有更大的优势:
(1)易于进行单元测试和测试驱动开发;
(2)避免了WebForm中大量视图状态所导致的页面反应缓慢;
(3)模块化结构,易于大型项目的团队化开发。
因此,本文借鉴SSH开发框架的优势,对.NET平台下的开发框架进行扩充,设计实现了一个.NET平台下的多层开发框架。
3、.NET平台下基于MVC和NHibernate的开发框架
3.1 总体框架
该开发框架利用NHibernate框架构建了持久层,并借鉴了WebForm开发框架分层结构设计,在持久层与控制器之间增加了中间层,对数据和功能组件进行了封装,提供了统一接口供控制器调用。其体系结构如图4所示。
3.2 分层描述
3.2.1 模块管理层
由于该框架是主要针对大型项目的开发,因此,各功能模块之间要求一定的解耦。本层主要实现各粗粒度模块间的相互调用以及对外提供接口。
3.2.2 表示层
表示层用于呈现客户端的用户视图,负责从用户接收命令,请求和数据传递给控制器,并最终将结果封装后呈现给用户。
该框架为视图提供了自定义的视图引擎、模板和CSS样式表。根据视图引擎和视图对象的不同,视图可以呈现不同的页面类型和内容。同时,框架还可以应用JQuery技术,用来实现页面的异步显示和美化。
3.2.3 控制器
Controller调用应用接口层接口对数据进行操作;同时,调用相应的组件功能,执行用户通过视图传递的相关指令,并将封装后的视图类传递给视图。
3.2.4 应用接口层
该层针对数据访问接口和业务逻辑接口,将其封装后供控制器进行调用,本身不包含任何业务逻辑。
3.2.5 业务逻辑层
系统的核心层,所有与数据访问无关的业务逻辑都内聚在该层,并向应用接口层提供业务逻辑接口。
3.2.6 数据访问层
该层通过持久层提供的NHibernate API函数或者SQL语句,直接操作持久化类,对数据进行增添、删除、修改、更新、查找等操作,并向应用接口层提供数据访问接口。
3.2.7 持久层
所谓持久化,即把数据保存到可永久保存的存储设备中。该开发框架在持久层中建立一个持久化类,它是数据库表的一个映射。持久化类和NHibernate API(指Session类)关联后,就具有了持久化能力。持久化类通过Session类进行装载、保存、创建或查询(可采用HQL或其他方式以面向对象方式对持久化类进行查询)。对持久化类做的任何修改都会在Session刷新(flush)时被持久化到对应数据库表中。
3.2.8 数据源
开发框架除了支持常用的关系型数据库,如SQL Server,Oracle,DB2等,还支持对其他系统模块接口和数据源的调用。
4、结语
综上所述,MVC设计模式使软件开发过程更加规范和精炼,能产生易复用、易扩展、易维护的程序代码。NHibernate框架使开发人员从枯燥的SQL语句中解放出来,将更多的精力投入到业务逻辑的实现上。本文将MVC设计模式和NHibernate框架进行整合,提出了一个.NET平台下的多层开发框架,并详细设计了框架中各层的功能。可以发现,该开发框架增加了模型(Model)部分的重用性,降低了层与层之间耦合度,提高了系统的可维护性、可扩充性和可移植性。
参考文献
[1]陈龙.基于.NET平台ORM技术-NHibernate的研究与应用[D].长春:长春理工大学,2006.
[2]赵广利.基于NHibernate的数据持久化方案[J].计算机工程,2009,35(20).
[3]沈桂群.基于的MVC设计模式及实现[J].软件开发与设计,2009(10).
关键词:TMS320C5402;最小系统;McBSP;人机接口
中图分类号:TN929.1 文献标识码:A 文章编号:1009-2374(2009)01-0120-02
TMS320C5402是TI公司54系列DSP芯片的典型代表,也是目前国内DSP教材上介绍最多的芯片,本文所研制的实验系统就是建立在TMS320C5402的基础上。本文的研究目的是为大专院校特别是高职院校提供一个功能完备、价格低廉、技术流行、能满足教学和开发双重需求的DSP课程教学实验系统。
一、总体设计
本文的研究工作,考察了国内外DSP技术在教学科研领域的应用,认真分析了TMS320C54x系列DSP课程实验教学的主要内容,结合信号信息处理的新特点,制定了基于TMS320C5402芯片的DSP实验开发系统功能方框图,如图1所示:
本实验开发系统以TI公司的DSP芯片TMS320C5402为核心,电路的选择充分考虑了进行DSP实验和开发的需要。整个系统按照功能可以划分为以DSP芯片为核心的最小系统电路和应用电路两大部分进行设计,最小系统电路主要包括电源电路、时钟电路、复位电路、片外存储器,自举加载器及JTAG仿真电路等;应用电路主要包括MCBSP串行通信(A/D和D/A)模块,I/O端口应用(液晶显示和键盘)模块等。通过硬件设计和软件设计,并把以上电路连接在一起使其成为一个完整的系统,使该系统能开设出DSP课程的常用实验和实训项目,并可以作为基本的开发系统。
二、最小系统电路
最小系统模块是使得DSP芯片TMS320C5402能够工作的最精简模块,它主要包括电源电路、复位电路、时钟电路和存储器接口电路。
(一)电源电路
本系统中除了DSP以外其他器件工作电压为5V或3.3V,所以我们采用5V电源供电。VC5402所要的工作电压分别是1.8V内核电压(CVDD)和3.3V I/O 电压(DVDD),并且DSP对这两种电源加电次序也有要求,理想情况下两个电源同时加电,但是一般场合很难做到,这时应先对CVDD加电,然后对DVDD上电。鉴于噪声的简单性,我们通过TI公司提供的DSP专用电源芯片TPS73HD318来构建电源电路,实现5V向3.3V和1.8V的电压转换,同时也避免了上电次序的问题。
(二)复位电路
C5402的复位分为软件复位和硬件复位,软件复位是通过执行指令实现芯片的复位,硬件复位是通过硬件电路实现芯片的复位,硬件复位有上电复位、手动复位和自动复位三种。本系统中,由于我们选择了DSP专用的电源管理芯片TPS73HD318,该芯片本身可以提供宽度为200ms的低电平上电复位脉冲,为了使系统电路简单,所以不再设计自动复位电路,手动复位电路与与其他微机复位方法一样,只是参数选择要保证提供200ms左右的负脉冲。
(三)时钟电路
为了实现DSP系统实时处理信号的效果,希望系统频率越快越好。C5402最高可达1OOMHz工作频率,如果仍采用传统的2分频或4分频的方式,势必要求外部频率很高,这里我们采用了更加灵活的可编程PLL(Programmable Phase-Locked Loop)方式。
本系统中,外接晶体频率为1OMHz,为了得到倍频系数10,需设置时钟模式寄存器CLKMD的值为9007h,引脚CLKMD1~CLKKMD3设计成001,则复位后VC5402的工作频率是10×10=1OOMHz。
(四)片外存储器
C5402的存储空间可达192K×16bits,64K程序空间,64K数据空间,64KI/O空间。C5402片内具有4K×16bits的ROM和16K×16bits的RAM。片内POM和RAM可以根据PMST寄存器中的DROM、OVLY来灵活设置,使其映像在程序空间和数据空间。程序空间和数据空间未被映像的部分和64K的I/O空间全部在片外,用片外存储器来补充。在实际的应用中,应该根据程序量的大小来选择作为片外空间的存储芯片的容量,以免造成不必要的浪费,本文选择IS61LV25616AL(256K×16bits)作为程序存储器的片外存储芯片,选择SST39LF200A(128K×16bits)的Flash作为数据存储器的片外存储芯片,以实现自举加载,使C5402自成独立系统,图2为硬件连接图。
(五)JTAG仿真接口
在做实验时,需要一个DSP仿真器,把在计算机上编译并生成的执行代码下载到C5402芯片上,实现在线调试DSP硬件和软件。仿真器有两端接口,其中一端与计算机的并行口或USB口相连,这取决于仿真器的类型,另一端与DSP芯片的JTAG接口相连,这是一个14针的接口,需注意EMUO和EMU1脚应接上拉电阻,推荐阻值为4.7k或10k。
三、应用电路
(一)中断模块
DSP的中断包括不可屏蔽中断 和 ,外部中断 ~
和软中断。中断响应实际是特殊的程序调用过程。当满足中断响应条件时,相应的中断服务程序被调用。中断的使用包括中断设置和中断服务程序设计。本系统只使用了 一个中断管脚,其他外部中断管脚都接高电平。在做中断实验时,可以通过按钮开关使脚接高电平或低电平,以给出中断申请信号。
(二)McBSP模块
在DSP应用系统设计中必不可少的是各种数据传输接口的设计。与并行接口相比,串行接口的最大特点是减少了器件引脚数目,降低了接口设计复杂性。多数DSP芯片提供的是同步串口,TMS320C5402提供的多通道缓冲串口(McBSP)可以很方便地与编解码芯片(CODEC)或串行ADC直接连接,使得电路的设计更加简捷。
TMS320C5402与TLC320AD50C硬件接口电路如图3所示[1]。将TLC320AD50C的数字电源端DVDD接到3.3V电源,AVDD接到5V电源;管脚M/S经过10K电阻上拉,将TLC320AD50C设置成主动工作模式;选择INP和INM作为ADC的输入,将AUXP和AUXM接至模拟地;DAC的正相输出经过一阶低通滤波后送给模拟设备,反相输出不用;管脚FC接地,系统只能采用软件方式申请触发次通信模式;数据格式为15+1比特模式。输入主时钟MCLK为8.192MHz,采样频率选择为8KHz,内部PLL使能(控制寄存器4中的N=8)。通过寄存器设置,将TMS320C5402的FSX、FSR、CLKR、CLKX配置为外部输人,TLC320AD50C的SCLK配置为内部产生[2]。这样数据接收/发送帧同步信号、移位时钟信号均由TLC320AD50C产生。串行口的接收/发送过程受TLC320AD50C的控制。
(三)人机接口模块
由于DSP并不具备人机界面,在实际使用过程中,需要为它提供一个人机界面,以便于观察运行结果或传递必要的控制信息。目前,DSP芯片的人机接口模块大多数都用单片机来完成,这样既增加开发成本又使系统更加复杂。本系统的人机接口的成功实现为DSP芯片直接开发人机借口模块提供了可能。
本系统选用字符液晶显示模块LCM1602和同相三态双向总线收发器74LS245,通过TMS320C5402的I/O口功能扩展直接构建DSP的晶显示模块;相应的I/O操作口地址有两种:读状态、写指令为0000H,读数据、写数据为0001H。通过74HC573锁存器扩展的键盘由行锁存器、列锁存器和3×5矩阵式键盘组成[2];该键盘占用两个I/O端口,分别为:行锁存器为输出口,作为写键盘端口;列锁存器为输入口,作为读键盘端口,两端口的地址分别为:读键盘端口地址RKEYP=7FFFH,写键盘端口地址WKEYP=BFFFH。
(四)实验项目
本实验系统可以开设出基础实验和综合实验,还可以通过功能扩展进行简单产品开发实训。通过基础性实验,可以让学生进行编程练习,熟悉集成开发环境CCS,掌握调试程序的一般方法,加深学生对TMS320C5402芯片的认识;通过综合性实验,可以加强学生对TMS320C5402芯片的全面了解,让学生掌握外设和接口的使用方法,提高学生的综合应用能力,为开发产品打下良好基础;通过产品开发实例的训练,可以让学生了解开发产品的基本过程和基本方法,培养学生分析问题解决问题的能力,为今后从事产品开发打下良好基础。
本系统的实验项目主要包括:外部标志输出引脚(XF)实验、转移控制输入引脚实验、Boot及flash读写实验、定时器实验、中断实验、FIR实验、IIR实验、语音通信实验、数据采集实验、正弦波产生实验、LCD 显示实验、键盘驱动实验等实验项目。这些实验项目完全能够满足DSP这门课程的实验教学,同时,还可以利用本系统进行相关的产品开发。
四、结语
本文所介绍的DSP实验开发系统,接口电路简单,编程方便,且该实验开发系统已经通过硬件和软件调试,系统工作稳定,所以,本系统有一定的推广应用价值。
参考文献
[1]李利.DSP原理及应用[M].北京:中国水利水电出版社,2004.