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.

主站蜘蛛池模板: 亚洲一区国色天香| 性欧美在线| 国内99精品激情视频精品| 午夜免费视频网站| 欧美成人手机在线视频| 国产精品久线在线观看| 福利在线免费视频| 特级aaaaaaaaa毛片免费视频| 国内黄色精品| 欧美有码在线| 日本不卡在线| 99国产在线视频| 91娇喘视频| 最新国产你懂的在线网址| 国产国语一级毛片在线视频| 久久美女精品国产精品亚洲| 欧美啪啪一区| 国产高清国内精品福利| 亚洲三级a| 国产交换配偶在线视频| 五月激情综合网| 亚洲成a人片7777| 国产精品久久自在自2021| 怡春院欧美一区二区三区免费| 国产成人亚洲精品色欲AV | 一级成人欧美一区在线观看| 91外围女在线观看| 日本成人精品视频| 亚洲日韩Av中文字幕无码| 2022国产无码在线| a天堂视频在线| 国产一区二区三区夜色| 精品无码日韩国产不卡av| 成人欧美在线观看| 刘亦菲一区二区在线观看| 国产一区二区三区精品久久呦| 激情影院内射美女| 国产十八禁在线观看免费| 亚洲香蕉在线| 欧美另类图片视频无弹跳第一页| 91精品国产91久久久久久三级| 成人国产精品2021| 亚洲永久精品ww47国产| 欧美区国产区| 亚洲水蜜桃久久综合网站| 在线视频一区二区三区不卡| a色毛片免费视频| 久久五月天国产自| 极品国产一区二区三区| 亚洲一区二区在线无码| 国产一区亚洲一区| 欧美激情视频在线观看一区| 欧美日韩一区二区三区四区在线观看 | 四虎精品国产永久在线观看| av手机版在线播放| 日韩不卡免费视频| 色偷偷一区二区三区| 内射人妻无码色AV天堂| 亚洲an第二区国产精品| 国产成人三级| 国产在线八区| 午夜在线不卡| 国产精品人成在线播放| 2021国产精品自拍| 精久久久久无码区中文字幕| 国产精品嫩草影院视频| 亚洲av无码人妻| 日韩无码视频专区| 中文字幕日韩久久综合影院| 狠狠色成人综合首页| 日本不卡在线播放| 亚洲人妖在线| aⅴ免费在线观看| 国产v精品成人免费视频71pao | 午夜丁香婷婷| 日韩精品亚洲人旧成在线| 国产va欧美va在线观看| 美女国产在线| 日韩高清欧美| 97超爽成人免费视频在线播放| 久久男人资源站| 亚洲视频在线网|