劉煒晨 支家茂 瞿小宇
摘 要:本文分析和討論了兩個(gè)編程軟件LabVIEW和SQLServer的連接技術(shù),描述了開放數(shù)據(jù)互連(ODBC)、數(shù)據(jù)對(duì)象技術(shù)(ADO)、對(duì)象鏈接和嵌入技術(shù)(ActiveX)的技術(shù)特性,說明通過圖形化編程軟件LabVIEW編程可以對(duì)SQLServer數(shù)據(jù)庫進(jìn)行操作。然后針對(duì)企業(yè)信息化的實(shí)際應(yīng)用,特別是對(duì)于船舶服務(wù)中顯示未審核工單信息這個(gè)需求,給出了具體實(shí)現(xiàn)方案并成功應(yīng)用。
關(guān)鍵詞:LabVIEW;SQLServer;開放數(shù)據(jù)互連;數(shù)據(jù)對(duì)象技術(shù);對(duì)象鏈接和嵌入技術(shù);信息化
信息化管理是企業(yè)發(fā)展的一個(gè)重要環(huán)節(jié),信息化離不開數(shù)據(jù)庫和圖形化編程技術(shù),為了實(shí)現(xiàn)動(dòng)態(tài)顯示船舶工程信息,提升工作效率,改變手寫白板的作業(yè)方式,利用圖形化編程軟件LABVIEW對(duì)SQLServer數(shù)據(jù)庫的業(yè)務(wù)系統(tǒng)進(jìn)行編程,在60吋大屏幕上滾動(dòng)顯示船舶工程信息。
SQLServer是一個(gè)關(guān)系數(shù)據(jù)庫管理系統(tǒng),具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn),可跨越從膝上型電腦到大型多處理器的服務(wù)器等多種平臺(tái)使用,具有使用方便、可伸縮性好、與相關(guān)軟件集成程度高等優(yōu)點(diǎn),在眾多企業(yè)得到廣泛的應(yīng)用,我們的業(yè)務(wù)系統(tǒng)也不例外。
LabVIEW(LaboratoryVirtualInstrumentEngineeringWorkbench)是通用程序開發(fā)環(huán)境,是一種用圖標(biāo)代替文本行創(chuàng)建應(yīng)用程序的圖形化編程語言。傳統(tǒng)文本編程語言根據(jù)語句和指令的先后順序決定程序執(zhí)行順序,而LabVIEW則采用數(shù)據(jù)流編程方式,程序框圖中節(jié)點(diǎn)之間的數(shù)據(jù)流向決定了函數(shù)的執(zhí)行順序。LabVIEW的強(qiáng)大之處就是對(duì)數(shù)據(jù)庫的訪問功能,這樣就能實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的存儲(chǔ)、管理和查詢作業(yè)。
使用LABVIEW圖形化編程軟件,這里主要利用了LabVIEW的圖形化編程和顯示控件的優(yōu)勢(shì)來處理SQLServer產(chǎn)生的數(shù)據(jù),再將數(shù)據(jù)顯示在電視屏幕上并滾動(dòng),同時(shí)利用LabVIEW的ACTIVE容器的特性來實(shí)現(xiàn)WEB頁面的內(nèi)嵌和顯示,使得顯示畫面更具動(dòng)感和視覺沖擊,避免了數(shù)據(jù)顯示的單調(diào)和枯燥。
數(shù)據(jù)庫是信息的集成,幾乎所有的信息都是以表的方式存在,而要將這些信息以恰當(dāng)合理的方式顯示出來,我們使用了LABVIEW這個(gè)編程工具,除對(duì)數(shù)據(jù)庫操作外,LABVIEW還能通過ACTIVE容器調(diào)用網(wǎng)頁,這樣就能更充分發(fā)揮數(shù)據(jù)庫和LABVIEW的特點(diǎn)和優(yōu)勢(shì),強(qiáng)化信息的動(dòng)態(tài)顯示效果。
微軟視窗操作平臺(tái)中的ODBC實(shí)現(xiàn)了對(duì)局域網(wǎng)和互聯(lián)網(wǎng)中服務(wù)器數(shù)據(jù)庫的有效鏈接,LabVIEW就能調(diào)取分布于不同地點(diǎn)數(shù)據(jù)庫的數(shù)據(jù),進(jìn)而分享和處理數(shù)據(jù),實(shí)現(xiàn)了遠(yuǎn)程數(shù)據(jù)庫的調(diào)用。
1 問題的提出和分析
在企業(yè)的信息化進(jìn)程中,業(yè)務(wù)系統(tǒng)積累了很多數(shù)據(jù),如何從眾多的數(shù)據(jù)中提取出有用的信息并加以處理和呈現(xiàn)確實(shí)是個(gè)棘手的問題,于是針對(duì)具體的作業(yè)需求,就提出了以下3個(gè)要求。第一要求將未完成的和新建立的工單用大屏顯示出來,且要求不斷滾動(dòng);第二個(gè)問題是要求調(diào)用總調(diào)系統(tǒng)的船舶動(dòng)態(tài)海圖,以便動(dòng)態(tài)顯示船舶信息和位置;第三個(gè)問題是要求僅顯示一個(gè)月內(nèi)的數(shù)據(jù),以便快速瀏覽。
對(duì)于第一個(gè)問題,需要對(duì)SQLServer的數(shù)據(jù)庫進(jìn)行分析,在獲取接入密碼后還需要了解眾多的表單以及表單之間的相互關(guān)系。由于我們無需對(duì)存在的數(shù)據(jù)進(jìn)行更改,因此僅需要編制查詢語句來獲取信息。通過編制程序來實(shí)現(xiàn)信息的排序和篩選,同時(shí)提取出一段日期內(nèi)的信息,加上分頁顯示即可。對(duì)于第二個(gè)問題,需要用到LabVIEW的多線程特性,在處理數(shù)據(jù)庫信息的同時(shí),將總調(diào)系統(tǒng)的船舶動(dòng)態(tài)海圖顯示出來,且可以單獨(dú)操作不影響數(shù)據(jù)庫信息的處理。第三個(gè)問題就是篩選出一個(gè)月的信息,這樣翻頁的次數(shù)就可以減少,為適應(yīng)不同的要求,將月份設(shè)計(jì)成可以在1月和12月之間選擇。具體方案如圖1:
2 采用的技術(shù)
2.1 開放數(shù)據(jù)互連技術(shù)(ODBC)
如果要實(shí)現(xiàn)LabVIEW編程軟件對(duì)遠(yuǎn)程數(shù)據(jù)庫的操作,就需要利用ODBC這個(gè)技術(shù)連接LABVIEW主程序和遠(yuǎn)程SQLServer數(shù)據(jù)庫,這樣才能調(diào)用SQLSERVER數(shù)據(jù)庫的數(shù)據(jù)并處理。
ODBC(OpenDatabaseConnectivity,開放數(shù)據(jù)互連)是數(shù)據(jù)庫與應(yīng)用程序之間的一個(gè)公共編程接口,應(yīng)用程序通過訪問ODBC而不是直接訪問具體數(shù)據(jù)庫來與數(shù)據(jù)庫通信,因此ODBC具有簡(jiǎn)單、標(biāo)準(zhǔn)、透明的數(shù)據(jù)庫連接特性,極大地方便了用戶編程。
實(shí)際上LABVIEW與SQLSERVER數(shù)據(jù)庫的溝通就是通過ODBC,要成功實(shí)現(xiàn)兩個(gè)不同軟件間的數(shù)據(jù)傳遞和調(diào)用,還需要依據(jù)需求對(duì)ODBC進(jìn)行必要的設(shè)置。
進(jìn)入控制面板,選管理工具,執(zhí)行數(shù)據(jù)源(ODBC),然后在打開的ODBC數(shù)據(jù)源管理器中選系統(tǒng)DSN,由于是遠(yuǎn)程數(shù)據(jù)庫,因此只能選擇系統(tǒng)DSN來進(jìn)行配置,點(diǎn)添加按鈕出現(xiàn)數(shù)據(jù)源數(shù)據(jù)對(duì)話框,選擇SQLServer數(shù)據(jù)庫,點(diǎn)擊完成后出現(xiàn)DSN配置對(duì)話框,這時(shí)你就可以添加連接數(shù)據(jù)源名稱,數(shù)據(jù)源的名稱必須是唯一的且易識(shí)別,此外還需要選擇一個(gè)數(shù)據(jù)庫所在服務(wù)器的IP地址。如圖2所示:
這樣在ODBC數(shù)據(jù)庫管理器中就可以看到新建的DSN了,單擊確定就完成了DSN的建立工作,然后ODBC和SQLServer就建立了連接,通過定義好的名稱就可以對(duì)SQLServer進(jìn)行數(shù)據(jù)庫操作了。
2.2 LabVIEW的ActiveX的數(shù)據(jù)對(duì)象技術(shù)ADO
LabVIEW要建立與數(shù)據(jù)庫的溝通,需要借助于互連接口ActiveX,利用其數(shù)據(jù)對(duì)象ADO(ActiveXDataObjects)來實(shí)現(xiàn)數(shù)據(jù)庫的編程,ADO通過編程模型實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的操作,具體的操作為:
實(shí)際上在LabVIEW中,ADO已經(jīng)被打包成了數(shù)據(jù)庫訪問包,即LabSQL,這個(gè)包需要安裝到LabVIEW的user.Lib目錄下,然后就可以使用這些LabSQL的函數(shù)了。函數(shù)庫如圖3所示:
2.3 LabVIEW的對(duì)象鏈接和嵌入技術(shù)ActiveX
ActiveX能將多個(gè)程序連接在一起實(shí)現(xiàn)復(fù)雜的運(yùn)算,通過LabVIEW的ActiveX對(duì)象就能方便地實(shí)現(xiàn)瀏覽網(wǎng)頁、播放影片、播放音樂等。這里L(fēng)abVIEW將作為ActiveX服務(wù)器,支持ActiveX容器,這樣就可以在LabVIEW前面板顯示ActiveX的對(duì)象。ActiveX容器控件如圖4所示:
3 功能實(shí)現(xiàn)與編程
3.1 SQLServer查詢語句編程
SELECTshipname,vno,adddate,header,state
FROMCSTEL.dbo
WHERESTATE<80
ORDERBYadddate,shipnameASC
對(duì)數(shù)據(jù)庫的查詢相對(duì)簡(jiǎn)單,將數(shù)據(jù)庫CSTEL中取出5個(gè)字段,其中將條件設(shè)置為狀態(tài)字段的值小于80才被選出,然后按照降序排列。
3.2 LabVIEW編程
程序流程圖,如圖5所示:
整個(gè)程序有5個(gè)基本模塊組成,即SQLServer數(shù)據(jù)庫處理模塊、幾月前具體日期計(jì)算模塊、信息分頁滾動(dòng)顯示處理模塊、AIS總調(diào)顯示處理模塊、標(biāo)題合成模塊、AIS總調(diào)顯示處理模塊,各個(gè)模塊具體作用如下:
SQLServer數(shù)據(jù)庫處理模塊---通過ADO對(duì)SQL數(shù)據(jù)庫進(jìn)行操作,輸入SQL語句并將所需要的數(shù)據(jù)篩選出來等待處理;
幾月前具體日期計(jì)算模塊---通過當(dāng)前日期計(jì)算出一個(gè)月或幾個(gè)月前的年月日,作為信息的進(jìn)一步篩選用;
信息分頁滾動(dòng)顯示處理模塊---從數(shù)據(jù)庫獲得的數(shù)據(jù)在這里進(jìn)行去除時(shí)間處理、分頁處理、滾動(dòng)處理,同時(shí)提取出總的未審核工單和一段日期內(nèi)的未審核工單,然后在插入標(biāo)題行后顯示;
標(biāo)題合成模塊---將數(shù)組的各個(gè)字段用標(biāo)題的方式合成一個(gè)一維數(shù)組,供信息顯示用;
AIS總調(diào)顯示處理模塊---利用ActiveX容器,將容器設(shè)置為瀏覽器類,然后指向AIS總調(diào)系統(tǒng)網(wǎng)站,同時(shí)將網(wǎng)站顯示出來。
此外程序定時(shí)對(duì)數(shù)據(jù)庫和顯示的信息進(jìn)行刷新,保證所顯示的信息是最新的。
程序片斷如圖6所示:
4 實(shí)際應(yīng)用
圖7是實(shí)際運(yùn)行的顯示效果,電視畫面上顯示了船名、工單號(hào)、入單時(shí)間、工程項(xiàng)目等信息,考慮到船舶位置與信息的相關(guān)性,我們集成了中海集團(tuán)內(nèi)部總調(diào)系統(tǒng),可以實(shí)現(xiàn)船位信息查詢和航跡顯示,顯示船隊(duì)和港口航行狀態(tài)信息,包括顯示氣象信息。這里的主要功能就是實(shí)現(xiàn)對(duì)指定船舶的靠泊位置信息,以便提供快速有效的上船服務(wù)。
5 結(jié)束語
綜上所述,LABVIEW可以對(duì)SQLServer數(shù)據(jù)庫進(jìn)行直接的控制以及提取想要的數(shù)據(jù),同時(shí)也能對(duì)數(shù)據(jù)進(jìn)行各種靈活的處理,完全可以滿足管理人員對(duì)數(shù)據(jù)的要求,顯示信息只是其中的一種圖示應(yīng)用,其應(yīng)用技術(shù)更可以因用戶不斷提升的需求而獲得發(fā)展,或者開發(fā)一些應(yīng)用程序來不斷地滿足我們的要求。通過可視化編程增加選擇的靈活性,不斷地追求技術(shù)手段的多樣化,開拓思想,創(chuàng)新理念,不斷地適應(yīng)信息化的發(fā)展,增加信息調(diào)理手段,提升企業(yè)的管理水平。
這里描述的數(shù)據(jù)庫應(yīng)用,從一個(gè)側(cè)面反映了信息化管理的趨勢(shì),技術(shù)的發(fā)展推進(jìn)了信息化創(chuàng)新應(yīng)用,方法和手段的多樣性更能體現(xiàn)信息技術(shù)對(duì)企業(yè)發(fā)展的促進(jìn)作用。
實(shí)際上看似毫不相干的兩個(gè)編輯程序,通過鏈接技術(shù)完全可以進(jìn)行數(shù)據(jù)交換,LABVIEW可以執(zhí)行SQLServer的數(shù)據(jù)庫管理語句,而SQLServer也能對(duì)LABVIEW創(chuàng)建的表單進(jìn)行處理;同時(shí)也能通過容器調(diào)用遠(yuǎn)程網(wǎng)頁。在數(shù)據(jù)交換和網(wǎng)頁調(diào)用的同時(shí)也要看到風(fēng)險(xiǎn),由于LABVIEW對(duì)SQLServer可以修改數(shù)據(jù)庫的數(shù)據(jù),因此對(duì)于應(yīng)用編程而言,要避免直接對(duì)數(shù)據(jù)庫進(jìn)行修改。
項(xiàng)目也有提高的方面,目前處理的信息比較單一,依據(jù)編程工具的強(qiáng)大功能,完全可以拓展管理信息的提取,為企業(yè)信息化管理提供更大的作用。
參考文獻(xiàn)
[1]陳錫輝.LabVIEW 8.20程序設(shè)計(jì)從入門到精通[M].清華大學(xué)出版社,2007.
[2]周鵬.精通LabVIEW信號(hào)處理[M].清華大學(xué)出版社,2013.