前言:一篇好文章的誕生,需要你不斷地搜集資料、整理思路,本站小編為你收集了豐富的c語(yǔ)言開(kāi)發(fā)主題范文,僅供參考,歡迎閱讀并收藏。
關(guān)鍵詞:DSP;嵌入式系統(tǒng);C語(yǔ)言開(kāi)發(fā)
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-2374 (2010)12-0037-02
隨著信息處理技術(shù)的飛速發(fā)展,DSP在電子信息、通信、軟件無(wú)線電、自動(dòng)控制、儀器儀表、信息家電等高科技領(lǐng)域獲得了越來(lái)越廣泛的應(yīng)用。
以往開(kāi)發(fā)DSP嵌入式產(chǎn)品時(shí)首先會(huì)想到用控制器的匯編語(yǔ)言編寫(xiě)軟件,主要原因有:(1)控制器問(wèn)世時(shí),只配有相應(yīng)的匯編語(yǔ)言開(kāi)發(fā)工具,沒(méi)有相應(yīng)的高級(jí)語(yǔ)言開(kāi)發(fā)工具可供使用;(2)匯編語(yǔ)言生成的程序?qū)?yīng)的二進(jìn)制代碼少,執(zhí)行速度較快;(3)存儲(chǔ)器尋址空間和價(jià)格的限制。隨著技術(shù)的發(fā)展,上述問(wèn)題已基本解決。而且用C語(yǔ)言開(kāi)發(fā)DSP嵌入式系統(tǒng),具有開(kāi)發(fā)周期段、可移植性好、調(diào)試和維護(hù)方便等優(yōu)點(diǎn)。目前在許多應(yīng)用領(lǐng)域,大家已經(jīng)逐漸開(kāi)始用C語(yǔ)言開(kāi)發(fā)嵌入式產(chǎn)品。
現(xiàn)在,世界上的DSP芯片有300多種,生產(chǎn)DSP的公司有80多家,主要廠家有TI公司、AD公司、Lucent公司和Motorola公司。TI公司作為DSP生產(chǎn)廠商的代表,品種最多,大約占60%的市場(chǎng)份額。TI公司還推出了與其生產(chǎn)的DSP配套的軟件集成開(kāi)發(fā)環(huán)境Code Composer,用戶可在該環(huán)境下用匯編語(yǔ)言和C語(yǔ)言進(jìn)行軟件開(kāi)發(fā)。TMS320VC33作為TI公司第二代芯片的高速低功耗改進(jìn)型浮點(diǎn)型TMS320VC33,在工業(yè)控制領(lǐng)域得到了廣泛應(yīng)用。目前,很少見(jiàn)到DSP系統(tǒng)下的C語(yǔ)言開(kāi)發(fā)資料,本文以TMS320VC33為例,在TI公司提供的軟件集成開(kāi)發(fā)環(huán)境Code Composer下(版本4.10.36),向大家介紹如何用C語(yǔ)言開(kāi)發(fā)DSP嵌入式系統(tǒng)。
一、TMS320VC33芯片的C語(yǔ)言開(kāi)發(fā)過(guò)程
整個(gè)過(guò)程主要分為以下4個(gè)步驟:編輯C語(yǔ)言源程序;編譯和鏈接;在線仿真;固化程序。
在Code Composer下,新建一個(gè)工程CSRJ.MAK;新建一個(gè)C源代碼文件CSRJ.C(其內(nèi)容為C語(yǔ)言源程序)和一個(gè)頭文件VC33.H(程序設(shè)計(jì)中用到的TMS320VC33寄存器的定義),將這兩個(gè)文件添加進(jìn)CSRJ.MAK工程。
(二)編譯和鏈接
1.TI公司的COFF文件格式。Code Composer的匯編器和編譯器建立的目標(biāo)文件格式為公共目標(biāo)文件格式COFF(Common Object File Format)。這種格式易于進(jìn)行模塊化編程,增強(qiáng)程序的可讀性和可移植性,為代碼段和存儲(chǔ)器的管理提供了更有力和靈活的方法,也為高級(jí)語(yǔ)言和匯編語(yǔ)言程序的編寫(xiě)提供了極大的便利。
在COFF目標(biāo)文件格式中,最關(guān)鍵的概念便是段(SECTION)。段是COFF目標(biāo)文件格式中的最小單位,在存儲(chǔ)器中占據(jù)連續(xù)空間的代碼或數(shù)據(jù)塊。一個(gè)目標(biāo)文件中的每一個(gè)段都是分開(kāi)的和各不相同的。所有的段分為兩大類:已初始化段和未初始化段。已初始化段包含程序代碼或數(shù)據(jù),未初始化段為未初始化的數(shù)據(jù)保留存儲(chǔ)空間。C編譯器對(duì)C程序編譯后產(chǎn)生已初始化段(如:.text段、.cinit段)和未初始化段 (如:.bss段)。
2.鏈接器對(duì)段的處理。鏈接器對(duì)段的處理任務(wù)有兩個(gè):一是將COFF目標(biāo)文件中的塊用來(lái)建立程序塊和數(shù)據(jù)塊,并將這些塊組合成可以被DSP芯片執(zhí)行的COFF輸出模塊;二是為各輸出塊指定存儲(chǔ)地址。
鏈接器有兩條命令支持上述任務(wù):MEMORY和SECTIONS。MEMORY命令定義目標(biāo)系統(tǒng)的存儲(chǔ)器各部分命名并指定起始地址和長(zhǎng)度;SECTIONS命令用于指定如何組織輸入段以及在存儲(chǔ)器何處存放輸出段。若不用這兩個(gè)命令,則鏈接器采用缺省分配算法。推薦使用這兩個(gè)命令,一般在鏈接器命令文件 (擴(kuò)展名為.CMD)中確定。
下面分析一個(gè)TMS320VC33芯片的典型CMD文件(文件名為CSRJ.CMD)。
csrj.obj/* 源程序編譯后對(duì)應(yīng)的目標(biāo)文件 */
-l Rts30.lib/* 鏈接Rts30.lib庫(kù)*/
-stack 0x800/* 設(shè)定系統(tǒng)堆棧2K大小 */
MEMORY /* MEMORY命令規(guī)定系統(tǒng)的存儲(chǔ)器配置*/
{
STACKRAM: origin = 0x00807000, length = 0x00001000 /* 內(nèi)部RAM*/
RAM: origin = 0x00800000, length = 0x00007000 /* 內(nèi)部RAM*/
VECTORS: origin = 0x00809fc1, length = 0x63/* 中斷向量表區(qū)間*/
}
SECTIONS/* SECTIONS命令規(guī)定程序中段的具體分配分配方法*/
{
.text: { } > RAM/* 系統(tǒng)程序存放位置 */
.cinit: { } > RAM/* C初始化表存放位置 */
.bss: { } > RAM /* 未初始化數(shù)據(jù)存放位置 */
.stack: { } > STACKRAM /* 堆棧存放位置 */
vectors: { } > VECTORS /* 中斷向量表存放位置*/
}
程序若要使用中斷,可按如下方法在csrj.c中進(jìn)行定義。
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() /* 中斷處理函數(shù),其中X為01~10之一*/
{
中斷處理程序語(yǔ)句
}
3.編譯選項(xiàng)等設(shè)置。(1)添加前述命令文件CSRJ.CMD和庫(kù)文件RTS30.LIB到CSRJ工程中;(2)選擇“Project”下的“Option”選項(xiàng),在“Compiler”菜單下設(shè)置“Target Processor”為“C33”;在“Assembler”菜單下設(shè)置“Target Processor”為“C3X”(其它選項(xiàng)根據(jù)需要設(shè)置);(3)單擊界面“Rebuild All”按鈕,即可編譯鏈接,生成CSRJ.OUT文件。
(三)在線仿真
將仿真器與目標(biāo)板連接,打開(kāi)“Option”菜單下的“Program Load…”選項(xiàng)菜單,選擇所有選項(xiàng)后單擊界面“Rebuild All”按鈕,可編譯鏈接生成CSRJ.OUT文件并將該文件載入;點(diǎn)擊界面按鈕“Run”,即可仿真運(yùn)行。
(四)固化程序
TMS320VC33芯片一般外掛FLASH或EPROM來(lái)存儲(chǔ)固化程序,因此程序固化前要根據(jù)外掛的FLASH或EPROM的具體要求,將CSRJ.OUT文件轉(zhuǎn)換成相應(yīng)格式后寫(xiě)入FLASH或EPROM。
二、DSP系統(tǒng)下的C語(yǔ)言編程應(yīng)注意的問(wèn)題
(一)內(nèi)存依賴關(guān)系
為了最大化代碼性能,編譯器盡可能將指令并行處理。但是要做到這一點(diǎn),就要確定指令間的關(guān)系。如果一條指令需在另一條指令執(zhí)行后才能執(zhí)行,那么這兩條指令就存在依賴關(guān)系。當(dāng)編譯器不能識(shí)別指令間是否獨(dú)立時(shí),就要告訴編譯器他們之間的關(guān)系,可以通過(guò)關(guān)鍵字“restrict”聲明變量或優(yōu)化命令選項(xiàng)來(lái)通知編譯器。
Code Composer提供了四個(gè)優(yōu)化命令選項(xiàng):Level 0寄存器級(jí)別、Level 1局部級(jí)別、Level 2函數(shù)級(jí)別、Level 3文件級(jí)別。從表面看,直接使用Level 3最簡(jiǎn)捷,可以一步到位。然而在實(shí)際中,選擇時(shí)應(yīng)根據(jù)系統(tǒng)實(shí)際情況而定。一般較大的系統(tǒng)軟件不宜采用Level 3級(jí)優(yōu)化,因?yàn)檫@樣一般容易造成系統(tǒng)死循環(huán)。在實(shí)際工作中,一般根據(jù)系統(tǒng)實(shí)時(shí)性要求,對(duì)于關(guān)鍵處的函數(shù)選用Level 2級(jí),對(duì)于次要的可以選用Level 1級(jí)、Level 0級(jí)或不選,這樣不會(huì)造成系統(tǒng)程序不執(zhí)行或程序混亂的現(xiàn)象。
(二)變量的聲明
函數(shù)調(diào)用時(shí),盡可能使用全局變量,這樣可以減少對(duì)變量的堆棧處理,同時(shí)也節(jié)省了寄存器的使用。
另外,在 Code Composer環(huán)境下全局變量的聲明和初始化要占用約雙倍的存儲(chǔ)區(qū)域。因此,為了節(jié)省資源,對(duì)于數(shù)據(jù)量較大的查表常數(shù)數(shù)據(jù),要采用特殊方法定義,使其只占用自身大小的存儲(chǔ)資源。對(duì)表1所示數(shù)據(jù)的全局定義進(jìn)行舉例。
表1
1.22 3.55 4.67 9.53 8.11
6.97 9.45 7.54 8.16 1.08
若用常規(guī)方法如下定義:
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文件,發(fā)現(xiàn)該數(shù)據(jù)在.cinit段占用12個(gè)字,在.bss段占用了10個(gè)字。
若用如下特殊方法定義
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文件,發(fā)現(xiàn)該數(shù)據(jù)在只在.data_chabiao段占用了10個(gè)字。
(三)多調(diào)用TI提供的固有函數(shù)和功能函數(shù)
TI基于C語(yǔ)言開(kāi)發(fā)提供了很多實(shí)際有效的固有函數(shù)。如果采用一般C語(yǔ)言自己編的函數(shù),可能會(huì)需要更多語(yǔ)句,耗時(shí)可能增加。
(四)合理編寫(xiě)循環(huán)體
在數(shù)據(jù)處理過(guò)程中,循環(huán)體用得較多,處理量較大,壞的編程風(fēng)格會(huì)浪費(fèi)不必要的時(shí)間。一般應(yīng)注意:在循環(huán)體內(nèi)不要包含調(diào)用;循環(huán)體不要有過(guò)多指令;對(duì)于多重循環(huán),如果內(nèi)層循環(huán)體較短,可以考慮打破該循環(huán)體,與外部循環(huán)結(jié)合;將與循環(huán)變量無(wú)關(guān)的判斷語(yǔ)句移到循環(huán)體外。
(五)注意浮點(diǎn)格式轉(zhuǎn)換
為使硬件獲得更高的效率,TMS320VC33芯片采用了不同與IEEE標(biāo)準(zhǔn)的浮點(diǎn)格式。在開(kāi)發(fā)DSP系統(tǒng)通信軟件模塊時(shí),若采用浮點(diǎn)格式進(jìn)行數(shù)據(jù)傳輸,一定要注意外部系統(tǒng)使用的哪種格式,必要時(shí)要進(jìn)行相應(yīng)的格式轉(zhuǎn)換。
三、結(jié)語(yǔ)
本文以TMS320VC33芯片的開(kāi)發(fā)為例,介紹了用C語(yǔ)言開(kāi)發(fā)DSP嵌入式系統(tǒng)的過(guò)程和注意事項(xiàng),希望能對(duì)讀者有所幫助。
參考文獻(xiàn)
[1]杜普選,馬慶龍.實(shí)時(shí)DSP技術(shù)及浮點(diǎn)處理器的應(yīng)用[M].北京:清華大學(xué)出版社,2007.
[2]汪安名,程笠,徐寶根.DSP嵌入式系統(tǒng)開(kāi)發(fā)典型案例[M].北京:人民郵電出版社,2007.
[3]TMS320C3x/C4x Assembly Language Tools User’s Guide[S].Texas Instruments,1997.
摘要:近些年來(lái),隨著時(shí)代經(jīng)濟(jì)的飛速發(fā)展以及科技的進(jìn)步,當(dāng)下主流的編程語(yǔ)言中,C++語(yǔ)言作為一種特殊的編程語(yǔ)言,主要來(lái)源于C語(yǔ)言的演化,同時(shí)C++語(yǔ)言跨平臺(tái)軟件開(kāi)發(fā)的如何設(shè)計(jì)始終是當(dāng)前軟件開(kāi)發(fā)行業(yè)領(lǐng)域研究的熱點(diǎn)之一。本文在對(duì)基于C++語(yǔ)言的跨平臺(tái)軟件開(kāi)發(fā)設(shè)計(jì)研究時(shí),首先分析了C++語(yǔ)言,其次分析了跨平臺(tái)軟件開(kāi)發(fā)環(huán)境,最后探討總結(jié)了C++語(yǔ)言的跨平臺(tái)軟件開(kāi)發(fā)設(shè)計(jì)過(guò)程。
關(guān)鍵詞 :C++語(yǔ)言;跨平臺(tái);軟件開(kāi)發(fā);設(shè)計(jì)研究
現(xiàn)如今計(jì)算機(jī)語(yǔ)言中C++語(yǔ)言使用頻率和次數(shù)最多,同時(shí)編程速度較高,進(jìn)而廣泛的應(yīng)用于跨平臺(tái)軟件的開(kāi)發(fā)設(shè)計(jì)中??缙脚_(tái)作為軟件開(kāi)發(fā)中的重要概念之一,不僅僅依賴于實(shí)際的操作系統(tǒng),結(jié)合跨平臺(tái)開(kāi)發(fā)的實(shí)際需求,逐漸推動(dòng)了現(xiàn)代化軟件工程的蓬勃發(fā)展。因此本文對(duì)基于C++語(yǔ)言的跨平臺(tái)軟件開(kāi)發(fā)設(shè)計(jì)進(jìn)行研究有一定的經(jīng)濟(jì)價(jià)值和現(xiàn)實(shí)意義。
1、C++語(yǔ)言的相關(guān)概述
C++語(yǔ)言主要是由C語(yǔ)言演化而來(lái)的,C語(yǔ)言開(kāi)發(fā)演化過(guò)程中,逐漸注重系統(tǒng)軟件開(kāi)發(fā)的特性,并伴隨著C++語(yǔ)言的興起,其新特性逐漸增加。當(dāng)前C++語(yǔ)言和其它相對(duì)高級(jí)的語(yǔ)言相比較而言,有著特殊的運(yùn)行性能,在實(shí)際的運(yùn)行過(guò)程中,并不需要借助于虛擬機(jī)將其作為中介,進(jìn)而將C++語(yǔ)言的運(yùn)行效率顯著提高。
同時(shí)C++語(yǔ)言在實(shí)際的開(kāi)發(fā)過(guò)程中,往往有著相對(duì)較低的開(kāi)發(fā)成本,C++語(yǔ)言應(yīng)用的過(guò)程中,逐漸被引入各種各樣的特性,將其在泛型編程拓展過(guò)程中,對(duì)于高層次的軟件工程問(wèn)題有著一定的積極作用。
總之,C++語(yǔ)言有著相對(duì)根本性的優(yōu)勢(shì),不僅僅可以用于高級(jí)系統(tǒng)程序的設(shè)計(jì)和3D游戲的開(kāi)發(fā)應(yīng)用,同時(shí)也可用于數(shù)值科學(xué)計(jì)算以及通用程序設(shè)計(jì)等。
2、跨平臺(tái)軟件開(kāi)發(fā)環(huán)境
2.1 跨平臺(tái)的相關(guān)概念
跨平臺(tái)作為現(xiàn)代化軟件開(kāi)發(fā)中相對(duì)重要的一種概念,不僅僅對(duì)操作系統(tǒng)沒(méi)有一定的依賴性,同時(shí)對(duì)于硬件環(huán)境也沒(méi)有一定的依賴性,而在實(shí)際的開(kāi)發(fā)應(yīng)用程序過(guò)程中,更要將其在另一個(gè)操作系統(tǒng)下保持有著正常性的運(yùn)行,基于跨平臺(tái)的實(shí)際需求,就要結(jié)合現(xiàn)代軟件工程的發(fā)展,對(duì)各種不同的平臺(tái)加以支持,進(jìn)而將其帶給市場(chǎng)的潛力充分發(fā)揮。
2.2 跨平臺(tái)軟件開(kāi)發(fā)需要的環(huán)境
一般而言,開(kāi)發(fā)環(huán)境構(gòu)成的過(guò)程中,往往需要有著一定的軟件編輯器、程序調(diào)試器以及程序編譯器三種,但是就其實(shí)質(zhì)性而言,Sandbox這種軟件不僅僅可以實(shí)現(xiàn)代碼的編譯,同時(shí)也可實(shí)現(xiàn)代碼的調(diào)試,其內(nèi)部同樣各種各樣的平臺(tái)中往往需要有著各種各樣的代碼庫(kù)和依賴庫(kù)。開(kāi)發(fā)程序中,同樣也存在多種類型的源代碼,在C++語(yǔ)言的軟件開(kāi)發(fā)和編譯中,就要做好最終結(jié)果質(zhì)量的控制,并有最好的代碼產(chǎn)生,在對(duì)錯(cuò)誤捕捉和調(diào)試過(guò)程中往往需要一定的支持。
跨平臺(tái)軟件開(kāi)發(fā)主要是將抽象實(shí)現(xiàn)的一種重要因素,往往需要將抽象以及相關(guān)的一些設(shè)計(jì)逐漸的借助于新的開(kāi)發(fā)手段進(jìn)行開(kāi)發(fā)研究,實(shí)現(xiàn)在不同平臺(tái)上都能實(shí)現(xiàn)特殊的編譯。
3、C++語(yǔ)言的跨平臺(tái)軟件開(kāi)發(fā)設(shè)計(jì)
C++語(yǔ)言跨平臺(tái)軟件開(kāi)發(fā)設(shè)計(jì)過(guò)程中,更要做好各個(gè)環(huán)節(jié)的綜合設(shè)計(jì),就其實(shí)質(zhì)性而言,C++語(yǔ)言的跨平臺(tái)軟件開(kāi)發(fā)設(shè)計(jì)可以從以下幾個(gè)環(huán)節(jié)做起:
3.1 將語(yǔ)言的擴(kuò)展特性避免
一般而言,任何語(yǔ)言在編程的過(guò)程中,往往都是對(duì)相對(duì)較老的程序以及文件進(jìn)行選擇。這些相對(duì)較老的程序包含一些原有的程序和基本公式,相對(duì)來(lái)說(shuō)這些程序和公式不僅僅有著規(guī)范性,同時(shí)也有著標(biāo)準(zhǔn)型,而當(dāng)前現(xiàn)代化的新程序庫(kù)相對(duì)來(lái)說(shuō)是雜亂無(wú)章的,在跨平臺(tái)上產(chǎn)生過(guò)程中,常常面臨各種各樣的故障,雖然會(huì)獲得一定的支持,同時(shí)也會(huì)有不精確定義的事故存在。
C++語(yǔ)言的跨平臺(tái)軟件開(kāi)發(fā)設(shè)計(jì)過(guò)程中,就要避免語(yǔ)言存在一定的擴(kuò)展特性,這種跨平臺(tái)開(kāi)發(fā)過(guò)程中往往有著相對(duì)較高的異常靈敏度,無(wú)限度的對(duì)新特性利用中,就要借助于C++語(yǔ)言標(biāo)準(zhǔn)函數(shù)的基本模型,并保證開(kāi)發(fā)軟件和產(chǎn)品有著相對(duì)較強(qiáng)的穩(wěn)定性。
3.2 將動(dòng)態(tài)處理實(shí)現(xiàn)
C++語(yǔ)言跨平臺(tái)軟件開(kāi)發(fā)中,就要對(duì)多種環(huán)境運(yùn)行的可移植代碼庫(kù)加以編寫(xiě),在實(shí)際的項(xiàng)目開(kāi)發(fā)過(guò)程中,就要對(duì)可能存在的問(wèn)題加以避免,并處理好一個(gè)平臺(tái)在另一個(gè)平臺(tái)上沒(méi)有特性這一問(wèn)題,進(jìn)而實(shí)現(xiàn)動(dòng)態(tài)性的處理。
3.3 借助于腳本文件實(shí)現(xiàn)管理
就C++語(yǔ)言的跨平臺(tái)軟件開(kāi)發(fā)設(shè)計(jì)而言,就要做好腳本文件的基本管理工作,保證編寫(xiě)的程序代碼不僅僅有著簡(jiǎn)單易懂的特點(diǎn),同時(shí)也要有著一定的簡(jiǎn)潔性,對(duì)合理的軟件結(jié)構(gòu)進(jìn)行構(gòu)建,將和平臺(tái)相關(guān)的一些文件以及數(shù)據(jù)庫(kù)充分的分隔,在實(shí)際的開(kāi)發(fā)過(guò)程中借助于腳本文件進(jìn)行某種程度上的編譯,將其在各個(gè)部位合理的分配。對(duì)應(yīng)用程序使用的過(guò)程中,就要將配置文件中的相關(guān)配置選項(xiàng)調(diào)出來(lái),進(jìn)而將里面的程序讀取,并在跨平臺(tái)軟件開(kāi)發(fā)過(guò)程中,盡可能的保證平臺(tái)相關(guān)聯(lián)的文件進(jìn)行全部的分離,借助于特殊的手段將該功能充分實(shí)現(xiàn)。
3.4 對(duì)安全的數(shù)據(jù)串行化使用
現(xiàn)如今,C++語(yǔ)言的跨平臺(tái)軟件開(kāi)發(fā)設(shè)計(jì)過(guò)程中,對(duì)于如何保證跨平臺(tái)數(shù)據(jù)存儲(chǔ)的安全性和可靠性這一問(wèn)題,始終是當(dāng)前軟件開(kāi)發(fā)設(shè)計(jì)的核心問(wèn)題之一,而C++語(yǔ)言的跨平臺(tái)軟件開(kāi)發(fā)設(shè)計(jì)過(guò)程中,可以借助于軟件的fread指令,做好對(duì)每個(gè)編譯器和單一目標(biāo)平臺(tái)的綜合性處理,并在實(shí)際的跨平臺(tái)操作環(huán)境中,借助于實(shí)際方法對(duì)數(shù)據(jù)進(jìn)行不同程度上的存儲(chǔ)和加載,進(jìn)而對(duì)平臺(tái)的獨(dú)立性加以保障,借助于跨平臺(tái)將數(shù)據(jù)在目標(biāo)文件進(jìn)行存儲(chǔ)過(guò)程中,一般而言,不同的平臺(tái)間往往有著一定的差異,在實(shí)際的處理過(guò)程中,同樣也將會(huì)有著多樣性的結(jié)果特征。
3.5 C++語(yǔ)言跨平臺(tái)開(kāi)發(fā)中的編譯和測(cè)試
C++語(yǔ)言跨平臺(tái)開(kāi)發(fā)變異和測(cè)試過(guò)程中,更要做好科學(xué)化的編譯和測(cè)試,在實(shí)際的跨平臺(tái)軟件開(kāi)發(fā)過(guò)程中,盡可能的保證相關(guān)聯(lián)的一些代碼在長(zhǎng)時(shí)間的使用過(guò)程中,保證其代碼可以在另外的平臺(tái)上加以檢測(cè),并借助于不同的平臺(tái)進(jìn)行測(cè)試,進(jìn)而將bug及時(shí)的發(fā)現(xiàn)。
3.6 實(shí)現(xiàn)抽象
一般而言,實(shí)現(xiàn)抽象主要是對(duì)跨平臺(tái)應(yīng)用程序中被移植過(guò)程中有著一定的有效性,通過(guò)對(duì)這種方式加以借用,進(jìn)而實(shí)現(xiàn)軟件的單獨(dú)性開(kāi)發(fā),并將具有獨(dú)立性和簡(jiǎn)潔性的程序拿出,在實(shí)際的跨平臺(tái)開(kāi)發(fā)設(shè)計(jì)過(guò)程中,往往需要對(duì)多種函數(shù)進(jìn)行利用,進(jìn)而在實(shí)際的開(kāi)發(fā)過(guò)程中,并不用對(duì)所有的函數(shù)進(jìn)行變異,而C++語(yǔ)言跨平臺(tái)軟件設(shè)計(jì)過(guò)程中,主要是對(duì)封裝方法加以采用,進(jìn)而將抽象的過(guò)程實(shí)現(xiàn),這種封裝方法相對(duì)來(lái)說(shuō),需要視情況而定,一旦存在相對(duì)特殊的情況時(shí),就要借助于其它的方式做好程序的基本調(diào)用工作,并做好對(duì)該功能的基礎(chǔ)命名工作。實(shí)現(xiàn)抽象的過(guò)程中,一旦對(duì)該程序及其公式使用之后,就要將該功能的主要程序直接調(diào)用,并將該功能充分實(shí)現(xiàn)。
3.7 C++語(yǔ)言跨平臺(tái)軟件開(kāi)發(fā)的實(shí)現(xiàn)過(guò)程
C++語(yǔ)言跨平臺(tái)軟件設(shè)計(jì)開(kāi)發(fā)的實(shí)現(xiàn)過(guò)程中,首先就要做好功能模塊實(shí)現(xiàn)過(guò)程和非功能模塊實(shí)現(xiàn)過(guò)程,在代碼編寫(xiě)之前,就要對(duì)源代碼在文本編寫(xiě)過(guò)程中的相關(guān)編輯策略加以規(guī)定,對(duì)\t格式加以統(tǒng)一,并使得代碼的結(jié)構(gòu)盡可能有著簡(jiǎn)單化的基本特點(diǎn)。
C++語(yǔ)言跨平臺(tái)軟件開(kāi)發(fā)實(shí)現(xiàn)過(guò)程,同樣也要對(duì)統(tǒng)一的工程寶建立,并對(duì)跨平臺(tái)的代碼庫(kù)加以建立,借助于平臺(tái)依賴庫(kù)對(duì)平臺(tái)相關(guān)代碼進(jìn)行封裝,做好對(duì)處理器差異、編譯器差異的合理控制,保證有著對(duì)齊的內(nèi)存和有著順序的字節(jié),并將平臺(tái)無(wú)關(guān)的代碼實(shí)現(xiàn),做好內(nèi)存的管理。
操作系統(tǒng)和接口庫(kù)實(shí)現(xiàn)的過(guò)程中,往往不同的操作系統(tǒng)將會(huì)存在各種各樣的系統(tǒng)限制,在實(shí)際的開(kāi)發(fā)設(shè)計(jì)過(guò)程中,更要對(duì)限制的參數(shù)進(jìn)行適當(dāng)?shù)恼{(diào)整,并做好對(duì)文件描述符的基本限制,尤其是在Unix系統(tǒng)中,就要借助于文件的描述符這種系統(tǒng)性的資源,提高程序的通用性和靈活性。網(wǎng)絡(luò)程序開(kāi)發(fā)過(guò)程中,任何一個(gè)網(wǎng)絡(luò)連接將會(huì)對(duì)一個(gè)文件描述符占用,一旦程序?qū)⒑芏嗟腟ocket連接打開(kāi),其程序在實(shí)際的運(yùn)行過(guò)程中借助于fopen將難以打開(kāi)文件。對(duì)這一問(wèn)題如何加以解決呢?可以將其系統(tǒng)逐漸的升級(jí)為64位系統(tǒng),同時(shí)還可以采用64位方式編譯程序,對(duì)sys/io.h中的函數(shù)操作文件加以使用,并對(duì)文件池技術(shù)加以采用,將一部分文件描述符預(yù)留。進(jìn)程和線程在實(shí)際的限制過(guò)程中,就要對(duì)線程數(shù)進(jìn)行創(chuàng)建,并將符的數(shù)量以及進(jìn)程線大小的限制加以描述,其操作系統(tǒng)抽象層中操作系統(tǒng)函數(shù)不能直接的被調(diào)用,更應(yīng)該將其在一個(gè)操作系統(tǒng)抽象層中包裝的庫(kù)中實(shí)現(xiàn),將其在底層的操作系統(tǒng)中直接的脫離出來(lái),并保證系統(tǒng)調(diào)試有著相對(duì)有效的起點(diǎn)。
用戶界面的實(shí)現(xiàn)過(guò)程中,就要做好跨平臺(tái)軟件圖形界面的基礎(chǔ)設(shè)計(jì)工作,將程序基礎(chǔ)的邏輯代碼和數(shù)據(jù)構(gòu)成,金可的借助于跨平臺(tái)的開(kāi)發(fā)工具包,借助于C++語(yǔ)言實(shí)現(xiàn),進(jìn)而開(kāi)發(fā)利用C++語(yǔ)言跨平臺(tái)應(yīng)用程序的一種用戶界面,進(jìn)而做好相關(guān)界面的控制。
結(jié)語(yǔ)
總而言之,本文在對(duì)C++語(yǔ)言的跨平臺(tái)設(shè)計(jì)進(jìn)行研究時(shí),通過(guò)對(duì)C++語(yǔ)言和跨平臺(tái)需要的環(huán)境進(jìn)行分析,進(jìn)而對(duì)C++語(yǔ)言跨平臺(tái)設(shè)計(jì)做了主要的探討,進(jìn)而總結(jié)出,C++語(yǔ)言跨平臺(tái)設(shè)計(jì)過(guò)程中,不僅僅要有著相對(duì)豐富的經(jīng)驗(yàn),同時(shí)更要在開(kāi)發(fā)的軟件中將更多的功能和實(shí)際的操作容積加入,借助于相對(duì)優(yōu)越的設(shè)計(jì),綜合性的提高軟件的額功能。本文研究分析C++語(yǔ)言的跨平臺(tái)設(shè)計(jì)時(shí),希望其中的設(shè)計(jì)思路以及相關(guān)的理論基礎(chǔ)為更多的跨平臺(tái)開(kāi)發(fā)設(shè)計(jì)工程師給予一定的幫助,同時(shí)本文中存在的不足之處還望更多相關(guān)研究人員給予指正。
參考文獻(xiàn):
[1] 張馳. 基于C++語(yǔ)言的跨平臺(tái)軟件開(kāi)發(fā)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京交通大學(xué),2010.
[2] 侯成杰. 航天器C語(yǔ)言軟件常見(jiàn)編程錯(cuò)誤分析及檢測(cè)方法研究[J].空間控制技術(shù)與應(yīng)用,2013,06:53-57.
[3] 楊波,沈承舒. 面向嵌入式軟件開(kāi)發(fā)的C語(yǔ)言程序設(shè)計(jì)課程改革探索[J]. 計(jì)算機(jī)教育,2014,05:105-107.
[4] 吳興華. 基于C語(yǔ)言軟件開(kāi)發(fā)的效率、移植及調(diào)試[J]. 數(shù)字技術(shù)與應(yīng)用,2013,12:172.
[5] 楊鵬. 基于C++語(yǔ)言的跨平臺(tái)軟件開(kāi)發(fā)的設(shè)計(jì)[J]. 硅谷,2014,04:19+21.
[6] 徐巍. 跨平臺(tái)移動(dòng)開(kāi)發(fā)框架的比較分析與實(shí)例開(kāi)發(fā)[D]. 吉林大學(xué),2014.
[7] 謝東來(lái). C語(yǔ)言軟件設(shè)計(jì)中的主要問(wèn)題分析[J]. 計(jì)算機(jī)光盤軟件與應(yīng)用,2013,04:235-236.
【關(guān)鍵詞】精品課程;Web;應(yīng)用開(kāi)發(fā);B/S
0 前言
傳統(tǒng)的課堂教學(xué)中,存在教學(xué)任務(wù)重,教學(xué)課時(shí)緊張的特點(diǎn)。作為公共基礎(chǔ)課的《C語(yǔ)言程序設(shè)計(jì)》,是培養(yǎng)學(xué)生計(jì)算機(jī)編程能力的入門課,在課程教學(xué)中課時(shí)與教學(xué)任務(wù)之間的矛盾更加突出。精品課程網(wǎng)站的出現(xiàn),為學(xué)生在課下學(xué)習(xí)和復(fù)習(xí)提供了一個(gè)有效的平臺(tái),可以彌補(bǔ)課堂教學(xué)的不足,同時(shí),優(yōu)質(zhì)教學(xué)資源也可以通過(guò)精品課程得到更為廣泛的共享,極大的提高了其教學(xué)價(jià)值。
如何設(shè)計(jì)一個(gè)功能穩(wěn)定、內(nèi)容豐富、界面美觀、使用方便的精品課程網(wǎng)站,對(duì)于《C語(yǔ)言程序設(shè)計(jì)》的教學(xué)是一個(gè)極具探討價(jià)值且亟待解決的問(wèn)題。
1 《C語(yǔ)言程序設(shè)計(jì)》精品網(wǎng)站建設(shè)需求與功能分析
《C語(yǔ)言程序設(shè)計(jì)》精品課程網(wǎng)站要求能夠方便用戶在線資源共享及教師管理者資源的有效。網(wǎng)站平臺(tái)要具有界面美觀,操作方便,穩(wěn)定性與安全性好的特點(diǎn)。在網(wǎng)站內(nèi)容方面,要結(jié)合該課程較強(qiáng)的實(shí)踐性的特點(diǎn),實(shí)現(xiàn)學(xué)生與教師的有效互動(dòng)。因此,在功能上應(yīng)實(shí)現(xiàn)用戶注冊(cè)、課程資源,資源管理,資源瀏覽,留言及回復(fù),公告管理,用戶管理等功能。課程資源包括課件、習(xí)題、參考資料、教學(xué)大綱、教案、教學(xué)視頻、演示動(dòng)畫(huà)等的。資源管理實(shí)現(xiàn)上述資源的修改與刪除。用戶管理實(shí)現(xiàn)用戶賬號(hào)信息的管理、密碼修改與重置等。
2 《C語(yǔ)言程序設(shè)計(jì)》精品網(wǎng)站開(kāi)發(fā)技術(shù)
本網(wǎng)站采用JSP作為網(wǎng)站網(wǎng)頁(yè)開(kāi)發(fā)技術(shù),MYSQL作為存儲(chǔ)數(shù)據(jù)信息的后臺(tái)數(shù)據(jù)庫(kù)。JSP是Sun公司推出的構(gòu)建在Servlet規(guī)范提供的功能之上的動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)。MYSQL是一個(gè)開(kāi)放源碼的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),目前已經(jīng)被廣泛地應(yīng)用在中小型網(wǎng)站中。
網(wǎng)站平臺(tái)的開(kāi)發(fā),采用目前最流行的SSH(Struts+Spring+Hibernate)框架及MVC(模型Model-視圖View-控制器Controller)設(shè)計(jì)模式,充分考慮了平臺(tái)的可擴(kuò)充性和安全性及穩(wěn)定性的要求。平臺(tái)的實(shí)現(xiàn)包含了表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和域模塊層的設(shè)計(jì)與開(kāi)發(fā)。該開(kāi)發(fā)模型,不僅實(shí)現(xiàn)了視圖、控制器與模型的徹底分離,而且還實(shí)現(xiàn)了業(yè)務(wù)邏輯層與持久層的分離,是的系統(tǒng)具有很好的可維護(hù)性。在表示層中,首先通過(guò)JSP頁(yè)面實(shí)現(xiàn)交互界面,負(fù)責(zé)接收請(qǐng)求(Request)和傳送響應(yīng)(Response),然后Struts根據(jù)配置文件將ActionServlet接收到的Request委派給相應(yīng)的Action處理。在業(yè)務(wù)層中,由Spring IOC容器負(fù)責(zé)向Action提供業(yè)務(wù)模型(Model)組件和該組件的協(xié)作對(duì)象數(shù)據(jù)處理(DAO)組件完成業(yè)務(wù)邏輯,并提供緩沖池、事務(wù)處理等容器組件以提升系統(tǒng)性能和保證數(shù)據(jù)的完整性。在持久層中,將依賴于Hibernate的對(duì)象化映射和數(shù)據(jù)庫(kù)交互,處理DAO組件請(qǐng)求的數(shù)據(jù),然后返回處理結(jié)果。同時(shí),平臺(tái)在網(wǎng)頁(yè)刷新方面采用了Ajax (Asynchronous JavaScript and XML,異步JavaScript和XML)技術(shù)完成頁(yè)面的局部刷新。在資源上傳方面,采用SmanUpload組件實(shí)現(xiàn)了文件的上傳。采用FlashPaper實(shí)現(xiàn)文檔到FLASH動(dòng)畫(huà)的轉(zhuǎn)換。在線編輯則使用了開(kāi)源的在線HTML編輯器KindEditor。
3 精品網(wǎng)站主要功能模塊設(shè)計(jì)與實(shí)現(xiàn)
結(jié)合《C語(yǔ)言程序設(shè)計(jì)》精品課程網(wǎng)站的建設(shè)需求,下面對(duì)該平臺(tái)的一些主要功能模塊的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行介紹。
3.1 系統(tǒng)功能建模設(shè)計(jì)
系統(tǒng)用戶主要包括學(xué)生用戶、教師用戶及管理員,可以依據(jù)三者各自的功能,采用用例圖實(shí)現(xiàn)其功能的模型化概要設(shè)計(jì),并且利用活動(dòng)圖、狀態(tài)圖及類圖實(shí)現(xiàn)其細(xì)化,實(shí)現(xiàn)平臺(tái)主要功能模塊的詳細(xì)設(shè)計(jì)。下面是教師用戶角色的用例圖。
圖1 教師用戶角色用例圖
3.2 系統(tǒng)主要功能實(shí)現(xiàn)
根據(jù)詳細(xì)設(shè)計(jì)階段的成果,進(jìn)行程序代碼的編寫(xiě),完成預(yù)期的功能模塊。開(kāi)發(fā)實(shí)現(xiàn)過(guò)程中注意了代碼書(shū)寫(xiě)的規(guī)范化及可重用性,對(duì)于界面,采用了一些精美的圖片與動(dòng)畫(huà),使得實(shí)現(xiàn)的網(wǎng)站平臺(tái)在可用性、界面友好性方面有好的體現(xiàn)。同時(shí),按照預(yù)期的需求對(duì)其進(jìn)行相應(yīng)的黑盒測(cè)試與白盒測(cè)試,檢驗(yàn)其是否滿足實(shí)際的要求。
4 課程精品網(wǎng)站的
本精品網(wǎng)站在在WINDOWS平臺(tái)或LINUX平臺(tái)下,下面以在WINDOWS平臺(tái)的過(guò)程來(lái)進(jìn)行說(shuō)明:
4.1 安裝WINDOWS SERVER服務(wù)器版操作系統(tǒng)
由于《C語(yǔ)言程序設(shè)計(jì)》精品課程完整有著大量的用戶,存在較大的并發(fā)訪問(wèn)情況和安全性需求,因此網(wǎng)站需要在性能穩(wěn)定,安全性高的服務(wù)器平臺(tái)。我們首先需要安裝WINDOWS 2000 SERVER以上的服務(wù)器版本,本網(wǎng)站的服務(wù)器為WINDOWS 2008 SERVER。
4.2 安裝JDK并進(jìn)行配置
JDK是JAVA開(kāi)發(fā)及運(yùn)行的環(huán)境,網(wǎng)站的運(yùn)行需要JDK的支持,下載JDK的WINDOWS版本安裝包進(jìn)行安裝,然后配置相應(yīng)的環(huán)境變量,包括java_home,path和classpath三個(gè)部分。
4.3 安裝Tomcat WEB服務(wù)器
下載并安裝Tomcat,Tomcat是Apache的一個(gè)JSP常用的WEB應(yīng)用服務(wù)器,具有很好的穩(wěn)定性。
4.4 安裝MYSQL數(shù)據(jù)庫(kù)管理系統(tǒng)
網(wǎng)站采用MYSQL作為數(shù)據(jù)庫(kù)管理系統(tǒng),下載并安裝MYSQL,然后創(chuàng)建網(wǎng)站所需要的數(shù)據(jù)庫(kù)和用戶。
4.5 安裝JDBC驅(qū)動(dòng)
JDBC(Java Database Connectivity)是一種可以執(zhí)行SQL語(yǔ)句的Java API,提供了程序訪問(wèn)數(shù)據(jù)庫(kù)的接口。平臺(tái)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)需要安裝JDBC驅(qū)動(dòng)。
4.6 網(wǎng)站到TOMCAT(下轉(zhuǎn)第13頁(yè))
(上接第15頁(yè))將精品網(wǎng)站的JSP程序放置在直接放到Webapps目錄下或者自己建立的目錄下,修改配置server.xml,實(shí)現(xiàn)網(wǎng)站的最終。可以通過(guò)修改server.xml文件,在Host標(biāo)簽內(nèi)建一個(gè)Context實(shí)現(xiàn),內(nèi)容如下:
其中path是虛擬路徑,docBase是JSP應(yīng)用程序的物理路徑,workDir是這個(gè)應(yīng)用的工作目錄,存放運(yùn)行是生成的于這個(gè)應(yīng)用相關(guān)的文件。
這些步驟完成后,就可以瀏覽器里直接訪問(wèn)該網(wǎng)站。
5 結(jié)束語(yǔ)
作為學(xué)生自學(xué)重要途徑的精品課程資源建設(shè),是對(duì)優(yōu)質(zhì)課程資源共享的一個(gè)重要途徑,同時(shí)也彌補(bǔ)了課堂教學(xué)的不足。本文分析了《C語(yǔ)言程序設(shè)計(jì)》精品課程網(wǎng)站的需求,討論了精品課程網(wǎng)站的開(kāi)發(fā)技術(shù)和開(kāi)發(fā)思想。設(shè)計(jì)和實(shí)現(xiàn)了精品課程網(wǎng)站的開(kāi)發(fā),并且給出了網(wǎng)站的方法。精品課程網(wǎng)站的建設(shè)和其合理應(yīng)用,對(duì)于學(xué)生的學(xué)習(xí)有較好的效果,為進(jìn)一步促進(jìn)教學(xué)質(zhì)量的提升打下堅(jiān)實(shí)的基礎(chǔ)。
【參考文獻(xiàn)】
[1]鄭偉平,范冰冰,胡遵華,田杰.多租戶精品課程網(wǎng)站系統(tǒng)的研究與實(shí)現(xiàn)[J].東北師大學(xué)報(bào):自然科學(xué)版,2013(02).
[2]周玉芬,柯和平,陳銳浩.基于績(jī)效技術(shù)的精品課程網(wǎng)站建設(shè)研究[J].中國(guó)電化教育,2012(07).
關(guān)鍵詞:Coco2d-x;動(dòng)態(tài)更新;Lua;跨平臺(tái)開(kāi)發(fā)
中圖分類號(hào):TP368.1 文獻(xiàn)標(biāo)識(shí)碼: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++語(yǔ)言的移動(dòng)端應(yīng)用程序開(kāi)發(fā)的開(kāi)源框架。Cocos2d-iPhone項(xiàng)目的C++版本[1]。Cocos2d-x開(kāi)發(fā)框架用C++語(yǔ)言重寫(xiě)了Cocos2d開(kāi)發(fā)框架從而實(shí)現(xiàn)應(yīng)用開(kāi)發(fā)跨平臺(tái),在跨平臺(tái)移動(dòng)端應(yīng)用開(kāi)發(fā)中Cocos2d-x框架被大量使用[2]。其開(kāi)發(fā)的手機(jī)應(yīng)用,可以在C++或者Lua中編寫(xiě)。Cocos2d-x項(xiàng)目能夠兼容iOS操作系統(tǒng),Android操作系統(tǒng),黑莓Blackberry操作系統(tǒng)等。在PC端Cocos2d-x開(kāi)發(fā)框架支持的操作系統(tǒng)包括Linux操作系統(tǒng)、Mac操作系統(tǒng)和Windows操作系統(tǒng)等PC端操作系統(tǒng),因此,Cocos2d-x能夠在PC端操作系統(tǒng)中可以進(jìn)行編輯和調(diào)試使得其在開(kāi)發(fā)中變得高效快捷[3]。
2 基于Lua動(dòng)態(tài)腳本語(yǔ)言Coco2d-x應(yīng)用開(kāi)發(fā)的關(guān)鍵技術(shù)(The key technology of Cocos2d-x application development based on the dynamic scripting language Lua)
(1)Lua技術(shù)
Lua是一個(gè)小巧的動(dòng)態(tài)語(yǔ)言。Lua動(dòng)態(tài)語(yǔ)言的設(shè)計(jì)初衷,為應(yīng)用程序開(kāi)發(fā)提供訂制功能與靈活的拓展。作為腳本語(yǔ)言它具有輕量、可拓展、簡(jiǎn)潔等特點(diǎn)[4]。因?yàn)镃++語(yǔ)言與Lua腳本語(yǔ)言具有良好交互能力。可以復(fù)雜繁瑣的C++開(kāi)發(fā)變?yōu)楹?jiǎn)單快捷的Lua語(yǔ)言開(kāi)發(fā)。
(2)Lua與C++交互技術(shù)
Lua動(dòng)態(tài)腳本語(yǔ)言與C++語(yǔ)言的通訊分為兩部分,首先是Lua動(dòng)態(tài)語(yǔ)言通過(guò)Lua Binding訪問(wèn)C++語(yǔ)言中的類庫(kù)或者函數(shù)以及傳遞參數(shù),其次分是C++語(yǔ)言回調(diào)Lua C API訪問(wèn)Lua的函數(shù)以及傳遞參數(shù)。
(3)Cocos2d-x開(kāi)發(fā)手機(jī)應(yīng)用技術(shù)
在實(shí)際開(kāi)發(fā)中,使用Cocos2d-x框架進(jìn)行移動(dòng)端應(yīng)用程序開(kāi)發(fā),依賴其可以和平美兼容,使其項(xiàng)目可以做到多個(gè)平臺(tái)一套代碼,多個(gè)平臺(tái)一個(gè)版本避免了多平臺(tái)版本不統(tǒng)一的尷尬。通過(guò)與之相配套的CocosStdioUI編輯快速生成plist文件可視化進(jìn)行界面布局提高實(shí)際項(xiàng)目中的開(kāi)發(fā)效率,讓?xiě)?yīng)用開(kāi)發(fā)變得更加迅捷高效開(kāi)發(fā)。
3 基于Lua動(dòng)態(tài)腳本語(yǔ)言Coco2d-x應(yīng)用開(kāi)發(fā)的應(yīng)用
與實(shí)現(xiàn)(The use and implementation of Cocos2d-x
application development based on the dynamic
scripting language Lua)
3.1 Lua與C++的交互技術(shù)實(shí)現(xiàn)
在C++中初始化Lua:
Lua_State * L=lua_open(); //初始化Lua環(huán)境
void CCinitLua() {
lua_openlibs(L); //載入Lua全部標(biāo)準(zhǔn)庫(kù)
}
完成在C++來(lái)執(zhí)行Lua文件。Lua被嵌入到C++程序中,起到一個(gè)黏合作用。而Cocos2d-x框架其強(qiáng)大的功能分別來(lái)自于不同的類庫(kù)。Lua動(dòng)態(tài)語(yǔ)言在程序開(kāi)發(fā)中作為整個(gè)應(yīng)用程序的邏輯控制器,在開(kāi)發(fā)中Lua腳本語(yǔ)言充當(dāng)大腦而開(kāi)發(fā)框架充當(dāng)肢體。以消息機(jī)制為例,通過(guò)調(diào)用C++語(yǔ)言的函數(shù)達(dá)到,回調(diào)Lua動(dòng)態(tài)語(yǔ)言函數(shù)。以C++繪制函數(shù)為例,C++通過(guò)繪制函數(shù)傳輸一個(gè)消息給Lua語(yǔ)言,當(dāng)繪制函數(shù)進(jìn)行重繪時(shí)也就在Lua語(yǔ)言中執(zhí)行相同的函數(shù)。這樣就可以在書(shū)法簡(jiǎn)練沒(méi)有類型的Lua中編寫(xiě)C++代碼,省去了C++的復(fù)雜語(yǔ)法從而有擁有了C++的強(qiáng)大功能。通過(guò)這個(gè)方式就能夠?qū)崿F(xiàn)其他事件機(jī)制。
動(dòng)態(tài)腳本語(yǔ)言Lua調(diào)用C++接口時(shí),進(jìn)行參數(shù)傳遞,回調(diào)結(jié)果的獲取。需要把C++中函數(shù)位置通過(guò)指定的方式傳達(dá)給Lua語(yǔ)言。在Lua調(diào)用C++,C++從棧中找到交互的棧,從而獲取其中的參數(shù),調(diào)用結(jié)束后將返回結(jié)果信息放入棧中。在當(dāng)Lua語(yǔ)言中繪制函數(shù)被調(diào)用時(shí),同時(shí)也調(diào)用了C++中做相應(yīng)處理的函數(shù),這樣動(dòng)態(tài)語(yǔ)言Lua與C++的交互就是實(shí)現(xiàn)的。
3.2 Lua與Cocos2d-x交互
Cocos2d-x具體來(lái)說(shuō)更像是一個(gè)類庫(kù)的合集其中把圖形渲染和多媒體播放甚至物理引擎,分解集合成一個(gè)lib。通過(guò)C++調(diào)用這個(gè)lib中的具體方法而實(shí)現(xiàn)快速的手機(jī)應(yīng)用開(kāi)發(fā)的框架。通過(guò)Lua動(dòng)態(tài)語(yǔ)言嵌入到Cocos2d-x開(kāi)發(fā)框架中,并與其良好的結(jié)合。達(dá)到了在腳本中開(kāi)發(fā)跨平臺(tái)手機(jī)應(yīng)用。
3.3 利用Cocos2d-x開(kāi)發(fā)應(yīng)用
目前移動(dòng)端操作系統(tǒng)主要有iOS操作系統(tǒng),Android操作系統(tǒng)。移動(dòng)應(yīng)用程序開(kāi)發(fā)需要使用Cocos2d-x進(jìn)行開(kāi)發(fā)可以避免一款程序多套代碼的尷尬。
(1)利用Lua+Coco2d-x開(kāi)發(fā)Android應(yīng)用
通過(guò)Native Development Toolkit(NDK)我們可以在eclipse里面集成外部庫(kù)(比如Cocos2d-x),使用C/C++來(lái)編寫(xiě)Android程序。這些庫(kù)被編譯成動(dòng)態(tài)庫(kù)通過(guò)JNI(Java Native Interface)與Java Android體系程序進(jìn)行交互。下面有兩種使用方法:
①獨(dú)立模式:直接在makefile中使用arm-linux-androideabi-g++。
②集成模式:使用$NDKROOT/ndk-build shell工具,它是一種高度可定制的makefile,專門為NDK庫(kù)所設(shè)計(jì)的。
首先修改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開(kāi)發(fā)iOS應(yīng)用
在Mac操作系統(tǒng)終端中填入:
cd $COCOS2DX_HOME
sud./install-templates-xcode.sh-u
在Cocos2d-x框架安裝成功以后在Xcode中會(huì)出現(xiàn)新的Cocos2d-x模板選擇即可創(chuàng)建新的工程。由于lua語(yǔ)言不能直接與Objective-C交互,所以我們使用Lua Bingding和C/C++交互。同時(shí)C++和Objective-C可以混編,使用C++可以直接調(diào)用Objective-C,讓C++作為L(zhǎng)ua和Objective-C交互的橋梁(圖1)。
(3)Lua開(kāi)發(fā)應(yīng)用
我們通過(guò)用Lua動(dòng)態(tài)語(yǔ)言創(chuàng)建場(chǎng)景、層、精靈來(lái)實(shí)現(xiàn)應(yīng)用中的一個(gè)通過(guò)用戶觸摸圖片跟隨用戶手指移動(dòng)的功能。
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("腳本運(yùn)行結(jié)束")
4 結(jié)論(Conclusion)
本文使用Lua動(dòng)態(tài)語(yǔ)言進(jìn)行移動(dòng)應(yīng)用程序的設(shè)計(jì)與開(kāi)發(fā),把靈活高效的腳本語(yǔ)言應(yīng)用到移動(dòng)端應(yīng)用程序開(kāi)發(fā),通過(guò)其良好的嵌入能力與Android平臺(tái)和iOS平臺(tái)結(jié)合,利用Cocos2d-x進(jìn)行應(yīng)用開(kāi)發(fā)。Lua動(dòng)態(tài)語(yǔ)言能使應(yīng)用程序的邏輯和與前端視圖完全剝離開(kāi),不僅大大減少的應(yīng)用程序的開(kāi)發(fā)周期還使其具有客戶端動(dòng)態(tài)更新的功能,又通過(guò)Cocos2d-x開(kāi)發(fā)框架與多平臺(tái)相兼容,降低了開(kāi)發(fā)成本。同時(shí)也降低了應(yīng)用程序的復(fù)雜程度,增加了代碼的可復(fù)用性。
參考文獻(xiàn)(References)
[1] Jayant Varma.Lua實(shí)戰(zhàn):IOS游戲開(kāi)發(fā)[M].北京:人民郵電出版社,2014:77-78.
[2] 劉劍卓.Cocos2D-X游戲開(kāi)發(fā)技術(shù)精解[M].北京:人民郵電出版社,2013:53-54.
[3] 滿碩泉.Cocos2D-X權(quán)威指南[M].北京:機(jī)械工業(yè)出版社,2010:26-27.
[4] Ierusalimschy R.Progarmming in Lua[M].北京:電子工業(yè)出版社,2006:141-143.
作者簡(jiǎn)介:
關(guān)鍵詞:20CrMnTiH;齒輪鋼;開(kāi)發(fā)
引言
20CrMnTiH齒輪鋼是我國(guó)用于制造各種汽車以及工程機(jī)械等傳動(dòng)齒輪以及齒輪軸的材料所使用最為廣泛的一種鋼種,在齒輪鋼總量中占有重要的比重。齒輪是比較關(guān)鍵的機(jī)械零件,它在實(shí)際的應(yīng)用過(guò)程中承受著交變載荷以及沖擊載荷等,所以對(duì)鋼的性能要求較為嚴(yán)格。
1.20CrMnTiH齒輪鋼的基本概述
1.1 20CrMnTiH齒輪鋼關(guān)鍵技術(shù)分析
在我國(guó)的20CrMnTiH齒輪鋼產(chǎn)業(yè)的長(zhǎng)期發(fā)展過(guò)程中,在生產(chǎn)的工藝上已經(jīng)逐漸的成熟,形成了一套有著我國(guó)特色的齒輪鋼生產(chǎn)工藝,在對(duì)這些技術(shù)進(jìn)行應(yīng)用的過(guò)程中能夠在很大的程度上提高生產(chǎn)的效率。其中,通過(guò)電爐少渣出鋼的工藝能夠有效的降低脫氧的負(fù)擔(dān),并對(duì)鋼中所夾雜的一些雜質(zhì)含量起到了有效的控制作用;在無(wú)氧化保護(hù)澆注這一關(guān)鍵技術(shù)的應(yīng)用基礎(chǔ)上,對(duì)鋼中的氧含量得到了有效降低;通過(guò)對(duì)結(jié)晶器電磁攪拌這一關(guān)鍵技術(shù)的有效應(yīng)用,大大減少了鑄坯化學(xué)成分的偏析;另外,在快速白渣這一關(guān)鍵技術(shù)的應(yīng)用過(guò)程中,對(duì)鋼中的氧含量也得到了有效的降低[1]。
1.2 20CrMnTiH齒輪鋼的性能分析
這一產(chǎn)品有著高碳的耐磨表層以及低碳的高強(qiáng)韌性心部,這樣能夠?qū)薮蟮臎_擊載荷以及磨損等得以承受,在其性能方面主要有可加工性以及使用性能。在可加工性能這一方面,傳統(tǒng)的齒輪加工大多是采取插齒以及車削加工等,在隨著我國(guó)的科學(xué)技術(shù)的發(fā)展以及齒輪加工自動(dòng)化的形成,在生產(chǎn)效率方面有了很大的提高,通過(guò)數(shù)控技術(shù)進(jìn)行綠色加工已經(jīng)得以實(shí)現(xiàn)[2]。一般常見(jiàn)的輪齒失效就是吃面點(diǎn)蝕以及折斷等,而在疲勞失效這一方面主要就是鋼中的雜質(zhì)所導(dǎo)致的,隨著我國(guó)在新技術(shù)方面的引進(jìn),對(duì)其使用的性能已經(jīng)大大的得到了提高,齒輪鋼的純潔度得到了保障。
2.20CrMnTiH齒輪鋼的開(kāi)發(fā)流程及技術(shù)創(chuàng)新探究
2.1 20CrMnTiH齒輪鋼的開(kāi)發(fā)流程分析
在我國(guó)實(shí)際的20CrMnTiH齒輪鋼的開(kāi)發(fā)內(nèi)容方面涉及的較為廣泛,其中在開(kāi)發(fā)的過(guò)程中需要通過(guò)專業(yè)的技術(shù)人員對(duì)鋼的質(zhì)量以及工藝的要求進(jìn)行把控,并結(jié)合企業(yè)自身的發(fā)展特點(diǎn),然后才能夠?qū)?0CrMnTiH齒輪鋼的開(kāi)發(fā)路線以及相關(guān)的設(shè)備配備進(jìn)行確定。然后就是依據(jù)著相關(guān)的工藝要求以及企業(yè)的現(xiàn)階段設(shè)備以及外購(gòu)的檢測(cè)設(shè)備基礎(chǔ)上,對(duì)鋼的相關(guān)工藝特點(diǎn)以及操作水平、生產(chǎn)的現(xiàn)狀等進(jìn)行整合成對(duì)實(shí)際有著指導(dǎo)作用的指導(dǎo)書(shū),接著對(duì)初步的開(kāi)發(fā)進(jìn)行審核,并形成試驗(yàn)方案。
然后經(jīng)過(guò)相關(guān)的評(píng)審之后要能夠?qū)﹂_(kāi)發(fā)的要求滿足情況加以確認(rèn),不符合實(shí)際開(kāi)發(fā)要求的要能夠進(jìn)行積極的改善。在這些完成之后就要進(jìn)行初步的開(kāi)發(fā)生產(chǎn),在開(kāi)發(fā)的過(guò)程中對(duì)出現(xiàn)的問(wèn)題要進(jìn)行及時(shí)的解決應(yīng)對(duì),避免失控情況的發(fā)生,同時(shí)還要能夠?qū)﹂_(kāi)發(fā)的要求得以滿足。在試驗(yàn)開(kāi)發(fā)的階段一定要嚴(yán)格的按照標(biāo)準(zhǔn)進(jìn)行實(shí)施,在物理檢驗(yàn)以及化學(xué)檢驗(yàn)方面都要能夠得以加強(qiáng),從而滿足對(duì)20CrMnTiH齒輪鋼開(kāi)發(fā)設(shè)計(jì)的要求達(dá)到標(biāo)準(zhǔn)。另外,對(duì)20CrMnTiH齒輪鋼開(kāi)發(fā)過(guò)程中要進(jìn)行多次的試驗(yàn),確保鋼中的雜質(zhì)最大化的清除,要對(duì)影響這一開(kāi)發(fā)的因素進(jìn)行積極的排除,從而形成適合這一工藝開(kāi)發(fā)的最佳參數(shù)。
2.2 20CrMnTiH齒輪鋼的技術(shù)創(chuàng)新探究
在20CrMnTiH齒輪鋼的開(kāi)發(fā)中,對(duì)其技術(shù)要能夠進(jìn)行創(chuàng)新,首先就是在快速白渣工藝這一創(chuàng)新技術(shù)方面,在經(jīng)過(guò)對(duì)精煉爐操作得以優(yōu)化之后,對(duì)其造渣的工藝也進(jìn)行了有效的改善。在具體的操作過(guò)程當(dāng)中就是對(duì)精煉爐的堿度進(jìn)行適當(dāng)?shù)目刂?,將其控制?.0―3.0之間,這一技術(shù)不僅有著較有效的脫氧效果,同時(shí)在流動(dòng)性方面也比較的優(yōu)良。
另外,在少渣出鋼這一工藝的創(chuàng)新點(diǎn)最為主要的就是電爐用擋渣錐進(jìn)行的擋渣,同時(shí)又加入了擋渣車,這樣在定位上就相對(duì)來(lái)說(shuō)比較的準(zhǔn)確,擋渣的效果能夠得以完善的呈現(xiàn)出來(lái),從而對(duì)少渣多鋼得到了實(shí)現(xiàn)。然后就是在連鑄無(wú)氧化澆鑄這一創(chuàng)新技術(shù)方面對(duì)低過(guò)熱澆注有了保障,同時(shí)也對(duì)高的中間包液位澆注有了保證,在液面的穩(wěn)定性方面也有了保障,避免了中包液面的大波動(dòng)所造成的鋼液卷渣現(xiàn)象[3]。
在深脫氧這一創(chuàng)新技術(shù)的應(yīng)用過(guò)程中,也在很大的程度上對(duì)鋼中的氧含量有了降低,在對(duì)電爐出鋼進(jìn)行了有效控制之后,實(shí)現(xiàn)了少渣出鋼,這樣就有效的對(duì)脫氧的負(fù)擔(dān)有了降低,從而對(duì)精煉爐中的A1含量得到了有效控制。在過(guò)熱度過(guò)高的情況下就會(huì)使得柱狀晶過(guò)于發(fā)達(dá)以及中心碳的偏析較為嚴(yán)重等情況的出現(xiàn),所以將過(guò)熱度控制在二十?dāng)z氏度到三十?dāng)z氏度之間是比較適宜的,而在拉速這一方面將其控制在1.1到1.3m/min這一范圍內(nèi)是較為合適的。
而在電磁攪拌以及氬氣攪拌的技術(shù)創(chuàng)新應(yīng)用過(guò)程中,不只是將鋼中的一些有害氣體得以減少了,并對(duì)剩余的一些雜質(zhì)進(jìn)行了改性的處理,在雜物的含量級(jí)別方面有了很大程度上的降低,這一創(chuàng)新技術(shù)的應(yīng)用在質(zhì)量水平方面和技術(shù)協(xié)議中的脆性?shī)A物以及塑性?shī)A物小于三級(jí)的規(guī)定是相契合的。
3.結(jié)語(yǔ)
總而言之,在20CrMnTiH齒輪鋼的開(kāi)發(fā)過(guò)程中會(huì)遇到諸多的問(wèn)題,故此要能夠找到問(wèn)題的根源所在,有針對(duì)性的加以解決。隨著我國(guó)的科學(xué)技術(shù)的進(jìn)步,對(duì)20CrMnTiH齒輪鋼的開(kāi)發(fā)以及研究方面定將會(huì)迎來(lái)一個(gè)新的發(fā)展局面。
參考文獻(xiàn):
[1]楊躍標(biāo),鄧深,朱超云,周漢全,江學(xué)德.20CrMnTi齒輪鋼方坯連鑄工藝的研究與應(yīng)用[J].柳鋼科技,2012,(04).
關(guān)鍵詞:SuperMapObjects,電子地圖,十堰市
1 引言
傳統(tǒng)的地圖制圖理論已經(jīng)基本成熟,但是任何一門學(xué)科的發(fā)展都是和現(xiàn)代科學(xué)技術(shù)的發(fā)展分不開(kāi)的,現(xiàn)代科學(xué)技術(shù)的發(fā)展促進(jìn)學(xué)科的發(fā)展,所以地圖制圖學(xué)也不例外[2]。計(jì)算機(jī)技術(shù)、多媒體技術(shù)、網(wǎng)絡(luò)技術(shù)以及其它相關(guān)的或可能相關(guān)的技術(shù)正在影響或可能影響地圖制圖學(xué)的發(fā)展,因此電子地圖信息研究與實(shí)踐是對(duì)地圖制圖學(xué)新技術(shù)和新理論的補(bǔ)充和完善,這是本論文的意義之一[1]。電子地圖相對(duì)獨(dú)立,可以根據(jù)需要方便快捷的轉(zhuǎn)化為紙制地圖;電子地圖中掛接的多媒體信息內(nèi)容具有動(dòng)態(tài)性,可以方便的對(duì)信息內(nèi)容進(jìn)行補(bǔ)充和更新,同時(shí)內(nèi)容組織更加靈活;在電子地圖上可以方便的進(jìn)行量算和相關(guān)分析,同時(shí)借助于多媒體技術(shù)使信息的表達(dá)形式更加豐富多彩;隨著信息化的發(fā)展,電子地圖作為空間信息的主要載體和傳播工具在國(guó)民經(jīng)濟(jì)建設(shè)中發(fā)揮著不可替代的作用。因此研究電子地圖具有十分重要的現(xiàn)實(shí)意義。
2 SuperMapObject簡(jiǎn)介
SuperMap組件式GIS以標(biāo)準(zhǔn)的ActiveX組件的方式,嵌入流行的可視化高級(jí)開(kāi)發(fā)語(yǔ)言環(huán)境中進(jìn)行開(kāi)發(fā)。充分發(fā)揮VisualBasic, Delphi, Visual C++, C++ Builder, PowerBuilder, C,C#等高級(jí)開(kāi)發(fā)工具在面向?qū)ο缶幊?、可視化程序設(shè)計(jì)環(huán)境中體現(xiàn)的新一代程序設(shè)計(jì)語(yǔ)言的優(yōu)勢(shì),結(jié)合各種第三方ActiveX組件,對(duì)GIS功能進(jìn)行無(wú)限擴(kuò)展。。
SuperMapObjects組件開(kāi)發(fā)平臺(tái)以一系列ActiveX組件形式提供GIS基本功能,包括核心組件庫(kù)(工作空間控件和地圖控件)、布局組件、三維組件、拓?fù)浣M件、圖例組件庫(kù)(圖例控件、圖例列表控件和圖例組合列表框控件)、屬性表格組件、工作空間管理組件、加密鎖信息組件等多個(gè)可分拆的組件.SuperMap Objects組件之間既互相聯(lián)系,也保持相對(duì)獨(dú)立性.其中核心組件庫(kù)(工作空間控件和地圖控件)是基礎(chǔ)的、必選的組件,其他組件全都是可選的。
3 系統(tǒng)設(shè)計(jì)
該系統(tǒng)設(shè)計(jì)的目的是讓人們通過(guò)這個(gè)系統(tǒng)對(duì)十堰市的環(huán)境和旅游景點(diǎn)有更好的了解,為一些旅游人士提供公交搭乘的指導(dǎo),并可以查詢一些單位的資料。
3.1 系統(tǒng)總體設(shè)計(jì)
根據(jù)系統(tǒng)建設(shè)目標(biāo)和原則,系統(tǒng)開(kāi)發(fā)將采用如下步驟:
第一步:完成城市基礎(chǔ)地理信息等的輸入、分層管理,建立各類對(duì)象的屬性數(shù)據(jù)庫(kù);
第二步:數(shù)字化十堰市城區(qū)全圖;
第三步:實(shí)現(xiàn)電子地圖的基本功能;
第四步:網(wǎng)上查找十堰市城區(qū)主要地物和自然的圖片或影像資料,并建立其與相應(yīng)對(duì)象的關(guān)連;
第五步:電子地圖的測(cè)試與完善。
3.2系統(tǒng)功能設(shè)計(jì)
系統(tǒng)的總體功能結(jié)構(gòu)如下圖:
圖1 電子地圖功能的總體結(jié)構(gòu)圖
3.2.1地圖的基本操作
通過(guò)放大、縮小、漫游、自由縮放、全幅顯示等操作實(shí)現(xiàn)對(duì)地圖顯示的控制。
3.2.2公交換乘查詢(圖2)
通過(guò)該功能把起點(diǎn)和終點(diǎn)選中后,就可以查詢出你可以乘坐的公交車次。
3.2.3圖上量算
圖上量算是GIS最常用的功能之一。在圖中新建線或多邊形,在多邊形中有area面積屬性,在線中有l(wèi)ength屬性,可以讀取兩者屬性得到面積和距離。。
3.2.4屬性查詢(圖3)
用戶可以利用鼠標(biāo)選取或直接輸入單位名稱,就可以查詢到相關(guān)資料。
圖2 電子地圖公交換乘圖3 電子地圖屬性查詢
4 結(jié)語(yǔ)
本系統(tǒng)從設(shè)計(jì),編碼到實(shí)現(xiàn)的過(guò)程中,是以軟件工程和地理信息系統(tǒng)工程原理為指導(dǎo),利用現(xiàn)有的地理信息系統(tǒng)平臺(tái)提供的開(kāi)發(fā)平臺(tái),進(jìn)行平臺(tái)應(yīng)用和二次GIS 開(kāi)發(fā)的實(shí)踐性教學(xué)。全面分析了電子地圖的理論基礎(chǔ),包括電子地圖的概念和特點(diǎn),以及電子地圖的研究現(xiàn)狀,同時(shí)結(jié)合地理信息系統(tǒng)的發(fā)展特點(diǎn),總結(jié)了電子地圖研發(fā)方式;分析了地理信息系統(tǒng)的發(fā)展現(xiàn)狀并詳細(xì)敘述了地理信息系統(tǒng)開(kāi)發(fā)的三種形式。電子地圖的地理信息和多媒體信息數(shù)據(jù)量大,有效的數(shù)據(jù)組織與數(shù)據(jù)管理是系統(tǒng)高效運(yùn)行的關(guān)鍵。本文研究了電子地圖數(shù)據(jù)的組織和管理方法。。多媒體電子地圖仍然處于發(fā)展中,尚有很多問(wèn)題值得我們?nèi)ヌ剿骱烷_(kāi)發(fā)。
參考文獻(xiàn)
[1] 張家坤, 林亞平. 基于SuperMap IS的電子地圖信息服務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 長(zhǎng)沙通信職業(yè)技術(shù)學(xué)院學(xué)報(bào) ,2006,5(3):47-51
[2] 李曙光,荊便順,尹如軍等. 交通電子地圖設(shè)計(jì)和制作[J]. 西安公路交通大學(xué)學(xué)報(bào),2001.20(1):78-80.
關(guān)鍵詞:JTBC;網(wǎng)站開(kāi)發(fā);管理系統(tǒng)
中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):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
一、引言
蒙古民族具有悠久的歷史和燦爛的文化,目前蒙古學(xué)的研究,已經(jīng)不只局限于語(yǔ)言文字、文學(xué)、歷史等傳統(tǒng)學(xué)科的范圍,而向縱與橫的方面全面展開(kāi),產(chǎn)生了許多相關(guān)學(xué)科,如蒙古族哲學(xué)及社會(huì)思想史、蒙古族經(jīng)濟(jì)及經(jīng)濟(jì)史、蒙古族風(fēng)俗、蒙古族藝術(shù)以及蒙古族醫(yī)學(xué)等等,蒙古學(xué)研究逐漸形成了一個(gè)較完整的體系。隨著互聯(lián)網(wǎng)的發(fā)展與普及,蒙古文化迫切需要通過(guò)網(wǎng)絡(luò)平臺(tái)進(jìn)行傳播與交流。
網(wǎng)站作為信息交流的主要平臺(tái),其建設(shè)、管理與維護(hù)主要依靠網(wǎng)站內(nèi)容管理系統(tǒng)來(lái)實(shí)現(xiàn)。近年來(lái),中英文網(wǎng)站內(nèi)容管理系統(tǒng)的發(fā)展已比較完善,然而因?yàn)槊晒盼脑谡Z(yǔ)言、文字方面的特殊性,蒙古文網(wǎng)站內(nèi)容管理系統(tǒng)的發(fā)展比較緩慢,蒙古文在瀏覽器中的顯示、排版等關(guān)鍵的技術(shù)問(wèn)題仍沒(méi)有完美的解決方案。本文提出了基于JTBC系統(tǒng)進(jìn)行二次開(kāi)發(fā)蒙古文網(wǎng)站內(nèi)容管理系統(tǒng)的思路,并對(duì)如何實(shí)現(xiàn)蒙古文字體的顯示,蒙古文特殊的排版要求及所見(jiàn)即所得的后臺(tái)編輯等關(guān)鍵問(wèn)題進(jìn)行研究,提出了又一種整體解決方案。
二、系統(tǒng)開(kāi)發(fā)的關(guān)鍵問(wèn)題
(一)蒙古文字體的顯示問(wèn)題。蒙古文字體的顯示是蒙古文網(wǎng)站建設(shè)的關(guān)鍵問(wèn)題之一,從蒙古文網(wǎng)站的發(fā)展歷程上,蒙古文的顯示大致采用了如下幾種方法:
1.圖片法:直接在需要顯示文字的位置用處理好的圖片來(lái)代替顯示。這種方式顯示效果穩(wěn)定,但不能動(dòng)態(tài)顯示內(nèi)容,適合于標(biāo)題等相對(duì)固定的顯示方案,不適合用于正文。
2.Flash法:利用Flash內(nèi)建的嵌入字體機(jī)制來(lái)輔助實(shí)現(xiàn)。這種方法能夠適應(yīng)內(nèi)容的動(dòng)態(tài)變化,具有較好的顯示效果,但實(shí)現(xiàn)較為復(fù)雜,一般用于利用Flash、Flex開(kāi)發(fā)的站點(diǎn)。
3.ActiveX控件法:頁(yè)面嵌入ActiveX控件實(shí)現(xiàn)蒙古文顯示、編輯、字體集成等功能。這種方法不僅可以解決蒙古文字體的顯示還可以解決蒙古文的排版問(wèn)題,但實(shí)現(xiàn)較為復(fù)雜,并且需要用戶下載安裝控件,一般用在蒙古文的后臺(tái)編輯方面。
4.字體嵌入法:使用網(wǎng)頁(yè)嵌入字體(Web Embed Font)技術(shù)。目前主流瀏覽器都已支持CSS的 @font-face屬性在頁(yè)面中嵌入OpenType字體。這種方法不需要用戶介入字體問(wèn)題,最為人性化,實(shí)現(xiàn)起來(lái)也相對(duì)簡(jiǎn)單。
(二)蒙古文的排版問(wèn)題。蒙古文的書(shū)寫(xiě)格式為自上而下、從左到右,目前主流瀏覽器都不支持這種文字布局格式。如何遵從蒙古文的書(shū)寫(xiě)格式在網(wǎng)頁(yè)中正確顯示是蒙古文網(wǎng)站需要解決的重點(diǎn)問(wèn)題之一。當(dāng)前網(wǎng)頁(yè)的排版大多使用CSS(Cascading Style Sheet,可譯為“層疊樣式表”)來(lái)進(jìn)行控制,而主流瀏覽器所支持的CSS2版本對(duì)豎排文字的布局規(guī)則只有tb-rl(toptobutton-righttoleft,從上到下-從右到左),可喜的是W3C在CSS3中添加了tb-lr(toptobutton-lefttoright,從上到下-從左到右)的書(shū)寫(xiě)方向,并明確說(shuō)明tb-lr的書(shū)寫(xiě)方向是針對(duì)蒙古文的書(shū)寫(xiě)方向,但瀏覽器對(duì)于CSS3的全面支持可能還需要一段時(shí)間。
(三)后臺(tái)所見(jiàn)即所得的編輯問(wèn)題。作為內(nèi)容管理系統(tǒng),后臺(tái)內(nèi)容的編輯是最重要的一個(gè)管理模塊。中英文網(wǎng)站的后臺(tái)編輯模塊發(fā)展已比較成熟,開(kāi)源的Web編輯器也很多。在蒙古文網(wǎng)站內(nèi)容管理系統(tǒng)的后臺(tái)編輯模塊中,需要對(duì)蒙古文信息進(jìn)行錄入、編輯、排版、。目前所有的Web編輯器都不支持蒙古文自上而下、從左至右的特殊排版格式,要想實(shí)現(xiàn)所見(jiàn)即所得的編輯,同時(shí)具備文本的復(fù)制、粘貼、插入等編輯功能,目前一般的方法是采用ActiveX控件的方式來(lái)實(shí)現(xiàn)。
利用ActiveX控件需要用戶進(jìn)行一次控件的注冊(cè),但對(duì)于網(wǎng)站的管理員這項(xiàng)操作比較明確,為實(shí)現(xiàn)蒙古文的多項(xiàng)編輯功能,這種方案較為合理。
三、基于JTBC開(kāi)發(fā)蒙古文網(wǎng)站內(nèi)容管理系統(tǒng)的整體解決方案
JTBC網(wǎng)站內(nèi)容管理系統(tǒng)是一套可對(duì)現(xiàn)有模塊進(jìn)行擴(kuò)充與克隆的網(wǎng)站系統(tǒng)核心,采取語(yǔ)言/代碼/程序 兩兩分離的技術(shù)模式,全面使用了模板包與語(yǔ)言包結(jié)構(gòu),特別適合多語(yǔ)種網(wǎng)站的開(kāi)發(fā)。JTBC系統(tǒng)具有完備的后臺(tái)管理功能,前臺(tái)頁(yè)面的組織主要通過(guò)調(diào)用模板來(lái)實(shí)現(xiàn),語(yǔ)種的變換由語(yǔ)言包來(lái)實(shí)現(xiàn)?;贘TBC系統(tǒng)開(kāi)發(fā)蒙古文網(wǎng)站內(nèi)容管理系統(tǒng)主要的工作有:蒙古文語(yǔ)言包的配置、蒙古文調(diào)用模板的制作、后臺(tái)管理系統(tǒng)蒙古文化的實(shí)現(xiàn)以及蒙古文后臺(tái)編輯系統(tǒng)的實(shí)現(xiàn)。
(一)蒙古文語(yǔ)言包的配置。JTBC系統(tǒng)中所有文字的使用都是通過(guò)調(diào)用語(yǔ)言包中的標(biāo)簽來(lái)實(shí)現(xiàn)的,因此實(shí)現(xiàn)蒙古文的調(diào)用只要在語(yǔ)言包中配置相應(yīng)的蒙古文標(biāo)簽即可,涉及的配置文件主要有三個(gè)方面:
mon/language/sel_lng.jtbc文件語(yǔ)系配置文件,添加語(yǔ)系首先要在此文件中進(jìn)行配置。此文件為XML格式,需要在及標(biāo)記中配置蒙古文選擇標(biāo)簽。
2.Admin/common/language/guide.jtbc文件:此文件為后臺(tái)管理系統(tǒng)的語(yǔ)言文件,其中有語(yǔ)系選擇項(xiàng),需要在及中添加蒙古文語(yǔ)系選項(xiàng)。
3.各模塊的語(yǔ)言文件:后臺(tái)所有模塊的語(yǔ)言文件,都是XML格式,存儲(chǔ)在后臺(tái)系統(tǒng)及各模塊的common/language/目錄下,后綴名為.jtbc。
關(guān)于配置文件的具體配置方法可參看JTBC系統(tǒng)幫助。
(二)蒙古文調(diào)用模板的制作。JTBC系統(tǒng)的頁(yè)面組織主要是通過(guò)調(diào)用模板來(lái)實(shí)現(xiàn),網(wǎng)站內(nèi)容根據(jù)調(diào)用模板的規(guī)則進(jìn)行顯示。制作蒙古文調(diào)用模板的關(guān)鍵問(wèn)題是蒙古文的顯示和如何按照蒙古文的書(shū)寫(xiě)格式進(jìn)行排版。建議標(biāo)題、logo等靜態(tài)內(nèi)容可以采用圖片法,動(dòng)態(tài)文本內(nèi)容采用字體嵌入法。蒙古文的排版問(wèn)題鑒于目前主流瀏覽器尚不支持CSS3的writing-mode:tb-lr屬性,因此采用CSS+JavaScript相結(jié)合的方式進(jìn)行處理。其中CSS樣式使用writing-mode:tb-rl屬性使蒙古文從右到左顯示,然后利用JavaScript程序?qū)⑽谋咀笥一Q,實(shí)現(xiàn)蒙古文自上而下、從左到右的顯示。JavaScript程序算法思想為:逐一讀取文本內(nèi)容,遇換行符截取進(jìn)行左右互換。
(三)后臺(tái)管理系統(tǒng)蒙古文化。JTBC系統(tǒng)的后臺(tái)管理系統(tǒng)采用模塊化設(shè)計(jì),進(jìn)入相應(yīng)的管理系統(tǒng)則調(diào)用該系統(tǒng)模塊的模板包及語(yǔ)言包呈現(xiàn)管理界面。后臺(tái)管理系統(tǒng)蒙古文化只要修改各模塊的模板包及語(yǔ)言包即可。模板文件存儲(chǔ)于后臺(tái)系統(tǒng)及各模塊的common/template/目錄下,后綴名為.jtbc。JTBC系統(tǒng)的模板多以表格方式制作,為了便于布局,建議采用了Div+CSS方式進(jìn)行了改寫(xiě)。利用writing-mode:tb-rl屬性進(jìn)行豎排。此項(xiàng)工作涉及多個(gè)模板文件,工作量較大,但只要掌握了語(yǔ)言標(biāo)簽與鏈接方式,就可以按照自己的意愿進(jìn)行個(gè)性化的修改了。語(yǔ)言包的配置之前已經(jīng)介紹,這里不再重復(fù)。
(四)蒙古文后臺(tái)編輯系統(tǒng)的實(shí)現(xiàn)。在JTBC系統(tǒng)中,Web編輯器采用的是TinyMce,TinyMce是一個(gè)輕量級(jí)的基于瀏覽器的編輯器,由JavaScript寫(xiě)成。TinyMce不支持蒙古文自上而下、從左到右的書(shū)寫(xiě)格式,因此,想要實(shí)現(xiàn)蒙古文所見(jiàn)即所得的后臺(tái)編輯本文采用結(jié)合ActiveX控件的方式。TinyMce支持插件開(kāi)發(fā),本文提出由ActiveX控件實(shí)現(xiàn)蒙古文所見(jiàn)即所得的編輯,而后以調(diào)用插件的方式將TinyMce與ActiveX控件進(jìn)行結(jié)合?;贏ctiveX控件的蒙古文編輯目前研究已比較成熟,這里不過(guò)多討論。
Web編輯器與蒙古文控件的交互主要指蒙古文文本信息的相互傳遞??丶械拿晒盼奈谋拘枰獋鬟f到Web編輯器中顯示、保存,Web編輯器中的蒙古文文本需要傳遞到控件中進(jìn)行編輯。TinyMce通過(guò)插件調(diào)用ActiveX蒙古文編輯控件,控件運(yùn)行在客戶端,其屬性值不能直接提交給服務(wù)器,我們利用表單進(jìn)行數(shù)據(jù)傳遞。ActiveX控件屬性通過(guò)表單的ONSUBMIT事件,賦值給表單的某一域后再提交給服務(wù)器。在TinyMce插件的顯示頁(yè)面中我們創(chuàng)建表單,定義一隱含域。在表單的ONSUBMIT事件中利用腳本將控件的文本屬性值傳遞給服務(wù)器了。在服務(wù)器端我們利用JavaScript腳本進(jìn)行蒙古文的豎顯。對(duì)于控件獲取Web編輯器的蒙古文信息,直接利用變量賦值就可以了。
四、結(jié)束語(yǔ)
本文針對(duì)基于JTBC系統(tǒng)開(kāi)發(fā)蒙古文網(wǎng)站內(nèi)容管理系統(tǒng)的各個(gè)問(wèn)題進(jìn)行論述,提出利用字體嵌入技術(shù)解決蒙古文的字體顯示;利用CSS結(jié)合JavaScript技術(shù)實(shí)現(xiàn)蒙古文的布局;利用ActiveX控件結(jié)合TinyMceWeb編輯器實(shí)現(xiàn)蒙古文所見(jiàn)即所得的后臺(tái)編輯以及通過(guò)語(yǔ)言包、模板包實(shí)現(xiàn)JTBC后臺(tái)管理系統(tǒng)的蒙古文化的整體解決方案。為蒙古文網(wǎng)站內(nèi)容管理系統(tǒng)的開(kāi)發(fā)提出了又一種思路。隨著信息技術(shù)的發(fā)展,相信對(duì)蒙古文的支持會(huì)越來(lái)越完善,蒙古族悠久的文明、燦爛的文化也會(huì)越來(lái)越多的為世人所知。
參考文獻(xiàn):
[1]蒙古族簡(jiǎn)史.北京:民族出版社[M],2009
關(guān)鍵詞:MVC NHibernate 開(kāi)發(fā)框架
中圖分類號(hào):TN 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2012)02-0088-02
1、引言
軟件在開(kāi)發(fā)過(guò)程中,如果沒(méi)有一個(gè)好的設(shè)計(jì)模式和開(kāi)發(fā)框架,則需要編寫(xiě)大量的基礎(chǔ)代碼,這無(wú)疑降低了開(kāi)發(fā)效率;同時(shí),從基礎(chǔ)源代碼著手開(kāi)發(fā)的套裝軟件或定制軟件往往都具有較高的耦合度,維護(hù)困難。因此,開(kāi)發(fā)人員逐漸把軟件開(kāi)發(fā)的重點(diǎn)從數(shù)據(jù)結(jié)構(gòu)和算法轉(zhuǎn)向設(shè)計(jì)模式和開(kāi)發(fā)框架上。
MVC(Model-View-Controller)是目前軟件開(kāi)發(fā)中廣泛采用的一種設(shè)計(jì)模式。它把一個(gè)Web應(yīng)用分離為模型、視圖和控制器三個(gè)部分,使得系統(tǒng)結(jié)構(gòu)清晰,利于維護(hù)和擴(kuò)展。NHibernate是Microsoft .NET的ORM持久化框架,從Java的Hibernate項(xiàng)目移植而來(lái)。NHibernate框架從數(shù)據(jù)庫(kù)底層來(lái)持久化.Net對(duì)象到關(guān)系型數(shù)據(jù)庫(kù),使軟件代碼僅僅和對(duì)象關(guān)聯(lián),從而擺脫了SQL、和事務(wù)、緩存等底層開(kāi)發(fā)。本文在分析目前主流開(kāi)發(fā)框架的基礎(chǔ)上,將MVC設(shè)計(jì)模式與NHibernate框架有效整合,來(lái)降低系統(tǒng)總體架構(gòu)的藕合度和業(yè)務(wù)模型的開(kāi)發(fā)難度。
2、主流的開(kāi)發(fā)框架
2.1 SSH開(kāi)發(fā)框架
SSH開(kāi)發(fā)框架是指在J2EE平臺(tái)下融合了Struts、Spring和Hibernate的開(kāi)發(fā)框架,其體系結(jié)構(gòu)如圖1所示。
其中,Struts是典型的基于MVC設(shè)計(jì)模式的框架,主要用于表示層的構(gòu)建,具體實(shí)現(xiàn)是通過(guò)控制器將表現(xiàn)邏輯和業(yè)務(wù)邏輯解藕,以提高系統(tǒng)的可維護(hù)性、可擴(kuò)展性和可重用性;Spring是一個(gè)模塊化的框架,主要負(fù)責(zé)業(yè)務(wù)邏輯層的構(gòu)建,允許開(kāi)發(fā)人員自由選擇適合的模塊進(jìn)行開(kāi)發(fā);Hibernate是一個(gè)開(kāi)放源代碼的對(duì)象關(guān)系映射框架,主要負(fù)責(zé)持久層的構(gòu)建,對(duì)JDBC進(jìn)行了輕量級(jí)的對(duì)象封裝,支持開(kāi)發(fā)人員使用對(duì)象編程來(lái)操縱數(shù)據(jù)庫(kù)。
2.2 WebForm三層開(kāi)發(fā)框架
在.NET平臺(tái)下,本身就是一個(gè)基于事件響應(yīng)的Web開(kāi)發(fā)框架,但是結(jié)構(gòu)單一、層次不夠分明。因此,在客戶端與數(shù)據(jù)庫(kù)之間加入一個(gè)“中間層”(即組件層),出現(xiàn)了三層開(kāi)發(fā)框架,如圖2所示。
其中,表示層是展現(xiàn)給用戶的界面,即用戶在使用一個(gè)系統(tǒng)時(shí)的所見(jiàn)所得;業(yè)務(wù)邏輯層實(shí)現(xiàn)對(duì)數(shù)據(jù)層的操作,完成對(duì)數(shù)據(jù)業(yè)務(wù)的邏輯處理;數(shù)據(jù)訪問(wèn)層直接操作數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)的增加、刪除和更新等。
2.3 MVC開(kāi)發(fā)框架
MVC是微軟開(kāi)發(fā)的一個(gè)實(shí)現(xiàn)MVC設(shè)計(jì)模式的Web開(kāi)發(fā)框架,由Castle的Monorail(一種MVC Web開(kāi)發(fā)框架)演變而來(lái),其結(jié)構(gòu)如圖3所示。
其中視圖可以通過(guò)在ASPX頁(yè)面中開(kāi)發(fā)用戶接口來(lái)實(shí)現(xiàn);控制器的功能在邏輯功能代碼中實(shí)現(xiàn);模型通常與應(yīng)用系統(tǒng)的業(yè)務(wù)部分和數(shù)據(jù)庫(kù)對(duì)應(yīng)。
以上三種主流開(kāi)發(fā)框架中,J2EE平臺(tái)的SSH開(kāi)發(fā)框架在大型項(xiàng)目開(kāi)發(fā)過(guò)程中比.NET平臺(tái)的開(kāi)發(fā)框架具有更大的優(yōu)勢(shì):
(1)易于進(jìn)行單元測(cè)試和測(cè)試驅(qū)動(dòng)開(kāi)發(fā);
(2)避免了WebForm中大量視圖狀態(tài)所導(dǎo)致的頁(yè)面反應(yīng)緩慢;
(3)模塊化結(jié)構(gòu),易于大型項(xiàng)目的團(tuán)隊(duì)化開(kāi)發(fā)。
因此,本文借鑒SSH開(kāi)發(fā)框架的優(yōu)勢(shì),對(duì).NET平臺(tái)下的開(kāi)發(fā)框架進(jìn)行擴(kuò)充,設(shè)計(jì)實(shí)現(xiàn)了一個(gè).NET平臺(tái)下的多層開(kāi)發(fā)框架。
3、.NET平臺(tái)下基于MVC和NHibernate的開(kāi)發(fā)框架
3.1 總體框架
該開(kāi)發(fā)框架利用NHibernate框架構(gòu)建了持久層,并借鑒了WebForm開(kāi)發(fā)框架分層結(jié)構(gòu)設(shè)計(jì),在持久層與控制器之間增加了中間層,對(duì)數(shù)據(jù)和功能組件進(jìn)行了封裝,提供了統(tǒng)一接口供控制器調(diào)用。其體系結(jié)構(gòu)如圖4所示。
3.2 分層描述
3.2.1 模塊管理層
由于該框架是主要針對(duì)大型項(xiàng)目的開(kāi)發(fā),因此,各功能模塊之間要求一定的解耦。本層主要實(shí)現(xiàn)各粗粒度模塊間的相互調(diào)用以及對(duì)外提供接口。
3.2.2 表示層
表示層用于呈現(xiàn)客戶端的用戶視圖,負(fù)責(zé)從用戶接收命令,請(qǐng)求和數(shù)據(jù)傳遞給控制器,并最終將結(jié)果封裝后呈現(xiàn)給用戶。
該框架為視圖提供了自定義的視圖引擎、模板和CSS樣式表。根據(jù)視圖引擎和視圖對(duì)象的不同,視圖可以呈現(xiàn)不同的頁(yè)面類型和內(nèi)容。同時(shí),框架還可以應(yīng)用JQuery技術(shù),用來(lái)實(shí)現(xiàn)頁(yè)面的異步顯示和美化。
3.2.3 控制器
Controller調(diào)用應(yīng)用接口層接口對(duì)數(shù)據(jù)進(jìn)行操作;同時(shí),調(diào)用相應(yīng)的組件功能,執(zhí)行用戶通過(guò)視圖傳遞的相關(guān)指令,并將封裝后的視圖類傳遞給視圖。
3.2.4 應(yīng)用接口層
該層針對(duì)數(shù)據(jù)訪問(wèn)接口和業(yè)務(wù)邏輯接口,將其封裝后供控制器進(jìn)行調(diào)用,本身不包含任何業(yè)務(wù)邏輯。
3.2.5 業(yè)務(wù)邏輯層
系統(tǒng)的核心層,所有與數(shù)據(jù)訪問(wèn)無(wú)關(guān)的業(yè)務(wù)邏輯都內(nèi)聚在該層,并向應(yīng)用接口層提供業(yè)務(wù)邏輯接口。
3.2.6 數(shù)據(jù)訪問(wèn)層
該層通過(guò)持久層提供的NHibernate API函數(shù)或者SQL語(yǔ)句,直接操作持久化類,對(duì)數(shù)據(jù)進(jìn)行增添、刪除、修改、更新、查找等操作,并向應(yīng)用接口層提供數(shù)據(jù)訪問(wèn)接口。
3.2.7 持久層
所謂持久化,即把數(shù)據(jù)保存到可永久保存的存儲(chǔ)設(shè)備中。該開(kāi)發(fā)框架在持久層中建立一個(gè)持久化類,它是數(shù)據(jù)庫(kù)表的一個(gè)映射。持久化類和NHibernate API(指Session類)關(guān)聯(lián)后,就具有了持久化能力。持久化類通過(guò)Session類進(jìn)行裝載、保存、創(chuàng)建或查詢(可采用HQL或其他方式以面向?qū)ο蠓绞綄?duì)持久化類進(jìn)行查詢)。對(duì)持久化類做的任何修改都會(huì)在Session刷新(flush)時(shí)被持久化到對(duì)應(yīng)數(shù)據(jù)庫(kù)表中。
3.2.8 數(shù)據(jù)源
開(kāi)發(fā)框架除了支持常用的關(guān)系型數(shù)據(jù)庫(kù),如SQL Server,Oracle,DB2等,還支持對(duì)其他系統(tǒng)模塊接口和數(shù)據(jù)源的調(diào)用。
4、結(jié)語(yǔ)
綜上所述,MVC設(shè)計(jì)模式使軟件開(kāi)發(fā)過(guò)程更加規(guī)范和精煉,能產(chǎn)生易復(fù)用、易擴(kuò)展、易維護(hù)的程序代碼。NHibernate框架使開(kāi)發(fā)人員從枯燥的SQL語(yǔ)句中解放出來(lái),將更多的精力投入到業(yè)務(wù)邏輯的實(shí)現(xiàn)上。本文將MVC設(shè)計(jì)模式和NHibernate框架進(jìn)行整合,提出了一個(gè).NET平臺(tái)下的多層開(kāi)發(fā)框架,并詳細(xì)設(shè)計(jì)了框架中各層的功能。可以發(fā)現(xiàn),該開(kāi)發(fā)框架增加了模型(Model)部分的重用性,降低了層與層之間耦合度,提高了系統(tǒng)的可維護(hù)性、可擴(kuò)充性和可移植性。
參考文獻(xiàn)
[1]陳龍.基于.NET平臺(tái)ORM技術(shù)-NHibernate的研究與應(yīng)用[D].長(zhǎng)春:長(zhǎng)春理工大學(xué),2006.
[2]趙廣利.基于NHibernate的數(shù)據(jù)持久化方案[J].計(jì)算機(jī)工程,2009,35(20).
[3]沈桂群.基于的MVC設(shè)計(jì)模式及實(shí)現(xiàn)[J].軟件開(kāi)發(fā)與設(shè)計(jì),2009(10).
關(guān)鍵詞:TMS320C5402;最小系統(tǒng);McBSP;人機(jī)接口
中圖分類號(hào):TN929.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-2374(2009)01-0120-02
TMS320C5402是TI公司54系列DSP芯片的典型代表,也是目前國(guó)內(nèi)DSP教材上介紹最多的芯片,本文所研制的實(shí)驗(yàn)系統(tǒng)就是建立在TMS320C5402的基礎(chǔ)上。本文的研究目的是為大專院校特別是高職院校提供一個(gè)功能完備、價(jià)格低廉、技術(shù)流行、能滿足教學(xué)和開(kāi)發(fā)雙重需求的DSP課程教學(xué)實(shí)驗(yàn)系統(tǒng)。
一、總體設(shè)計(jì)
本文的研究工作,考察了國(guó)內(nèi)外DSP技術(shù)在教學(xué)科研領(lǐng)域的應(yīng)用,認(rèn)真分析了TMS320C54x系列DSP課程實(shí)驗(yàn)教學(xué)的主要內(nèi)容,結(jié)合信號(hào)信息處理的新特點(diǎn),制定了基于TMS320C5402芯片的DSP實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)功能方框圖,如圖1所示:
本實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)以TI公司的DSP芯片TMS320C5402為核心,電路的選擇充分考慮了進(jìn)行DSP實(shí)驗(yàn)和開(kāi)發(fā)的需要。整個(gè)系統(tǒng)按照功能可以劃分為以DSP芯片為核心的最小系統(tǒng)電路和應(yīng)用電路兩大部分進(jìn)行設(shè)計(jì),最小系統(tǒng)電路主要包括電源電路、時(shí)鐘電路、復(fù)位電路、片外存儲(chǔ)器,自舉加載器及JTAG仿真電路等;應(yīng)用電路主要包括MCBSP串行通信(A/D和D/A)模塊,I/O端口應(yīng)用(液晶顯示和鍵盤)模塊等。通過(guò)硬件設(shè)計(jì)和軟件設(shè)計(jì),并把以上電路連接在一起使其成為一個(gè)完整的系統(tǒng),使該系統(tǒng)能開(kāi)設(shè)出DSP課程的常用實(shí)驗(yàn)和實(shí)訓(xùn)項(xiàng)目,并可以作為基本的開(kāi)發(fā)系統(tǒng)。
二、最小系統(tǒng)電路
最小系統(tǒng)模塊是使得DSP芯片TMS320C5402能夠工作的最精簡(jiǎn)模塊,它主要包括電源電路、復(fù)位電路、時(shí)鐘電路和存儲(chǔ)器接口電路。
(一)電源電路
本系統(tǒng)中除了DSP以外其他器件工作電壓為5V或3.3V,所以我們采用5V電源供電。VC5402所要的工作電壓分別是1.8V內(nèi)核電壓(CVDD)和3.3V I/O 電壓(DVDD),并且DSP對(duì)這兩種電源加電次序也有要求,理想情況下兩個(gè)電源同時(shí)加電,但是一般場(chǎng)合很難做到,這時(shí)應(yīng)先對(duì)CVDD加電,然后對(duì)DVDD上電。鑒于噪聲的簡(jiǎn)單性,我們通過(guò)TI公司提供的DSP專用電源芯片TPS73HD318來(lái)構(gòu)建電源電路,實(shí)現(xiàn)5V向3.3V和1.8V的電壓轉(zhuǎn)換,同時(shí)也避免了上電次序的問(wèn)題。
(二)復(fù)位電路
C5402的復(fù)位分為軟件復(fù)位和硬件復(fù)位,軟件復(fù)位是通過(guò)執(zhí)行指令實(shí)現(xiàn)芯片的復(fù)位,硬件復(fù)位是通過(guò)硬件電路實(shí)現(xiàn)芯片的復(fù)位,硬件復(fù)位有上電復(fù)位、手動(dòng)復(fù)位和自動(dòng)復(fù)位三種。本系統(tǒng)中,由于我們選擇了DSP專用的電源管理芯片TPS73HD318,該芯片本身可以提供寬度為200ms的低電平上電復(fù)位脈沖,為了使系統(tǒng)電路簡(jiǎn)單,所以不再設(shè)計(jì)自動(dòng)復(fù)位電路,手動(dòng)復(fù)位電路與與其他微機(jī)復(fù)位方法一樣,只是參數(shù)選擇要保證提供200ms左右的負(fù)脈沖。
(三)時(shí)鐘電路
為了實(shí)現(xiàn)DSP系統(tǒng)實(shí)時(shí)處理信號(hào)的效果,希望系統(tǒng)頻率越快越好。C5402最高可達(dá)1OOMHz工作頻率,如果仍采用傳統(tǒng)的2分頻或4分頻的方式,勢(shì)必要求外部頻率很高,這里我們采用了更加靈活的可編程PLL(Programmable Phase-Locked Loop)方式。
本系統(tǒng)中,外接晶體頻率為1OMHz,為了得到倍頻系數(shù)10,需設(shè)置時(shí)鐘模式寄存器CLKMD的值為9007h,引腳CLKMD1~CLKKMD3設(shè)計(jì)成001,則復(fù)位后VC5402的工作頻率是10×10=1OOMHz。
(四)片外存儲(chǔ)器
C5402的存儲(chǔ)空間可達(dá)192K×16bits,64K程序空間,64K數(shù)據(jù)空間,64KI/O空間。C5402片內(nèi)具有4K×16bits的ROM和16K×16bits的RAM。片內(nèi)POM和RAM可以根據(jù)PMST寄存器中的DROM、OVLY來(lái)靈活設(shè)置,使其映像在程序空間和數(shù)據(jù)空間。程序空間和數(shù)據(jù)空間未被映像的部分和64K的I/O空間全部在片外,用片外存儲(chǔ)器來(lái)補(bǔ)充。在實(shí)際的應(yīng)用中,應(yīng)該根據(jù)程序量的大小來(lái)選擇作為片外空間的存儲(chǔ)芯片的容量,以免造成不必要的浪費(fèi),本文選擇IS61LV25616AL(256K×16bits)作為程序存儲(chǔ)器的片外存儲(chǔ)芯片,選擇SST39LF200A(128K×16bits)的Flash作為數(shù)據(jù)存儲(chǔ)器的片外存儲(chǔ)芯片,以實(shí)現(xiàn)自舉加載,使C5402自成獨(dú)立系統(tǒng),圖2為硬件連接圖。
(五)JTAG仿真接口
在做實(shí)驗(yàn)時(shí),需要一個(gè)DSP仿真器,把在計(jì)算機(jī)上編譯并生成的執(zhí)行代碼下載到C5402芯片上,實(shí)現(xiàn)在線調(diào)試DSP硬件和軟件。仿真器有兩端接口,其中一端與計(jì)算機(jī)的并行口或USB口相連,這取決于仿真器的類型,另一端與DSP芯片的JTAG接口相連,這是一個(gè)14針的接口,需注意EMUO和EMU1腳應(yīng)接上拉電阻,推薦阻值為4.7k或10k。
三、應(yīng)用電路
(一)中斷模塊
DSP的中斷包括不可屏蔽中斷 和 ,外部中斷 ~
和軟中斷。中斷響應(yīng)實(shí)際是特殊的程序調(diào)用過(guò)程。當(dāng)滿足中斷響應(yīng)條件時(shí),相應(yīng)的中斷服務(wù)程序被調(diào)用。中斷的使用包括中斷設(shè)置和中斷服務(wù)程序設(shè)計(jì)。本系統(tǒng)只使用了 一個(gè)中斷管腳,其他外部中斷管腳都接高電平。在做中斷實(shí)驗(yàn)時(shí),可以通過(guò)按鈕開(kāi)關(guān)使腳接高電平或低電平,以給出中斷申請(qǐng)信號(hào)。
(二)McBSP模塊
在DSP應(yīng)用系統(tǒng)設(shè)計(jì)中必不可少的是各種數(shù)據(jù)傳輸接口的設(shè)計(jì)。與并行接口相比,串行接口的最大特點(diǎn)是減少了器件引腳數(shù)目,降低了接口設(shè)計(jì)復(fù)雜性。多數(shù)DSP芯片提供的是同步串口,TMS320C5402提供的多通道緩沖串口(McBSP)可以很方便地與編解碼芯片(CODEC)或串行ADC直接連接,使得電路的設(shè)計(jì)更加簡(jiǎn)捷。
TMS320C5402與TLC320AD50C硬件接口電路如圖3所示[1]。將TLC320AD50C的數(shù)字電源端DVDD接到3.3V電源,AVDD接到5V電源;管腳M/S經(jīng)過(guò)10K電阻上拉,將TLC320AD50C設(shè)置成主動(dòng)工作模式;選擇INP和INM作為ADC的輸入,將AUXP和AUXM接至模擬地;DAC的正相輸出經(jīng)過(guò)一階低通濾波后送給模擬設(shè)備,反相輸出不用;管腳FC接地,系統(tǒng)只能采用軟件方式申請(qǐng)觸發(fā)次通信模式;數(shù)據(jù)格式為15+1比特模式。輸入主時(shí)鐘MCLK為8.192MHz,采樣頻率選擇為8KHz,內(nèi)部PLL使能(控制寄存器4中的N=8)。通過(guò)寄存器設(shè)置,將TMS320C5402的FSX、FSR、CLKR、CLKX配置為外部輸人,TLC320AD50C的SCLK配置為內(nèi)部產(chǎn)生[2]。這樣數(shù)據(jù)接收/發(fā)送幀同步信號(hào)、移位時(shí)鐘信號(hào)均由TLC320AD50C產(chǎn)生。串行口的接收/發(fā)送過(guò)程受TLC320AD50C的控制。
(三)人機(jī)接口模塊
由于DSP并不具備人機(jī)界面,在實(shí)際使用過(guò)程中,需要為它提供一個(gè)人機(jī)界面,以便于觀察運(yùn)行結(jié)果或傳遞必要的控制信息。目前,DSP芯片的人機(jī)接口模塊大多數(shù)都用單片機(jī)來(lái)完成,這樣既增加開(kāi)發(fā)成本又使系統(tǒng)更加復(fù)雜。本系統(tǒng)的人機(jī)接口的成功實(shí)現(xiàn)為DSP芯片直接開(kāi)發(fā)人機(jī)借口模塊提供了可能。
本系統(tǒng)選用字符液晶顯示模塊LCM1602和同相三態(tài)雙向總線收發(fā)器74LS245,通過(guò)TMS320C5402的I/O口功能擴(kuò)展直接構(gòu)建DSP的晶顯示模塊;相應(yīng)的I/O操作口地址有兩種:讀狀態(tài)、寫(xiě)指令為0000H,讀數(shù)據(jù)、寫(xiě)數(shù)據(jù)為0001H。通過(guò)74HC573鎖存器擴(kuò)展的鍵盤由行鎖存器、列鎖存器和3×5矩陣式鍵盤組成[2];該鍵盤占用兩個(gè)I/O端口,分別為:行鎖存器為輸出口,作為寫(xiě)鍵盤端口;列鎖存器為輸入口,作為讀鍵盤端口,兩端口的地址分別為:讀鍵盤端口地址RKEYP=7FFFH,寫(xiě)鍵盤端口地址WKEYP=BFFFH。
(四)實(shí)驗(yàn)項(xiàng)目
本實(shí)驗(yàn)系統(tǒng)可以開(kāi)設(shè)出基礎(chǔ)實(shí)驗(yàn)和綜合實(shí)驗(yàn),還可以通過(guò)功能擴(kuò)展進(jìn)行簡(jiǎn)單產(chǎn)品開(kāi)發(fā)實(shí)訓(xùn)。通過(guò)基礎(chǔ)性實(shí)驗(yàn),可以讓學(xué)生進(jìn)行編程練習(xí),熟悉集成開(kāi)發(fā)環(huán)境CCS,掌握調(diào)試程序的一般方法,加深學(xué)生對(duì)TMS320C5402芯片的認(rèn)識(shí);通過(guò)綜合性實(shí)驗(yàn),可以加強(qiáng)學(xué)生對(duì)TMS320C5402芯片的全面了解,讓學(xué)生掌握外設(shè)和接口的使用方法,提高學(xué)生的綜合應(yīng)用能力,為開(kāi)發(fā)產(chǎn)品打下良好基礎(chǔ);通過(guò)產(chǎn)品開(kāi)發(fā)實(shí)例的訓(xùn)練,可以讓學(xué)生了解開(kāi)發(fā)產(chǎn)品的基本過(guò)程和基本方法,培養(yǎng)學(xué)生分析問(wèn)題解決問(wèn)題的能力,為今后從事產(chǎn)品開(kāi)發(fā)打下良好基礎(chǔ)。
本系統(tǒng)的實(shí)驗(yàn)項(xiàng)目主要包括:外部標(biāo)志輸出引腳(XF)實(shí)驗(yàn)、轉(zhuǎn)移控制輸入引腳實(shí)驗(yàn)、Boot及flash讀寫(xiě)實(shí)驗(yàn)、定時(shí)器實(shí)驗(yàn)、中斷實(shí)驗(yàn)、FIR實(shí)驗(yàn)、IIR實(shí)驗(yàn)、語(yǔ)音通信實(shí)驗(yàn)、數(shù)據(jù)采集實(shí)驗(yàn)、正弦波產(chǎn)生實(shí)驗(yàn)、LCD 顯示實(shí)驗(yàn)、鍵盤驅(qū)動(dòng)實(shí)驗(yàn)等實(shí)驗(yàn)項(xiàng)目。這些實(shí)驗(yàn)項(xiàng)目完全能夠滿足DSP這門課程的實(shí)驗(yàn)教學(xué),同時(shí),還可以利用本系統(tǒng)進(jìn)行相關(guān)的產(chǎn)品開(kāi)發(fā)。
四、結(jié)語(yǔ)
本文所介紹的DSP實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng),接口電路簡(jiǎn)單,編程方便,且該實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)已經(jīng)通過(guò)硬件和軟件調(diào)試,系統(tǒng)工作穩(wěn)定,所以,本系統(tǒng)有一定的推廣應(yīng)用價(jià)值。
參考文獻(xiàn)
[1]李利.DSP原理及應(yīng)用[M].北京:中國(guó)水利水電出版社,2004.