999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

于魯波

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

【關鍵詞】SCPI命令;解空間樹;貪心算法;SCPI解析器

1.引言

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

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

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

2.SCPI語法與解空間樹

2.1 SCPI語法簡介

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

2.2 解空間樹

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

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

3.1 SCPI命令配置文件

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

圖1 SCPI命令配置腳本

3.2 腳本節(jié)點屬性

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

配置腳本根節(jié)點為“scpi”,子命令節(jié)點全部為“cmd”。根節(jié)點僅有一個“version”屬性,表示此SCPI配置腳本當前的版本號,用于向上兼容SCPI解析器引擎。“cmd”節(jié)點有5種節(jié)點屬性,具體如下:

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

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

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

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

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

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

圖2 SCPI命令解空間樹

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

3.3 算法實現(xiàn)

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

圖3 SCPI命令解析流程

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

按照SCPI-99規(guī)范,以圖2解空間樹構建的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層時,無法匹配命令,但是該節(jié)點為可省略節(jié)點,繼續(xù)搜索其子節(jié)點。在SCALar的子節(jié)點匹配命令,成功完成命令樹搜索返回。同樣命令(3)在匹配VOLTage節(jié)點時失敗。但是該節(jié)點為可省略節(jié)點,繼續(xù)搜索其子節(jié)點,在VOLTage的子節(jié)點匹配命令,成功完成命令樹搜索返回。命令(4)在搜索到SCALar節(jié)點匹配失敗,但是該節(jié)點為可省略節(jié)點,按照貪心算法的策略,遞歸到該節(jié)點的子節(jié)點VOLTage。在VOLTage節(jié)點匹配失敗,但是該節(jié)點為可省略節(jié)點,遞歸到該節(jié)點的子節(jié)點FREQuency,匹配成功返回。命令(5)為SCPI短命令格式,SCPI詞法分析器會自動辨認長短命令,匹配該命令。所以該命令也會成功返回。以上命令都會編譯唯一解代碼code=”0x010001”。命令執(zhí)行器將該代碼,交給儀器的Excutor。不同儀器的Excutor對該代碼執(zhí)行儀器特定的操作,完成SCPI指令的執(zhí)行。

4.結論

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

參考文獻

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

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

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

主站蜘蛛池模板: 亚洲精品无码av中文字幕| av天堂最新版在线| 欧美成人A视频| 制服丝袜一区二区三区在线| 亚洲AⅤ无码国产精品| 国产门事件在线| 亚洲最猛黑人xxxx黑人猛交| h视频在线播放| 九月婷婷亚洲综合在线| 中文字幕 日韩 欧美| 国产成人亚洲精品色欲AV| 欧美亚洲一区二区三区在线| av色爱 天堂网| 欧美一区二区三区欧美日韩亚洲| 国产午夜一级毛片| 91亚洲免费| 欧美中文字幕在线二区| 欧美日韩午夜视频在线观看| 永久成人无码激情视频免费| 91探花国产综合在线精品| 成人日韩视频| 亚洲美女久久| 情侣午夜国产在线一区无码| 日本黄色不卡视频| 国产不卡一级毛片视频| 亚洲无限乱码| 欧美精品H在线播放| 91色综合综合热五月激情| 91精品伊人久久大香线蕉| 激情综合五月网| 91精品伊人久久大香线蕉| 国产激爽大片高清在线观看| 日韩精品无码一级毛片免费| 日韩中文欧美| 国产精品性| 孕妇高潮太爽了在线观看免费| 国产精品性| 国产理论最新国产精品视频| 日本高清免费一本在线观看| 免费可以看的无遮挡av无码| 51国产偷自视频区视频手机观看 | 亚洲精选无码久久久| 久久精品视频一| 无码aaa视频| 久久毛片网| 日韩在线观看网站| 美女被躁出白浆视频播放| 久久黄色影院| 国内精自视频品线一二区| 91精品国产自产在线观看| 亚洲天堂视频在线免费观看| 无码精品一区二区久久久| 国产精品密蕾丝视频| 久久中文字幕不卡一二区| 99re这里只有国产中文精品国产精品| 巨熟乳波霸若妻中文观看免费 | 91精选国产大片| 国产国语一级毛片在线视频| 亚洲天堂啪啪| 国产精品成人免费综合| 欧美无专区| 四虎国产精品永久一区| 2019年国产精品自拍不卡| 另类欧美日韩| 亚洲天堂免费在线视频| 国产成人精品优优av| 久久福利片| 99精品这里只有精品高清视频| 91麻豆国产精品91久久久| 在线播放国产一区| 亚洲天堂精品视频| 久久性妇女精品免费| 精品无码日韩国产不卡av| 亚洲视屏在线观看| 欧美日韩亚洲国产主播第一区| 中文字幕在线日本| 毛片网站在线播放| 国产久操视频| 不卡视频国产| 国产aaaaa一级毛片| 精品三级在线| 欧日韩在线不卡视频|