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

        ?

        基于ActiveX和XML技術(shù)的ATS站場圖設(shè)計與實現(xiàn)

        2013-03-11 10:49:34張延龍郭秀清
        關(guān)鍵詞:信號機站場數(shù)據(jù)結(jié)構(gòu)

        張延龍,郭秀清

        (同濟大學(xué) 控制科學(xué)與工程系,上海201804)

        進入21世紀以來,隨著中國經(jīng)濟的飛速發(fā)展和城市化進程的加快,城市軌道交通也進入大發(fā)展時期。我國已經(jīng)成為世界最大的城市軌道交通市場。城市軌道交通的快速發(fā)展也帶來了一個顯著的問題,就是軌道交通設(shè)施一旦完工立即投入運行,根本沒有時間允許對相關(guān)運營維護人員進行培訓(xùn)。此外,由于現(xiàn)場列車行車安全和時間等因素的限制,已經(jīng)投入使用的列車控制系統(tǒng)等現(xiàn)場設(shè)備不可能用來教學(xué)培訓(xùn)。學(xué)員無法進行實際的練習(xí)。因此,怎樣在保證安全的前提下使每一位學(xué)員系統(tǒng)、快速地掌握相關(guān)技術(shù),就成為迫切需要解決的難題。鑒于此有必要開發(fā)一套完整的用于教學(xué)、培訓(xùn)的ATS仿真系統(tǒng)。

        ActiveX控件具有可擴展、可重用、易組合、語言無關(guān)等特點。將其應(yīng)用在ATS仿真系統(tǒng)的設(shè)計與實現(xiàn)中可以大大減少重復(fù)勞動,縮短開發(fā)周期??蓴U展標(biāo)記語言XML(Extensible Markup Language)是用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言,可以用來標(biāo)記數(shù)據(jù),定義數(shù)據(jù)類型,是一種允許用戶對自己的標(biāo)記語言進行定義的源語言。XML與其他數(shù)據(jù)表現(xiàn)形式最大的不同是:它極其簡單。XML的簡單使其易于在任何應(yīng)用程序中讀寫數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換的唯一公共語言。

        1 ActiveX控件的設(shè)計與實現(xiàn)

        1.1 控件的設(shè)計

        站場圖是ATS仿真培訓(xùn)系統(tǒng)的基礎(chǔ),是ATS仿真系統(tǒng)可視控件的一部分。所有軌道設(shè)備的狀態(tài)、進路生成狀態(tài)、信號設(shè)備狀態(tài)和列車運行狀態(tài)都會在站場圖上直接反應(yīng)出來。通過對ATS仿真系統(tǒng)的分析,站場圖的基本組成控件包括區(qū)段控件、道岔控件、信號機控件、站臺控件、車次窗控件以及一些其他控件,如圖1所示。

        構(gòu)建站場圖控件的首要任務(wù)是設(shè)計控件的屬性。站場圖控件的屬性可以分為兩類:靜態(tài)屬性和動態(tài)屬性。靜態(tài)屬性指的是在繪制站場圖時可以修改的一些屬性,站場圖繪制完成后這些屬性在ATS仿真培訓(xùn)系統(tǒng)運行時是不可改變的。動態(tài)屬性指的是在繪制站場圖時無需設(shè)置或僅需默認設(shè)置,在ATS仿真系統(tǒng)的運行過程中不斷變化的屬性[1]。例如,信號機控件的ID、名稱在ATS仿真系統(tǒng)運行過程中不會變化,這屬于靜態(tài)屬性;信號機的背景顏色在程序運行過程中經(jīng)常發(fā)生變化,這屬于動態(tài)屬性。

        圖1 站場圖控件

        1.2 控件的實現(xiàn)

        開發(fā)站場圖控件使用的是VC2008開發(fā)平臺,它是開發(fā)ActiveX控件的常用工具之一。VC2008集成開發(fā)環(huán)境,使用了微軟自己的類庫MFC,MFC對開發(fā)ActiveX控件提供了全面的支持。MFC對ActiveX控件的支持封裝為COlecontrol類,站場圖中各個控件均由此類派生[2]。本文以信號機為例說明ActiveX控件的設(shè)計與實現(xiàn)過程。信號機的靜態(tài)屬性有信號機名稱、信號機位置類型和字體顏色,信號機的動態(tài)屬性有信號機背景顏色、控件可見性和基座顏色。其主要代碼如下:

        在VC++中設(shè)計ActiveX控件實際上就是對OnCreate()、DoPropExchange()、OnDraw()等函數(shù)的處理。OnCreate()函數(shù)完成控件的創(chuàng)建以及控件結(jié)構(gòu)、尺寸和字體等外形的設(shè)置。DoPropExchange()函數(shù)負責(zé)的是狀態(tài)永久性機制,利用這個函數(shù)可以把ActiveX控件的屬性和內(nèi)部信息保存到存儲對象或者是流對象中。這個函數(shù)通常調(diào)用PX_family函數(shù)來完成OLE控件的用戶自定義屬性操作。OnSize()函數(shù)用來調(diào)整控件顯示窗口的大小和位置。OnDraw()函數(shù)利用指定圖像在指定區(qū)域繪制OLE控件[3]。MFC默認的控件邊界形狀是一個矩形。這個矩形可以由鼠標(biāo)拖動而改變大小,所以在設(shè)計控件時應(yīng)當(dāng)根據(jù)默認矩形的上下左右邊界計算出控件內(nèi)部各點的相對坐標(biāo)。這樣在拖拽控件改變大小時控件內(nèi)部線條按比例放大或縮小。

        在VC2008編譯環(huán)境中,信號機控件如圖2所示。

        圖2 信號機控件

        2 站場圖的生成

        2.1 控件注冊

        所有的ActiveX控件必須在注冊之后才可以使用。Regsvr32程序的作用就是注冊ActiveX控件。將所有控件放入一個庫中并在該庫中建立一個名為reg.dat的MSDOS批處理文件,在該文件中對控件進行注冊。例如,對信號機進行注冊的語句為:regsvr32-s./Line5Signal.ocx。使用控件前運行該文件就可以將控件的所有信息(包括所在路徑)都寫入注冊表中。

        2.2 繪制站場圖

        ATS仿真培訓(xùn)系統(tǒng)的站場圖就是由一個個控件拼接而成的。按照軌道交通線路的實際情況,從控件庫中選取合適的控件,然后配置控件的功能和數(shù)據(jù),確定控件間的相互關(guān)系和通信方式,最終就可以生成一個站場圖。本文按照上海市地鐵5號線現(xiàn)場的實際情況分別繪制出MV1、MV2、MV3 3張站場圖。考慮到項目接下來要在主視圖中加載站場圖,在為站場圖所在的對話框添加類時要設(shè)置其基類為CFormView。部分站場圖如圖3所示。

        圖3 部分站場圖

        3 數(shù)據(jù)處理模塊的設(shè)計

        3.1 數(shù)據(jù)庫的選擇

        可擴展標(biāo)記語言XML是W3C組織于1998年2月發(fā)布的標(biāo)準(zhǔn),是Internet環(huán)境中跨平臺的、依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化信息的有力工具。XML文檔結(jié)構(gòu)嚴謹,層次分明,語義明確,具有良好的可讀性、易編寫和易維護等特性,而且使得多媒體信息在不同的系統(tǒng)之間相互交流成為現(xiàn)實。

        XML可以充當(dāng)小型數(shù)據(jù)庫的功能。雖然Access、Oracle和SQL Sever等數(shù)據(jù)庫都提供了強有力的數(shù)據(jù)存儲和分析能力,例如數(shù)據(jù)索引、排序和查找等能力,但與這些數(shù)據(jù)庫不同,XML僅僅是存儲數(shù)據(jù)。事實上XML與其他數(shù)據(jù)表現(xiàn)形式最大的不同是:它極其簡單。這個優(yōu)點使得XML與眾不同。在ATS仿真系統(tǒng)中,由于站場元素間關(guān)系的復(fù)雜性和多樣性,如果使用關(guān)系數(shù)據(jù)庫,依據(jù)數(shù)據(jù)庫設(shè)計范式而設(shè)計的數(shù)據(jù)結(jié)構(gòu)會因為數(shù)據(jù)關(guān)系的復(fù)雜性而急劇膨脹,不利于存儲一些結(jié)構(gòu)松散和關(guān)系復(fù)雜的站場元素模型信息。另外,站場元素模型的數(shù)據(jù)量不大,此時XML簡單的優(yōu)點便發(fā)揮了用處,因此將站場元素模型信息以XML原始格式存儲,方便靈活,沒有版權(quán),沒有約束,也可以節(jié)約成本[4]。在站場圖模塊中,用XML描述了進路、區(qū)段、信號燈、道岔等站場元素的模型,記錄它們的信息,在后面各個功能模塊設(shè)計中都是基于這些數(shù)據(jù)的。

        3.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計

        因為靜態(tài)數(shù)據(jù)包括基本信號點之間的邏輯關(guān)系,所以在靜態(tài)數(shù)據(jù)模塊中,不僅包含該信號點的基本信息(如類別、名稱、長度等),還應(yīng)包含其他的信號點信息(如左邊設(shè)備的名稱、右邊設(shè)備的名稱)。因此在設(shè)計信號點基本數(shù)據(jù)時,每一個信號點都應(yīng)包含完整的信息字段,例如區(qū)段字段,應(yīng)該包括ID、名稱、左連接設(shè)備名稱、右連接設(shè)備名稱、占用標(biāo)志和區(qū)段長度等。

        XML文件分為Axle、Cross、Platform、Signal、Switch、TrainNumWnd、Timetable和Routes這8個文件。其中前6個文件存儲的是控件的位置信息,Routes文件放置的是站場圖中的進路信息,Timetable是列車的時刻表信息。

        3.2.1 信號機數(shù)據(jù)結(jié)構(gòu)設(shè)計

        以信號機為例,信號機主要包含5個字段:信號機ID、信號機名稱、接近區(qū)段名稱、第一區(qū)段名稱和所屬集中站,其XML文件的結(jié)構(gòu)如下:

        XML數(shù)據(jù)庫中每種類型的數(shù)據(jù)讀進內(nèi)存以后必須有相應(yīng)的數(shù)據(jù)結(jié)構(gòu)進行存儲。同時該結(jié)構(gòu)還要與界面上的具體控件相關(guān)聯(lián)。為此以各個控件的原始類為基礎(chǔ)添加上相應(yīng)的位置和狀態(tài)屬性設(shè)計了控件的封裝類。在VC程序中可以利用CMarkup類對XML文件進行解析,用解析出來的各個控件的信息構(gòu)造相應(yīng)的封裝類,控件原始類在封裝類中作為一個具有public屬性的成員變量。在程序中數(shù)據(jù)的存儲是以C++STL中vector容器的形式存儲。使用vector容器存儲數(shù)據(jù)不但可以減少內(nèi)存泄漏的危險而且可以借助于vector自身具有的屬性方便地查找和設(shè)置元素。信號機控件的封裝類如下:

        信號機實體對象與界面控件的綁定是通過DDX_Control()宏完成的。例如信號機控件IDC_S1與信號機實體對象的綁定通過DDX_Control(pDX,IDC_S1,*pDoc->m_SignalPtrArray[0])完成。DDX_Control()是MFC中的宏,主要負責(zé)邏輯變量與界面控件的綁定操作。pDX是指向CdataExchange對象的指針,IDC_S1是控件ID,*pDoc->m_SignalPtrArray[0]是內(nèi)存中的信號機對象。

        3.2.2 時刻表數(shù)據(jù)結(jié)構(gòu)設(shè)計

        時刻表實現(xiàn)了行車組織的工作計劃編排。時刻表中包含一個運營日中列車運行的所有信息。時刻表是后續(xù)列車運行調(diào)整模塊的核心,在生成站場圖的部分只需知道它的基本數(shù)據(jù)結(jié)構(gòu)即可,其數(shù)據(jù)結(jié)構(gòu)包括:車次號、站臺號、到達時間、出發(fā)時間,其XML文件結(jié)構(gòu)如下所示:

        3.2.3 進路搜索原理

        進路的生成主要是通過搜索信號機來完成的。具體過程如下:從這個信號機關(guān)聯(lián)的軌道出發(fā),沿著信號機的方向搜索軌道鏈,若遇到與斜股同向的道岔,則將該道岔放入一個搜索棧中,然后沿著直線方向繼續(xù)搜索,直至找到反向的敵對信號機或下一車站的同向信號機;若此時搜索棧中仍有道岔,則取出道岔從斜股的方向按上面的描述搜索另一條進路,直到搜索棧中沒有道岔對象。在搜索的同時即記錄下相關(guān)控件對象信息。以圖2中的信號機X108為例,一共有兩條進路,一條進路是X108-X106,另一條是X108-X110。這兩條進路在XML中按照如圖4所示的數(shù)據(jù)結(jié)構(gòu)表示。

        圖4 兩條進路在XML中的表示

        程序開始運行時先把保存在XML表中的控件封裝類信息讀到內(nèi)存中,并以合理的數(shù)據(jù)結(jié)構(gòu)存儲起來,這樣就不用頻繁地讀取數(shù)據(jù)庫,能大大減少因讀取數(shù)據(jù)庫而占用的時間。程序從XML中讀入控件的位置和連接信息,利用構(gòu)造函數(shù)設(shè)置其狀態(tài)信息。程序運行時也可以通過訪問封裝類的public成員變量設(shè)置其狀態(tài)信息。結(jié)合時刻表和進路信息就可以使列車運行起來。

        本文針對上海市地鐵5號線ATS培訓(xùn)系統(tǒng)中的站場圖進行設(shè)計,構(gòu)建了用于拼接站場圖的道岔和信號機等控件,并使用XML文件對控件位置和拼接信息進行存儲??丶膭澐峙c應(yīng)用將站場圖的繪制過程簡化為簡單的拼圖操作,大大縮短了整個ATS仿真系統(tǒng)的開發(fā)周期。合理的數(shù)據(jù)結(jié)構(gòu)極大地保證了程序的快速平穩(wěn)運行。本文對于ATS仿真系統(tǒng)的后續(xù)研究有著鋪墊作用。

        [1]王野,郭秀清.基于組件技術(shù)的列車自動監(jiān)控仿真系統(tǒng)開發(fā)平臺[J].計算機應(yīng)用,2007,2(z2)∶286-288.

        [2]莊傳平,陳永生.可復(fù)用的列車自動監(jiān)控仿真系統(tǒng)組件的設(shè)計與實現(xiàn)[J].城市軌道交通研究,2007(7)∶31-33.

        [3]郭永瑞,孫明德.ActiveX控件的編寫和使用[J].計算機與信息技術(shù),2007(22)∶48-49.

        [4]李根,李彥明,劉成良.基于可擴展標(biāo)記語言的故障模型表述[J].機械制造與自動化,2012,41(04)∶115-117.

        猜你喜歡
        信號機站場數(shù)據(jù)結(jié)構(gòu)
        輸氣站場危險性分析
        駝峰信號機與駝峰輔助信號機顯示不一致問題分析
        四顯示自動閉塞通過信號機在TDCS/CTC采集電路中存在的問題及改進
        “翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
        半自動閉塞總出發(fā)信號機非正常關(guān)閉解決方案
        高職高專數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
        中國市場(2016年45期)2016-05-17 05:15:48
        鐵路站場EBS工程量分解
        特殊站場引導(dǎo)信號電路設(shè)計
        取消出站信號機“雙綠”顯示方式的探討
        駝峰站場綜合防雷
        无码在线观看123| 国内永久福利在线视频图片| 99无码精品二区在线视频| 香港三级精品三级在线专区| 日本在线观看| 人妻中文字幕不卡精品| 午夜视频手机在线免费观看| 中文字幕本久久精品一区| 影音先锋色小姐| 国产精品久久久久电影网| 国产一级淫片a免费播放口| av成人资源在线观看| 久久久精品人妻一区二区三区妖精 | 国产亚洲精久久久久久无码苍井空| 久久精品国产av大片| 国产福利不卡视频在线| 日本丰满少妇xxxx| 国产综合无码一区二区色蜜蜜| аⅴ天堂国产最新版在线中文| 免费人成黄页网站在线观看国产| 中文字幕精品一区二区的区别| 18岁日韩内射颜射午夜久久成人| 国产精品va无码一区二区| 精品视频专区| 国产黄色一级到三级视频| 在线日本看片免费人成视久网| 国产福利精品一区二区| 国产成人免费a在线视频| 日本最新一区二区三区视频 | 国产亚洲一本大道中文在线| 伴郎粗大的内捧猛烈进出视频观看 | 成熟了的熟妇毛茸茸| 欧美aaaaaa级午夜福利视频| 野外三级国产在线观看| 亚洲av午夜福利一区二区国产 | 国产情侣自拍一区视频| 国产揄拍国产精品| 免费国产一级特黄aa大片在线| 白白色福利视频在线观看| 精品人妻av一区二区三区| 亚洲午夜精品a片久久www慈禧|