楊澤偉 鐵法煤業(集團)有限責任公司曉南礦
目前,井口顯示人員信息系統采用的是asp語言設計,數據存取采用的是入棧和出棧的方式一次取出多組數據,按一定時間進行數據讀取,在測試過程中會發生時間偏差,使顯示信息和提出的聲音文件不能同步,達不到系統的要求。由于現系統不能修改,本文以c#語言代碼為標準,闡述動態指針的設計方法。
ASP.NET是微軟公司推出的一種Internet編程技術,它采用效率較高的、面向對象的方法來創建動態Web應用程序。在原來的ASP技術中,服務器端代碼和客戶端HTML混合在一起,常常導致頁面的代碼冗長而復雜,程序的邏輯難以理解。ASP.NET是一種獨立于瀏覽器的編程模型,可以在最新版本的IE、NetscapeNavigator以及諸如Opera等被廣泛使用的瀏覽器上運行。
現在礦內井口屏幕顯示入井人員信息系統從數據庫中取數據的方法采用的是按時間段一次取出多組數據后存在本地緩存中,再和服務器中人員聲音進行對比播放到屏幕上,等這組數據都執行完成后再從數據庫中取下組數據存入本地緩存中,在測試過程中發現數據和人員聲音會發生偏差的問題,這是由于asp不能同時取出數據和聲音所產生的問題。
COM是開發軟件組件的一種方法。組件實際上是一些小的二進制可執行程序,它們可以給應用程序,操作系統以及其他組件提供服務。開發自定義的COM組件就如同開發動態的,面向對象的API。多個COM對象可以連接起來形成應用程序或組件系統。并且組件可以在運行時刻,在不被重新鏈接或編譯應用程序的情況下被卸下或替換掉。Microsoft的許多技術,如ActiveX,DirectX以及OLE等都是基于COM而建立起來的。并且Microsoft的開發人員也大量使用COM組件來定制他們的應用程序及操作系統。入井信息系統運行時要顯示人員照片、聲音、安全寄語等信息,為了同時顯示這些信息,調用vs2005的com組件把系統自帶的WindowsMediaPlayer播放器加入到了窗口中,這樣可以把事先錄制好的家屬對員工的安全寄語通過指針調用播放出來。WindowsMediaPlayer播放器只是用來播放聲音,不用顯示在主界面上,所以它的控件布局選擇了Invisible,在主界面不會顯示播放器的窗口,使界面美觀。
初始狀態是程序在最開始運行時把所需的數據和變量都調用到程序中,首先從數據庫中按當天一小時內的數據用sql語句進行篩選取入數據集中,這時我們可以看到一小時內的數據,從這些字段中把下井時間作為主鍵存放到文本中,為后面的調用做比較使用。這時以數據集中第一條數據作為動態指針的開始位置,取出人員姓名、安全寄語等信息顯示在窗口上。以員工職號為主鍵調出服務器中的聲音文件,使用WindowsMediaPlayer播放器進行播放,這樣就完成了數據和指針的初始狀態設置。
在對數據庫操作時,對調用的表設置一個記錄位置的指針,指針所指向的記錄稱為當前記錄,用sql語句可返回指針所指向的記錄值。當要修改某條數據時,需將指針指向該記錄。在表文件打開時,記錄指針指向第一條記錄,即首記錄成為當前記錄。記錄指針可以移動指向任何一個記錄位置上,也可指向最后一個條記錄,這時指針再向下移動一條時可能判斷出是否到表尾。當記錄指針指向表尾時,可以用記錄數返回條數,當無數據時返回值為0。
指針循環調用是本系統中的重點,由于數據庫是時時更新的,因此用一個時間控件,設置時間控件激活為7秒,這樣每7秒時間就會重新調用一次指針,讓篩選數據和顯示數據通過指針聯結起來,達到系統要求。首先,從初始狀態中取出人員下井時間字段作為標識,然后,在數據庫中進行第一次數據篩選,把數據庫中一小時內人員存入中間表。這里需要進行一次判斷,因為對數據庫取數時可能暫時無下井人員,無人員時讓屏幕顯示無人員,把指針所指向最后一條數據記錄內容取出存入中間變量。當根據標識數據取出大于下井時間數據后,指針指向數據庫第一條記錄,取出人員信息顯示到屏幕上,把下井時間信息存入到中間變量。在時間控件下次執行時系統根據中間變量再次的根據條件取出數據,指針再次指向第一條數據取出人員信息,就樣就達到了指針的循環調用,每次時間控件都會更新一次,數據指針會重新調用一次。
通過對井口人員信息系統的改進,使用動態指針讓系統對人員信息達到了時間監控,使管理人員方便管理。使用時間控件和指針相結合,設計出循環指針,實現了動態調用數據的要求,完成了系統要求。