3.3 在接收端建立數(shù)據(jù)庫
數(shù)據(jù)的存放形式是一個值得考慮的問題。由于數(shù)據(jù)需要頻繁的存取,所以選用了數(shù)據(jù)庫。是建一個庫還是建多個庫?雖然暫時需要傳送的數(shù)據(jù)為100個,但建庫時需要考慮到以后需求的增長。如果建立一個數(shù)據(jù)庫,所有數(shù)據(jù)存放在一個庫里,查詢刷新記錄時會耗費很多時間,會降低通訊的性能。于是選用一個工位建立一個數(shù)據(jù)庫,存放一條記錄。使用多庫需多占用一些硬盤空間,一個庫結(jié)構(gòu)、一個表、一條記錄占120KB的空間,100個庫共占1.2M空間。一個庫僅一條記錄,可以縮短查詢刷新記錄的時間,符合實時傳送的要求。為了編程方便,數(shù)據(jù)庫名稱、表名稱與工位號名稱相同。每個庫包括三個字段,分別為工位名稱、測量值、接收時間。
3.4 通訊中服務(wù)器數(shù)據(jù)的接收與存放
(1) 數(shù)據(jù)接收
VB的工具箱提供了許多程序開發(fā)的控件,并提供了用來擴(kuò)充工具箱的Active控件,其中的Communications控件,可以用來提供簡單的串行端口通訊功能,也可以用來創(chuàng)建功能完備的、事件驅(qū)動的高級通訊工具。并且VB具有數(shù)據(jù)庫操作功能,可以滿足從DCS來的通訊數(shù)據(jù)的存放要求。
? 定義接收數(shù)據(jù)窗體(Receive)
窗體對象是Visual Basic應(yīng)用程序的基本構(gòu)造模塊,是運行應(yīng)用程序時,與用戶交互操作的實際窗口。窗體有自己的屬性、事件和方法,控制窗體的外觀和行為。定義一個名為Receive的窗體,利用窗體屬性設(shè)計窗體的外觀,作為接收數(shù)據(jù)時的運行窗口。
在Receive窗體上定義一個Communications控件,并設(shè)置它的屬性。使此控件在窗體運行時不顯示它的控件圖標(biāo)。為了使此控件能夠正常投入運行,需對它的屬性進(jìn)行設(shè)置。它的握手屬性設(shè)置為0,即不使用握手協(xié)議,因為在發(fā)送數(shù)據(jù)時采用延時方法發(fā)送數(shù)據(jù),在接收端有足夠的時間把輸入緩存區(qū)內(nèi)的數(shù)據(jù)取走并處理。設(shè)置RThreshold屬性的值為121