• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Mobile—C移動(dòng)代理函數(shù)庫(kù)的封裝機(jī)制

      2015-08-28 04:10:14余志永包艷青
      卷宗 2015年8期

      余志永 包艷青

      摘 要:本文簡(jiǎn)述了Mobile-C與Ch的優(yōu)勢(shì),詳細(xì)介紹了Mobile-C移動(dòng)代理函數(shù)庫(kù)的原理機(jī)制與封裝調(diào)用。通過Mobile-C移動(dòng)代理來實(shí)現(xiàn)控制時(shí),可以在運(yùn)行中動(dòng)態(tài)地切換成新的算法,函數(shù)庫(kù)的使用使得代理傳送的代碼量大大減少,減少網(wǎng)絡(luò)延時(shí),同時(shí)使程序的結(jié)構(gòu)簡(jiǎn)單明了,為復(fù)雜控制的實(shí)現(xiàn)做好基礎(chǔ)。

      關(guān)鍵詞:Mobile-C;Ch;移動(dòng)代理;函數(shù)庫(kù)封裝

      Mobile-C是一個(gè)基于FIPA標(biāo)準(zhǔn)的多代理平臺(tái),是專為實(shí)現(xiàn)硬件的實(shí)時(shí)連接和資源受限制的應(yīng)用而設(shè)計(jì)的。它支持智能機(jī)電系統(tǒng)和嵌入式系統(tǒng)中的C/C++的移動(dòng)代理。移動(dòng)代理是一種可以在不同的執(zhí)行環(huán)境之間移動(dòng)的軟件組件,可以在運(yùn)行時(shí)動(dòng)態(tài)地創(chuàng)建,發(fā)送到遠(yuǎn)程系統(tǒng)執(zhí)行任務(wù)。一個(gè)移動(dòng)代理在遠(yuǎn)程系統(tǒng)運(yùn)行時(shí),可以動(dòng)態(tài)地改變運(yùn)行著的程序的算法,而無須中斷、重新編譯和啟動(dòng)遠(yuǎn)程系統(tǒng),特別適用于動(dòng)態(tài)變化的環(huán)境。

      Mobile-C作為普通的移動(dòng)代理平臺(tái),能夠應(yīng)用到許多領(lǐng)域,適用于網(wǎng)絡(luò)智能機(jī)電一體化和嵌入式系統(tǒng)。例如,柔性自動(dòng)化系統(tǒng)[2]。還可用于移動(dòng)機(jī)器人的實(shí)時(shí)控制[3],實(shí)現(xiàn)算法間的切換和參數(shù)的修改。Mobile-C庫(kù)使Mobile-C代理機(jī)構(gòu)可以嵌入到支持C/C++移動(dòng)代理的程序中去。另外,通過Mobile-C API函數(shù),用戶可以完全控制嵌入到程序中的Mobile-C代理機(jī)構(gòu)。因此,Mobile-C庫(kù)不僅為分布式應(yīng)用提供了有效的代碼移動(dòng)性,而且還促進(jìn)了多代理系統(tǒng)的開發(fā),使其可以容易地與多種硬件設(shè)備交互。

      Ch是一個(gè)支持跨平臺(tái)的,具有強(qiáng)大擴(kuò)展功能的C/C++程序的解釋器,即無需編譯即可執(zhí)行,無需修改程序即可跨平臺(tái)執(zhí)行。Ch作為Mobile-C的執(zhí)行引擎,使得Mobile-C具有Ch的所有優(yōu)點(diǎn)。Ch支持ISO 1990C標(biāo)準(zhǔn)的所有功能和ISO C99的大部分特性,還支持C++中基于對(duì)象的編程。如用C語言作為移動(dòng)代理的代碼語言,可以容易的實(shí)現(xiàn)與底層硬件的交互,特別適用于機(jī)電一體化和嵌入式系統(tǒng)。而其它移動(dòng)代理平臺(tái),如:Mole、Aglets、Concordia、JADE,只支持Java開發(fā),Java語言又是不支持底層硬件開發(fā)。因此,Mobile-C在機(jī)電系統(tǒng)和嵌入式系統(tǒng)中很有優(yōu)勢(shì)。

      1 Mobile-C移動(dòng)代理函數(shù)庫(kù)的原理機(jī)制

      首先,介紹Ch的函數(shù)庫(kù)調(diào)用的原理機(jī)制,它和Mobile-C下的相同。其次說明各個(gè)文件的作用。

      Ch SDK的開發(fā)可以通過完全新建源代碼來實(shí)現(xiàn),也可以通過對(duì)現(xiàn)有的二進(jìn)制靜態(tài)庫(kù)、動(dòng)態(tài)庫(kù)或共享庫(kù)進(jìn)行二次封裝來實(shí)現(xiàn),從而加快開發(fā)的進(jìn)度。本文中的控制代碼是源代碼,沒有現(xiàn)成的庫(kù)可以利用,因此選用第一種方式實(shí)現(xiàn)。下面先介紹Mobile-C移動(dòng)代理函數(shù)庫(kù)的原理機(jī)制。如下圖1中以主程序的main

      函數(shù)中調(diào)用func1

      函數(shù)為例,來說明Ch中對(duì)C函數(shù)調(diào)用的過程。如圖所示,Ch空間指調(diào)用func1

      函數(shù)的程序空間由主程序和chf文件組成;C空間指func1

      函數(shù)和接口函數(shù)所封裝得到的函數(shù)庫(kù)的空間,由func1.c文件和func1_chdl.c文件封裝而成。

      函數(shù)時(shí),首先調(diào)用fun1.chf文件,建立句柄打開動(dòng)態(tài)庫(kù),然后打開相應(yīng)的函數(shù),把Ch空間的參數(shù)傳遞到C空間并運(yùn)行庫(kù)函數(shù),最后傳回返回值并關(guān)閉句柄。動(dòng)態(tài)庫(kù)是由func1.c文件和func1_chdl.c文件封裝成的動(dòng)態(tài)函數(shù)庫(kù)libfun1.dl;也可以先將fun1c.c文件封裝成動(dòng)態(tài)庫(kù)func1.dll,然后將封裝func1.dll時(shí)生成的靜態(tài)庫(kù)文件func1.lib和func1_chdl.c封裝成動(dòng)態(tài)函數(shù)庫(kù)libfunc1.dl。

      需要封裝多個(gè)函數(shù)時(shí),可以將各個(gè)函數(shù)文件funcn.c和funcn_chdl.c文件封裝成一個(gè)動(dòng)態(tài)庫(kù)libfunc.dl;也可以用一個(gè)func.c文件包含各個(gè)函數(shù),一個(gè)func_chdl.c文件包含各個(gè)函數(shù)接口封裝成一個(gè)動(dòng)態(tài)庫(kù)。前者每個(gè)函數(shù)有一個(gè)同名的chf文件,后者需要一個(gè)包含各個(gè)函數(shù)所需chf文件內(nèi)容的chf文件,但是文件名需要和第一個(gè)函數(shù)的名相同,而且必須先調(diào)用第一個(gè)函數(shù)后才能調(diào)用其它的函數(shù)。當(dāng)封裝的函數(shù)較多時(shí)前者的Makefile文件復(fù)雜,后者的Makefile文件則不因封裝函數(shù)的多少而變復(fù)雜。因此,選用后者來實(shí)現(xiàn)移動(dòng)代理函數(shù)的封裝,同時(shí)減少了chf文件的個(gè)數(shù),優(yōu)化了程序結(jié)構(gòu)。

      下面的圖2更形象的描繪出Ch SDK中各個(gè)文件的作用。

      2 總結(jié)

      使用Mobile-C,可以實(shí)現(xiàn)對(duì)終端代理的實(shí)時(shí)控制,動(dòng)態(tài)地切換算法,控制方式靈活方便快捷,程序算法調(diào)試簡(jiǎn)便,封裝成函數(shù)庫(kù)以后程序結(jié)構(gòu)優(yōu)化有利于開發(fā)。移動(dòng)代理技術(shù)的發(fā)展方向是分布式復(fù)雜系統(tǒng)的開發(fā),它能增強(qiáng)分布式系統(tǒng)的設(shè)計(jì)和分析。

      參考文獻(xiàn)

      [1] Mobile-C. A Multi-Agent Platform for Mobile C/C++ Agents[EB/OL].(2001-08-09)[2010-12-10] http://www.mobilec.org.

      [2] NESTINGER S S, CHEN B, CHENG H H. A Mobile Agent-Based Framework for Flexible Automation Systems[J]. IEEE/ASME TRANSACTIONS ON MECHATRONICS, 2010, 15(6): 942-951.

      [3] CHOU Y C, KO D, CHENG H H. An embeddable mobile agent platform supporting runtime code mobility, interaction and coordination of mobile agents and host systems[J]. Information and Software Technology, 2010, 52: 185-196.

      [4] CHENG H H. Scientific computing in the Ch programming language[J]. Scientific Programming, 1993, 2(3): 49-75.

      [5] CHENG H H. Ch: A C/C++ interpreter for script computing[J]. C/C++ Users Journal, 2006, 24(1): 6-12.

      [6] CHENG H H. Ch – an Embeddable C/C++ Interpreter[EB/OL]. [2009-04-15] http://www.softintegration.com.

      [7] CHOU Y C, KO D, CHENG H H. Mobile agent-based computational steering for distributed applications[J]. Concurrency and Computation: Practice and Experience, 2009, 21(18): 2377-2399.

      海林市| 通许县| 桃园县| 襄垣县| 秀山| 宁都县| 玉龙| 宁国市| 甘肃省| 兴山县| 林口县| 资溪县| 永泰县| 温泉县| 富蕴县| 佛学| 兴业县| 梁平县| 宝山区| 壶关县| 肇庆市| 阜新| 六枝特区| 林口县| 沽源县| 呼伦贝尔市| 蒙城县| 南安市| 自贡市| 凤冈县| 刚察县| 贵溪市| 三台县| 财经| 额尔古纳市| 商洛市| 浮梁县| 乐安县| 岑溪市| 珠海市| 朝阳市|