邱錫宏,秦玉利
(北京全路通信信號(hào)研究設(shè)計(jì)院集團(tuán)有限公司,北京 100070)
目前,計(jì)算機(jī)聯(lián)鎖系統(tǒng)中鐵路車站站場(chǎng)圖形采用固定分辨率、固定圖元尺寸的顯示方式,當(dāng)站場(chǎng)圖形超過一臺(tái)顯示器的顯示范圍時(shí),需要使用多個(gè)顯示器分別顯示全部站場(chǎng)圖形的不同區(qū)域[1]。
鐵路的計(jì)算機(jī)聯(lián)鎖廠家多屏顯示主要有兩種方式:
(1)通過單臺(tái)機(jī)器中裝載多屏卡的方式;
(2)通過多臺(tái)機(jī)器進(jìn)行多屏的顯示。
第1種方式涉及多屏卡顯卡與機(jī)器兼容性問題,第2種方式涉及到多臺(tái)機(jī)器顯示同步及同一鼠標(biāo)跨屏操作等問題。本文選用第1種方式:采用單臺(tái)機(jī)器,通過主板集成顯示系統(tǒng)進(jìn)行多屏顯示。該方法能較好地解決上述問題,更好地滿足使用和維護(hù)的需要[2]。
根據(jù)站場(chǎng)圖形規(guī)模,可將站場(chǎng)圖形顯示于1個(gè)、2個(gè)或3個(gè)顯示屏,顯示模式支持Clone模式以及Split分屏模式[3]。
1.1.1 Clone模式
每個(gè)屏幕均顯示相同的內(nèi)容,該模式簡(jiǎn)稱為:AAA。適用于僅需要單屏顯示的站場(chǎng)圖形場(chǎng)景。
1.1.2 Split模式
站場(chǎng)圖形擴(kuò)展顯示在多個(gè)屏幕上,每個(gè)屏幕顯示站場(chǎng)圖形的一部分,顯示模式簡(jiǎn)稱為:ABC。適用于需要雙屏或三屏顯示的站場(chǎng)圖形場(chǎng)景(當(dāng)為雙屏?xí)r,第3屏不顯示)。
顯示模式支持橫屏顯示與豎屏顯示,滿足站場(chǎng)圖形橫向擴(kuò)展與縱向擴(kuò)展的需求。
當(dāng)該計(jì)算機(jī)為既有在用設(shè)備時(shí),針對(duì)DOS系統(tǒng),還需要滿足下述需求。
(1)DOS系統(tǒng)下,在autoexec.bat啟動(dòng)文件中增加多屏驅(qū)動(dòng)軟件。該軟件具備加載多屏顯示或卸載多屏顯示的功能。
(2)應(yīng)用軟件中,每個(gè)顯示屏的圖形坐標(biāo)均從(0,0)開始。
(3)通過應(yīng)用接口軟件,指定屏幕后進(jìn)行圖形顯示[4]。
(4)單屏、雙屏、三屏顯示均采用支持C語言接口的SVGA256.BGI文件,文件版本為2.4,支持256色模式。
(1)鐵路車站通常采用視頻圖像陣列(VGA)接口的顯示器,標(biāo)準(zhǔn)主板提供一個(gè)VGA接口,兩個(gè)高清視頻接口(HDMI),需要設(shè)計(jì)轉(zhuǎn)換電路,將HDMI轉(zhuǎn)換為VGA接口[5]。
(2)標(biāo)準(zhǔn)主板只支持一種顯示模式,對(duì)于提供三屏接口的主板,默認(rèn)顯示模式為“AAA”模式,通過修改基本輸入輸出(BIOS),切換為“ABC顯示模式”。
(3)為確保監(jiān)控的穩(wěn)定性,主板設(shè)計(jì)上增加了屏幕長(zhǎng)亮的功能。 也就是當(dāng)屏幕出現(xiàn)故障的情況進(jìn)行維修更換時(shí),無需將系統(tǒng)關(guān)機(jī)或脫機(jī),只要替換掉故障的屏幕即可立即恢復(fù)顯示,不會(huì)影響在線系統(tǒng)的顯示與運(yùn)作,同時(shí),可以解決現(xiàn)場(chǎng)部分黑屏問題[6]。
(4)單屏、雙屏、三屏顯示均采用SVGA256.BGI,文件版本為3.2。
(5)盡可能不修改既有應(yīng)用軟件的代碼。
AMOS-6000中,將HDMI替換為VGA接口[7]。為了不影響主板的基本架構(gòu),保留HDMI顯示控制電路,并在HDMI顯示控制電路與替換后的VGA接口間增加顯示轉(zhuǎn)換電路,如圖1所示。
修改BIOS顯示驅(qū)動(dòng)[8]中的雙屏模式(1 024×768×8 mode)和三屏模式(1 024×768×32 mode),部分代碼如下:
圖1 硬件設(shè)計(jì)圖
int 10 4f14 8003 xxxx;快速切換顯示屏幕[9];
int 10:中斷服務(wù)向量;4f14:系統(tǒng)服務(wù)代碼;8003:變更顯示屏代碼。
int 10 4f14 8003 281
device bit define
ActCrt EQU 00001h;設(shè)定緩存器值,點(diǎn)亮VGA屏幕;
DuoView EQU 00080h;設(shè)定緩存器值,點(diǎn)亮兩個(gè)屏幕;
ActDP6 EQU 00200h;設(shè)定緩存器值,點(diǎn)亮內(nèi)定HDMI2屏幕;
ActDP5 EQU 08000h;設(shè)定緩存器值,點(diǎn)亮內(nèi)定HDMI1屏幕;
……
顯示結(jié)果如圖2所示。
圖2 增加BIOS驅(qū)動(dòng)效果多屏顯示圖
由于第3屏顯示分辨率達(dá)到32 bit,但DOS系統(tǒng)只有8 bit,需增加1 024×768×32 Mode到基本圖像接口(BGI)文件,作相應(yīng)適配修改。
當(dāng)顏色為3時(shí),寄存器AL賦值為3,映射的32 bpp(bit per point)值應(yīng)該為{ 255,255,0 }。因此,寄存器BX應(yīng)該存儲(chǔ)MapTable[9] 的地址。寄存器Bl部分將寫{ MapTable[9] ,MapTable[10] ,MapTable[11] ,AL+240 }內(nèi)容,篩選地址以適應(yīng)32 bpp輸出。因?yàn)?2 bit的顏色支持?jǐn)?shù)遠(yuǎn)超過8 bit的256色, 如果直接將32 bit的顏色值轉(zhuǎn)到8 bit, 會(huì)造成很多顏色無法顯示。如圖3所示,左邊pixel是32 bit的值, 右邊Displayed colour是8 bit支持的顏色??梢钥吹?,很多像素值在8 bit中是未被定義的。
圖3 8 bpp到32 bpp顏色映射圖
由此,創(chuàng)建一個(gè)8 bpp到32 bpp顏色映射表。代碼如下:
在8 bit顯示下, 透明度不被使用。所以,改用color+240寫最后一個(gè)字節(jié)(byte),用它來保存最后一個(gè)顏色,目的是改善顯示效能。原本8 bit,顯示只有1 byte, 轉(zhuǎn)換成32 bit,顯示4 bytes, 每一個(gè)顏色都必須增加4倍的處理時(shí)間。
顯示最后一個(gè)顏色的程序如下。如果比對(duì)之后,顏色值并沒有改變, 則可以略過這個(gè)顯示程序。
在DOS系統(tǒng)下,測(cè)試256色不同顏色在黑白底色下顯示效果,如圖4所示, 能夠滿足機(jī)器繪圖芯片32 bit處理的要求。
圖4 8 bpp到32 bpp顏色映射效果圖
通過上述設(shè)計(jì),滿足DS6系列計(jì)算機(jī)聯(lián)鎖系統(tǒng)操作表示機(jī)當(dāng)前的各種應(yīng)用,在DOS系統(tǒng)下的應(yīng)用 軟件只需替換原有的BGI文件,同時(shí),修改原多屏卡指定屏幕的應(yīng)用接口函數(shù)。AMOS-6000工控機(jī)能較好地解決原有在用設(shè)備的備品備件問題,已經(jīng)在既有京滬普速鐵路線車站廣泛使用。
AMOS-6000工控機(jī)的應(yīng)用,能很好地解決計(jì)算機(jī)聯(lián)鎖系統(tǒng)中操作表示機(jī)的多屏顯示問題,兼容原有DOS系統(tǒng)的操作界面,支持Windows系統(tǒng)的最大分辨率為1 920×1 080×32,同時(shí),多屏支持橫屏擴(kuò)展和豎屏擴(kuò)展,有利于現(xiàn)場(chǎng)的設(shè)備維護(hù)[10]。