專利名稱:一種智能測量儀器通用語法分析的實現方法
技術領域:
本發明涉及一種測量儀器語法分析方法,尤其涉及一種智能測量儀器通用語法分析的實現方法,屬于程控測量儀器技術領域。
背景技術:
目前智能型測量儀器門類繁多,例如功率計、頻譜儀、網絡儀、信號源、噪聲儀、頻率計、示波器等。這些智能測量儀器具有一個共同特點可以通過任何可與之通訊的控制器進行系統集成。這些控制器可能是個人電腦、小型計算機或者卡槽上的插卡,乃至一些人工智能的設備。由控制器通過相應的測試總線,GP-IB、網絡等向測量儀器發送程控命令,實現對測量儀器的程控操作(如附圖1所示)。但是如何正確輸入有效命令、測量儀器如何獲取正確指令、如何正確解析在發送過程中可能會出現的發送錯誤例如關鍵字錯誤、參數個數、參數數據類型不匹配、參數超界等,卻是本領域所面臨的常見問題。如果測量儀器不能很好地識別這些錯誤,將無法實現指定功能,甚至可能會造成測量儀器的崩潰。因此,必須對通過通訊接口所接收到的數據和程控命令信息進行解析,判斷其合法性,提取有效指令和相應的參數。語法分析是一項繁瑣、復雜的工作,但針對測量儀器又不可或缺。由于用戶的輸入可能錯綜復雜,所以稍有考慮不周,就可能出現誤判、漏判,從而出現意想不到的情況。由于不同的測量儀器具有不同的測試功能,所以每種測量儀器的生產廠商都要針對自身儀器進行包括語法分析在內的程控的重復開發。這無疑會造成大量、重復的勞動,造成極大的人力、物力浪費。而經多方查閱,到目前為止還沒有一套完整的、完善的、針對不同測量儀器通用的語法分析方法。因此,能否針對不同門類的智能測量儀器,搭建出一套完善的通用語法分析平臺以同時滿足其各自程控的要求,成為本領域技術人員亟待解決的技術難題。
發明內容
為了解決上述技術問題,提出本發明。本發明旨在提供一種智能測量儀器通用語
法分析的實現方法,其基于 SCPI (Standard Commands for Programmable Instruments-
可程控設備的標準命令,一個基于標準IEEE488. 2建立的、適合所有儀器的命令集),針對多種智能測量儀器開發的。用于使不同測量儀器相同功能具有相同的程控命令,以實現程控命令的通用性。其采用的技術方案如下該種智能測量儀器通用語法分析的實現方法包括以下步驟1)生成命令樹利用二叉樹的方式來構建數據結構,將整個語法分析的過程分成生成樹過程和遍歷樹過程;2)語法分析與接口相應的線程接收來自接口的命令和數據,并送語法分析先進先出隊列,激活語法分析;逐個分離出用戶輸入命令的關鍵字,依據生成樹中的數據結構, 判斷輸入的整條命令在每個具體部位是否存在問題,然后對正確的分析進行解析解碼,把
3相應的命令和參數分別送入命令隊列,激活命令處理線程進行相應的命令處理;對錯誤的命令予以拋棄,并進行示警和錯誤定位。優選地,所述命令樹包括如下五個數據結構命令和關鍵字結構、節點結構、葉子節點結構、參數鏈表結構以及C參數鏈表。優選地,在所述語法分析步驟中,還使用命令結構和參數結構,在語法分析完成某條命令之后,這兩個結構分別寫入命令處理線程。優選地,在遍歷樹的過程中,如果在同級的目錄中沒有找到,在下級中查找乃至一直找到葉子節點;如果在葉子節點還沒有找到,回溯到之前正確的解析部位,在其兄弟節點乃至兄弟節點的子節點中繼續查找。優選地,所述用戶輸入命令包括大數據塊命令。優選地,所述用戶輸入命令中還包括關聯命令,在語法分析步驟中關聯命令出現問題時,把前面判斷正確的命令包括命令碼和參數送給命令處理,而出錯之后的命令包括本條進行清除。優選地,其特征在于,所述接口為GPIB或網絡。優選地,對于大數據塊關聯命令還包括如下處理步驟分析到大數據塊參數時,把所有滯留命令全部一并寫入命令先進先出隊列中,然后等待;命令處理到這條命令時,發消息給語法分析,并給語法分析一個緩沖區的指針,然后命令處理處于等待狀態;語法分析直接從語法先進先出隊列中按當前的數據格式進行讀取,然后寫入到對應的內存中;如果在處理大數據的過程中出現錯誤,則發送消息給命令處理線程,結束該命令的處理,同時設置該條命令的關聯碼為最后一個;如果沒有出錯,就要看是否是關聯命令的中間一條,要等到下一條命令處理完畢,得到正確的關聯碼之后才給命令處理發消息;如果不是中間一條,則在處理完之后給命令處理發消息。優選地,對于大數據塊關聯命令還包括如下處理步驟大數據塊命令處理時,如果發現通道或者測量不存在,給語法傳送一個指針,長度為-1 ;語法分析把數據寫入緩沖區內,同時設置接收的長度為有效長度。與現有技術相比,本發明具有如下優點1、通用性強,適用于多種智能測量儀器,大大降低了科研工作量和科研成本;2、方便用戶采用,操作簡單,定位和查錯功能強;3、經多個內嵌儀器驗證,可靠性強、穩定性好。
圖1現有技術中的程控流程圖2本發明中命令及結構的簡要說明圖3本發明中生成命令樹的流程圖4本發明中數據結構簡圖1;
圖5本發明中語法分析流程圖6本發明中3條關聯命令的處理圖7本發明中3條大數據塊關聯命令的處理圖
圖8本發明中數據結構簡圖2。
具體實施例方式下面結合附圖和實施例對本發明作進一步說明該實現方法主要包括以下步驟生成命令樹(如圖3所示)在具體設計上,為了滿足速度、通用性和易集成性等要求,利用二叉樹的方式來構建數據結構,將整個語法分析的過程分成生成樹過程和遍歷樹過程。命令樹優選為主要由如下五個數據結構來進行管理(如圖2、4、8所示):命令和關鍵字結構、節點結構、葉子節點結構、參數鏈表結構以及C參數鏈表。命令和關鍵字結構包括關鍵字編碼、首節點指向的節點結構。節點結構,用來放置每個命令節點的相關信息,包括節點缺省標識、節點可否帶參數、節點參數缺省標識、缺省值、最小值、最大值、父指針、兄弟指針、孩子指針(當是最后一個命令時,指向葉子結構)、是否葉子節點。葉子結構,存放整條命令信息和參數特性,包括命令編碼、是否可查詢、是否交迭、查詢時,所有參數是否全部返回、總參數個數、缺省參數個數、參數鏈表入口。參數鏈表結構,保存每個參數的信息,包括參數是否可缺省、是否支持最值、參數類型、參數單位、是否有C缺省、C參數鏈表的起始下標。C參數鏈表僅用于C參數,存放內容為該C在關鍵字結構中的索引,最后用-1結
束ο在下面的語法分析步驟中,優選還使用了另外兩個結構命令結構和參數結構,在語法分析完成某條命令之后,這兩個結構分別寫入命令處理線程。命令結構包括命令來源、命令碼、參數個數、命令查詢標識、是否存在語法錯、命令關聯碼、節點參數個數和節點參數。參數結構包括參數類型、整型參數、浮點型參數、字符串型參數、C型參數、參數單位、指向下一個參數的指針。這些數據結構是本發明實現方法的重點,生成樹是生成這些數據結構,而語法分析,則完全依靠這些結構來判斷用戶輸入的命令是否合法。所以,這些結構的合理性和完善性是極其重要的。語法分析(如圖5所示)與接口(例如GPIB、網絡等)相應的線程接收來自接口的命令和數據,并送語法分析先進先出隊列,激活語法分析;逐個分離出用戶輸入命令的關鍵字,依據生成樹中的五個數據結構,判斷輸入的整條命令在每個具體部位是否存在問題, 然后對正確的分析進行解析編碼,把相應的命令和參數分別送入命令隊列,激活命令處理線程進行相應的命令處理;對錯誤的命令予以拋棄,并進行示警和錯誤定位。由于用戶輸入的情況復雜,所以在整個語法分析的過程中,樹的搜索是前提。由于存在關鍵字的缺省情況,所以在搜索的過程中,如果在同級的目錄中沒有找到,就要考慮是否是進行了缺省,要在下級中查找,由于存在多級的缺省,所以可能要一直找到葉子節點。 如果在葉子節點都沒有找到,那么就要一直回溯到之前正確的解析部位,在兄弟節點中,甚至是兄弟節點的子節點中繼續查找,這是該技術的一個難點所在。SCPI規范要求輸入命令,也可以輸入大數據塊命令。大數據塊命令分多種格式,不
5論是哪種格式,只要分析出存在問題,那么后面的數據就要停止接收,并把前面已經接收的數據予以清除。因為大數據塊的數據很大,所以我們和命令一起同步處理,這是語法分析的另一個難點所在。SCPI規范中,還提到一點,多條命令可以同時輸入。這就是關聯命令。關聯命令在分析中出現錯誤,要把前面判斷正確的命令送給命令處理,包括命令碼和參數,而出錯之后的命令,包括本條,都要清除。如果是分系統命令的關聯輸入,那么還存在同根命令的簡化輸入,而對于分系統命令和公用命令在關聯輸入時還存在差異。如果是與大數據塊命令關聯,那么語法分析將變得更加復雜。這些問題在處理關聯命令時都進行了全面的考慮。關聯命令的處理也是語法分析中難點中的難點。下面簡述其相關處理方法。關聯命令的處理對于命令所跟的參數,只要處理到了,就寫入命令處理隊列中, 但命令要滯留1條,只有處理完下一條并且正確時,修改了前一條的關聯碼之后才會寫入命令處理隊列,以此類推。大數據塊關聯命令,具體處理如下因為大數據塊參數占有很大內存,所以分析到大數據塊參數時直接把所有的滯留命令全部一并寫入命令先進先出隊列中,然后等待;命令處理到這條命令時,發消息給語法分析,并給語法分析一個緩沖區的指針,然后命令處理處于等待狀態。語法分析直接從語法先進先出隊列中按當前的數據格式進行讀取,然后寫入到對應的內存中。如果在處理大數據的過程中出現錯誤,則發送消息給命令處理線程,結束該命令的處理,同時設置該條命令的關聯碼為最后個;如果沒有出錯,就要看是否是關聯命令的中間一條,要等到下一條命令處理完畢,得到正確的關聯碼之后才給命令處理發消息;如果不是中間一條,則在處理完之后給命令處理發消息。大數據塊命令處理時,如果發現通道或者測量不存在,仍然會給語法傳送一個指針,只是長度為-ι。語法分析仍然會把數據寫入這個緩沖區內,同時設置接收的長度為有效長度。圖6和圖7以3條命令為例,簡要說明了大數據塊和關聯命令的處理流程。上面以舉例方式對本發明進行了說明,但本發明不限于上述具體實施例,凡基于本發明所做的任何改動或變型均屬于本發明要求保護的范圍。
權利要求
1.一種智能測量儀器通用語法分析的實現方法,其特征在于,包括以下步驟1)生成命令樹利用二叉樹的方式來構建數據結構,將整個語法分析的過程分成生成樹過程和遍歷樹過程;2)語法分析與接口相應的線程接收來自接口的命令和數據,并送語法分析先進先出隊列,激活語法分析;逐個分離出用戶輸入命令的關鍵字,依據生成樹中的數據結構,判斷輸入的整條命令在每個具體部位是否存在問題,然后對正確的分析進行解析解碼,把相應的命令和參數分別送入命令隊列,激活命令處理線程進行相應的命令處理;對錯誤的命令予以拋棄,并進行示警和錯誤定位。
2.如權利要求1所述的一種智能測量儀器通用語法分析的實現方法,其特征在于,所述命令樹包括如下五個數據結構命令和關鍵字結構、節點結構、葉子節點結構、參數鏈表結構以及C參數鏈表。
3.如權利要求1所述的一種智能測量儀器通用語法分析的實現方法,其特征在于,在所述語法分析步驟中,還使用命令結構和參數結構,在語法分析完成某條命令之后,這兩個結構分別寫入命令處理線程。
4.如權利要求1所述的一種智能測量儀器通用語法分析的實現方法,其特征在于,在遍歷樹的過程中,如果在同級的目錄中沒有找到,在下級中查找乃至一直找到葉子節點;如果在葉子節點還沒有找到,回溯到之前正確的解析部位,在其兄弟節點乃至兄弟節點的子節點中繼續查找。
5.如權利要求1所述的一種智能測量儀器通用語法分析的實現方法,其特征在于,所述用戶輸入命令包括大數據塊命令。
6.如權利要求1所述的一種智能測量儀器通用語法分析的實現方法,其特征在于,所述用戶輸入命令中還包括關聯命令,在語法分析步驟中關聯命令出現問題時,把前面判斷正確的命令包括命令碼和參數送給命令處理,而出錯之后的命令包括本條進行清除。
7.如權利要求1所述的一種智能測量儀器通用語法分析的實現方法,其特征在于,所述接口為GPIB、網絡和com的語法接口。
8.如權利要求1所述的一種智能測量儀器通用語法分析的實現方法,其特征在于,對于大數據塊關聯命令還包括如下處理步驟分析到大數據塊參數時,把所有滯留命令全部一并寫入命令先進先出隊列中,然后等待;命令處理到這條命令時,發消息給語法分析,并給語法分析一個緩沖區的指針,然后命令處理處于等待狀態;語法分析直接從語法先進先出隊列中按當前的數據格式進行讀取,然后寫入到對應的內存中;如果在處理大數據的過程中出現錯誤,則發送消息給命令處理線程,結束該命令的處理,同時設置該條命令的關聯碼為最后一個;如果沒有出錯,就要看是否是關聯命令的中間一條,要等到下一條命令處理完畢,得到正確的關聯碼之后才給命令處理發消息;如果不是中間一條,則在處理完之后給命令處理發消息。
9.如權利要求1所述的一種智能測量儀器通用語法分析的實現方法,其特征在于,對于大數據塊關聯命令還包括如下處理步驟大數據塊命令處理時,如果發現通道或者測量不存在,給語法傳送一個指針,長度為-1 ;語法分析把數據寫入緩沖區內,同時設置接收的長度為有效長度。
全文摘要
本發明涉及一種測量儀器語法分析方法,尤其涉及一種智能測量儀器通用語法分析的實現方法,屬于程控測量儀器技術領域,該方法針對不同門類的智能測量儀器,搭建出通用語法分析平臺滿足其程控要求,開發人員依據SCPI命令規范編寫出該儀器所有程控命令的文本文件,自動生成高效的命令樹,同時可對此文本文件進行審閱;完成編譯之后,把此方法內嵌于測量儀器中實現對該儀器的程控,對于不同的測量儀器,只需要重新創建、編譯一下程控命令的文本文件即可,通用性強,可靠性、穩定性好。
文檔編號G06F17/30GK102521250SQ20111036264
公開日2012年6月27日 申請日期2011年11月16日 優先權日2011年11月16日
發明者井濤, 劉丹, 孫朋德, 李明太, 李樹彪, 趙學強, 趙立軍, 郭永瑞 申請人:中國電子科技集團公司第四十一研究所