亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于最優(yōu)解空間樹的SCPI解析器設(shè)計(jì)

        2014-04-29 18:29:41于魯波
        電子世界 2014年19期

        于魯波

        【摘要】提出一種基于解空間樹的通用SCP I命令解析器實(shí)現(xiàn)方案。先將SCPI命令集標(biāo)識(shí)成一棵解空間樹,給樹中每個(gè)節(jié)點(diǎn)賦予不同的屬性。進(jìn)行命令解析時(shí),采用貪心算法,搜索解空間樹的路徑,尋找最優(yōu)的匹配解。試驗(yàn)證明針對(duì)SCPI規(guī)范的各種等效變種命令,該算法具有非常好的普適性。

        【關(guān)鍵詞】SCPI命令;解空間樹;貪心算法;SCPI解析器

        1.引言

        SCPI( Standard Commands for Programmable Instruments)是一種標(biāo)準(zhǔn)化的程控儀器編程語言,采用標(biāo)準(zhǔn)語法格式描述儀器功能,為所有儀器儀表提供了一個(gè)廣泛兼容的編程和數(shù)據(jù)使用環(huán)境。SCPI命令具有縱向兼容性,橫向兼容性和功能兼容性,最大限度的保證了SCPI命令在控制儀器中的靈活性。根據(jù)SCPI99[1]規(guī)范,SCPI指令同時(shí)具有長命令名和短命令名,命令中某些節(jié)點(diǎn)可以作為缺省節(jié)點(diǎn)忽略,導(dǎo)致SCPI命令使用靈活,會(huì)產(chǎn)生大量的變形等效命令。如何將這些等效命令編譯成同一條執(zhí)行指令是SCPI解析器設(shè)計(jì)的一個(gè)難點(diǎn)。

        目前常見的SCPI解析器,如文獻(xiàn)[2]將SCPI指令提前寫入應(yīng)用程序,如果修改SCPI指令或者將SCPI解析器移植到其他程序,就需要重新修改程序,使用不靈活。文獻(xiàn)[3]雖然提出用XML文件描述SCPI指令,但是在描述SCPI指令的時(shí)候,沒有充分發(fā)揮XML的自描述性和樹形結(jié)構(gòu),因而無法識(shí)別全部的等效命令。本文將解空間樹這一技術(shù)引入到SCPI解析器設(shè)計(jì),通過設(shè)計(jì)相應(yīng)的貪心算法,解決了SCPI的等效命令問題。

        本文結(jié)構(gòu)如下,第2節(jié)介紹SCPI語法和解空間樹的基本概念與模型;第3節(jié)提出基于解空間樹的SCPI解析器生成算法;第4節(jié)最后介紹研究意義和進(jìn)一步的研究方向。

        2.SCPI語法與解空間樹

        2.1 SCPI語法簡介

        SCPI是一個(gè)基于標(biāo)準(zhǔn)IEEE488.2建立的,適合所有儀器的命令集。其主要目的是為了使相同功能具有相同的程控命令,以實(shí)現(xiàn)程控命令的通用性。整個(gè)SCPI命令可以分為兩個(gè)部分:一部分IEEE488.2公用命令,以“* ”開頭,要求儀器必須執(zhí)行;另一部分SCPI儀器特定控制命令。特定命令是以樹型結(jié)構(gòu)組織的字符串集,以“:”開頭, 節(jié)點(diǎn)之間也是以“:”間隔。每個(gè)節(jié)點(diǎn)的字符串都有長格式和短格式兩種寫法, 而且根據(jù)儀器需要, 部分命令還會(huì)有獨(dú)立的后綴。對(duì)于缺省節(jié)點(diǎn),還可以省略。SCPI命令使用一個(gè)相似于文件系統(tǒng)的結(jié)構(gòu),這種命令結(jié)構(gòu)被稱為命令樹。最靠近頂端的命令稱為根命令,其次為第一級(jí)命令,第二級(jí)命令等。因而,對(duì)于一條特定的SCPI命令必須根據(jù)一個(gè)特定的路徑才能到達(dá)下一層命令。

        2.2 解空間樹

        解空間樹又稱為狀態(tài)樹。 它是一棵樹,在這棵樹中,包含著問題的所有解。對(duì)于給定的問題,如何在解空間樹上尋找問題的最優(yōu)或者次優(yōu)解,一般需要用到貪心算法作為空間樹回朔的依據(jù)。解空間樹的解是一條從根節(jié)點(diǎn)到問題解葉節(jié)點(diǎn)的路徑。SCPI命令本身以命令樹的形式存在,因而,給定一條SCPI命令字符串,能否完全在命令樹上找到其對(duì)應(yīng)的解路徑,成為解析SCPI命令的關(guān)鍵。在本文中,將XML文件引入到SCPI解析中,采用XML描述系統(tǒng)的SCPI命令集。解析該XML文件,在計(jì)算機(jī)內(nèi)存中形成一棵解空間樹。對(duì)于從程控端收到的SCPI指令,通過搜索該解空間樹,判斷接收到的SCPI命令是否合法。對(duì)于合法的SCPI指令編譯其執(zhí)行碼,執(zhí)行SCPI命令。不合法的SCPI命令則返回相應(yīng)的編譯錯(cuò)誤。

        3.SCPI解空間樹算法實(shí)現(xiàn)

        3.1 SCPI命令配置文件

        通過編寫不同的SCPI命令腳本可以生成不同的SCPI指令集。SCPI命令腳本采用XML描述SCPI指令,不同命令節(jié)點(diǎn)分配不同的屬性。這樣一棵命令樹就形成了一個(gè)解空間,通過搜索解空間樹,來解釋不同的命令。SCPI命令配置文件部分如圖1所示。

        圖1 SCPI命令配置腳本

        3.2 腳本節(jié)點(diǎn)屬性

        SCPI命令配置腳本采用XML語言描述。由于XML具有非常突出的自描述性,為動(dòng)態(tài)配置SCPI指令集提供了方便。

        配置腳本根節(jié)點(diǎn)為“scpi”,子命令節(jié)點(diǎn)全部為“cmd”。根節(jié)點(diǎn)僅有一個(gè)“version”屬性,表示此SCPI配置腳本當(dāng)前的版本號(hào),用于向上兼容SCPI解析器引擎?!癱md”節(jié)點(diǎn)有5種節(jié)點(diǎn)屬性,具體如下:

        1)name:SCPI命令符。配合cmd節(jié)點(diǎn)層次,用于區(qū)分不同的SCPI命令。

        2)type:SCPI命令類型。命令符在SCPI命令串中是否為缺省節(jié)點(diǎn)。取值為“mandatory”,該命令符不可省略節(jié)點(diǎn);取值“optional”,可以省略節(jié)點(diǎn)。按照SCPI規(guī)范,處于同一層的SCPI命令符有且僅有一個(gè)節(jié)點(diǎn)可以作為默認(rèn)節(jié)點(diǎn)。如果同一層出現(xiàn)多個(gè)默認(rèn)節(jié)點(diǎn),應(yīng)當(dāng)給出編譯錯(cuò)誤。

        3)canQuery:該SCPI命令是否支持詢問。取值“true”,可以詢問;取值“false”不可以詢問。該屬性省略時(shí),默認(rèn)為該命令不可詢問。

        4)argsType:該SCPI命令所帶參數(shù)類型。用于檢驗(yàn)接收到的SCPI命令是否符合標(biāo)準(zhǔn)規(guī)范。該節(jié)點(diǎn)取值類型與SCPI-99命令規(guī)范取值一致。該屬性僅在SCPI葉節(jié)點(diǎn)有效。

        5)code:SCPI葉節(jié)點(diǎn)命令編譯執(zhí)行代碼。該屬性僅在葉節(jié)點(diǎn)命令有效。對(duì)于等價(jià)的SCPI命令會(huì)編譯出同一個(gè)執(zhí)行代碼。

        該腳本文件被解析器解釋成一棵解空間樹,如圖2所示。圖中“[]”內(nèi)的命令符表示該節(jié)點(diǎn)是缺省節(jié)點(diǎn),可以省略。

        圖2 SCPI命令解空間樹

        在該命令樹中,一級(jí)節(jié)點(diǎn)MEASure的子節(jié)點(diǎn)SCALar、VOLTage均為可省略節(jié)點(diǎn)。一級(jí)節(jié)點(diǎn)SOURce是可省略節(jié)點(diǎn)。

        3.3 算法實(shí)現(xiàn)

        SCPI解釋器工作流程分兩個(gè)階段。第一階段詞法分析。該階段會(huì)分析收到的SCPI命令字符串,并按照SCPI-99規(guī)范對(duì)命令進(jìn)行語法檢查,如發(fā)現(xiàn)語法錯(cuò)誤則返回錯(cuò)誤代碼;否則將命令字符串按照SCPI語法規(guī)則分割成命令符集合和參數(shù)集合。第二階段搜索解空間樹。根據(jù)第一階段得到的命令字符集和參數(shù)集合,搜索解空間樹,編譯出指令碼。流程如圖3所示:

        圖3 SCPI命令解析流程

        貪心算法:如果解空間樹某一層沒有對(duì)應(yīng)的節(jié)點(diǎn)命令,且該層有可省略節(jié)點(diǎn),則遞進(jìn)到該省略節(jié)點(diǎn)的子節(jié)點(diǎn)繼續(xù)搜索,否則回溯到解空間樹上一層節(jié)點(diǎn)。

        按照SCPI-99規(guī)范,以圖2解空間樹構(gòu)建的SCPI命令集,如下命令為等效命令,SCPI解析器需要編譯出同一條執(zhí)行代碼。

        :MEASure:SCALar:VOLTage:FREQuency? (1)

        :MEASure:VOLTage:FREQuency? (2)

        :MEASure:SCALar:FREQuency? (3)

        :MEASure:FREQuency? (4)

        :MEA:SCAL:VOLT:FREQ? ? ? ? ? (5)

        根據(jù)算法的貪心策略,命令(1)通過搜索解空間樹,可以立即成功返回。命令(2)在搜索解空間樹到SCALar層時(shí),無法匹配命令,但是該節(jié)點(diǎn)為可省略節(jié)點(diǎn),繼續(xù)搜索其子節(jié)點(diǎn)。在SCALar的子節(jié)點(diǎn)匹配命令,成功完成命令樹搜索返回。同樣命令(3)在匹配VOLTage節(jié)點(diǎn)時(shí)失敗。但是該節(jié)點(diǎn)為可省略節(jié)點(diǎn),繼續(xù)搜索其子節(jié)點(diǎn),在VOLTage的子節(jié)點(diǎn)匹配命令,成功完成命令樹搜索返回。命令(4)在搜索到SCALar節(jié)點(diǎn)匹配失敗,但是該節(jié)點(diǎn)為可省略節(jié)點(diǎn),按照貪心算法的策略,遞歸到該節(jié)點(diǎn)的子節(jié)點(diǎn)VOLTage。在VOLTage節(jié)點(diǎn)匹配失敗,但是該節(jié)點(diǎn)為可省略節(jié)點(diǎn),遞歸到該節(jié)點(diǎn)的子節(jié)點(diǎn)FREQuency,匹配成功返回。命令(5)為SCPI短命令格式,SCPI詞法分析器會(huì)自動(dòng)辨認(rèn)長短命令,匹配該命令。所以該命令也會(huì)成功返回。以上命令都會(huì)編譯唯一解代碼code=”0x010001”。命令執(zhí)行器將該代碼,交給儀器的Excutor。不同儀器的Excutor對(duì)該代碼執(zhí)行儀器特定的操作,完成SCPI指令的執(zhí)行。

        4.結(jié)論

        本文設(shè)計(jì)的SCPI解析器有兩個(gè)特點(diǎn):1)采用XML語言將SCPI指令描述成解空間樹;2)設(shè)計(jì)了一個(gè)基于最優(yōu)解的貪心算法。對(duì)于給定的SCPI命令串通過搜索解空間樹,來判斷給定的SCPI命令串是否合法。該設(shè)計(jì)有如下優(yōu)點(diǎn):1)通過書寫不同的XML腳本可以生成不同的SCPI命令集,無需修改修改SCPI解析引擎,就可以部署到不同的儀器上。2)解決了SCPI的等效命令問題。所有符合規(guī)范的SCPI等效命令都可以編譯成同一條執(zhí)行代碼。因而本文設(shè)計(jì)的SCPI解析引擎具有通用性、普適性,非常適合程控儀器的SCPI命令內(nèi)置執(zhí)行引擎。

        參考文獻(xiàn)

        [1]Standard Commands for Programmable Instruments(SCPI).Consortiums SCPI standard[J].May,1999(6).

        [2]于紅雨,李智,劉暢.函數(shù)/任意波形發(fā)生器SCPI解釋器設(shè)計(jì)與實(shí)現(xiàn)[J].國外電子測(cè)量技術(shù),2009(4):70-73.

        [3]孟德偉,唐承苗,秦開宇.基于XML的通用SCPI命令解析器設(shè)計(jì)[J].儀器儀表用戶,2010(17):76-78.

        国产日韩一区二区精品| 曰批免费视频播放免费直播| 久久AV老司机精品网站导航| 日韩少妇无码一区二区免费视频| 一本色道88久久加勒比精品 | 97人人模人人爽人人喊网| 少妇饥渴xxhd麻豆xxhd骆驼 | 丰满精品人妻一区二区| 久久99精品九九九久久婷婷| 日韩区在线| 国产精品成人黄色大片| 国产精品国产三级国产密月| 国产精品成人久久电影| 亚洲国产精品久久久天堂不卡海量| 久久久久成人亚洲综合精品| 男女性搞视频网站免费| 人妻系列中文字幕av| 永久天堂网av手机版| 久久av无码精品人妻出轨| 草莓视频在线观看无码免费| 美女免费观看一区二区三区| 亚洲色大成网站www永久网站| 国偷自产av一区二区三区| 亚洲成片在线看一区二区| 精品国内日本一区二区| 国产三级精品三级在线观看| 日韩av在线毛片| 中文字幕人妻激情在线视频| 精品乱人伦一区二区三区| 中文字幕亚洲无线码| 国产男女猛烈无遮挡免费视频网址 | 日韩我不卡| av大片网站在线观看| 欧美国产激情二区三区| 蜜臀av一区二区| av天堂吧手机版在线观看| 亚洲视频网站大全免费看| 老子影院午夜伦不卡| 国产亚洲精品久久久久久久久动漫| 亚洲国产高清在线视频| av影片在线免费观看|