北京科技大學(xué)軟件課程設(shè)計報告_第1頁
北京科技大學(xué)軟件課程設(shè)計報告_第2頁
北京科技大學(xué)軟件課程設(shè)計報告_第3頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、科技大學(xué)課程設(shè)計(軟件設(shè)計)報告班 級:姓 名:學(xué) 號:同組同學(xué):指導(dǎo)教師:曾慧日 期:2014 年11 月13 日1設(shè)計容 11.1實驗?zāi)康?11.2實驗容 12應(yīng)用程序總體分析與設(shè)計 12.1項目建立 22.1.1 建立一個 Visual Basic 工程 22.2 OPC建立 22.2.1 設(shè)置 OPC包裝 DLL 2建立一個OPC對象 23應(yīng)用程序各功能模塊分析與設(shè)計 43.1界面設(shè)計 43.2服務(wù)器的斷開與 5連接OPC服務(wù)器和建立 OPC組 5添加OPC標簽 5斷開服務(wù)器 63.3數(shù)據(jù)讀取與顯示 7棒狀圖顯示 73.3.2 文本框顯示 83.4數(shù)據(jù)保存 83.5實時曲線繪制 84程

2、序測試 104.1測試過程 104.2測試結(jié)果 105程序文檔 135.1使用說明 135.2程序清單 136總結(jié) 186.1問題與解決 186.2感想與致 197參考文獻 191設(shè)計容1.1實驗?zāi)康耐ㄟ^實際操作進一步了解OPCI勺各種概念,掌握OPC客戶端的編寫方法。并 對微軟的DCO有一定的了解,要求通過合適的DCO配置,使客戶端能夠讀取網(wǎng) 絡(luò)上服務(wù)器中的數(shù)據(jù)。1.2實驗容1)利用VB語言編寫出一個簡單的OPC客戶端程序,要求這個客戶端能夠讀 取服務(wù)器中的數(shù)據(jù),并顯示出來。2)配置DCOM使客戶端能夠能過 DCO讀取另一臺服務(wù)器上的數(shù)據(jù)。2應(yīng)用程序總體分析與設(shè)計應(yīng)用程序與OPCK務(wù)器進行連

3、接并讀取服務(wù)器端的數(shù)據(jù),同時把讀取到的數(shù) 據(jù)通過棒柱和文本框顯示,并可以保存數(shù)據(jù)便于查找,同時應(yīng)用了 Picture控件 對實時數(shù)據(jù)變化趨勢分析。2.1項目建立2.1.1 建立一個 Visual Basic 工程1)啟動 Visual Basic, 新建一個 Visual Basic 工程。選擇Standard EXE作為新建工程的類型。圖2.1 Visual Basic工程的建立2.2 OPC 建立設(shè)置OPC包裝DLL對OPC包裝DLL進行注冊:從Visual Basic 菜單里選擇Project-References。在Available References 表示中,選擇OPCAutom

4、ation 2.0。圖2.2引用的設(shè)置建立一個OPC對象在Visual Basic 里,是以對象的單位對 OPC!務(wù)器進行訪問。OPd動化接口是由以下四種對象所定義opC艮務(wù)器OPC&( OPC組集合)OPC標簽(OPC標簽集合)OPC瀏覽器1)變量聲明圖2.3 OPC對象變量的聲明 其中,部分變量聲明意義見表所示。表2.1 OPC對象變量的聲明變量名說明objServerOPCServer對象,用于連接 OP。艮務(wù)器。objGroupsOPCGroup對象,用于添加OPCfi的OPC&集合objTestGrpOPCGrou對象,演示用的OPC組。objItemsOPCItem

5、s對象,用于添加OPC標簽的OPC標簽集合。IServerHa ndles()長整型的數(shù)組,用于保存OPC標簽的服務(wù)器句柄。3應(yīng)用程序各功能模塊分析與設(shè)計3.1界面設(shè)計j OC Ac p catic1' Z'ernonbt?)S孫統(tǒng)譏fj找杰品不-車時救據(jù)更羽IT好注LobeLVLnbrl4宜時曲鯊彊蹤nit 連五r、溫帝輕示誥膜站、Eha/5iup口 | 國r I , I I I I r I I I I 擬作血扳AtDeii trier張怛劉啟瞎圖3.1界面效果圖窗體中所使用的控件種類如表3.1所示表3.1 FmMain的控件控件名稱窗體(Form)FmMai n命令按鈕(C

6、ommandButton)BtnConn ect命令按鈕(CommandButton)Bt nAddltem命令按鈕(CommandButton)Bt nQuit命令按鈕(CommandButton)Btn Save命令按鈕(CommandButton)Btn Stop命令按鈕(CommandButton)Bt ndraw定時器(Timer)tmUpdate定時器(Timer)dataUpdate對話框(CommonDialog)Common Dialog1圖像(PictureBox)picBar(作為數(shù)組使用,從左開始12)標簽(Label)lbBar(作為數(shù)組使用。從左開如12)文本框仃e

7、xtBox)dataI nfo圖像(Picture)Picture13.2服務(wù)器的斷開與321連接OPC服務(wù)器和建立OPC組這里用“ NEV”關(guān)鍵詞生成OPC服務(wù)器的對象,然后調(diào)用OPC服務(wù)器對象的“Connect”方法,和OPC服務(wù)器連接。Connect子程序如下:'連接OPC服務(wù)器和建立OPC組Sub Connect(strProglD As String, Optional strNode As String)If objServer Is Nothing Then'建立一個OPC服務(wù)器對象Set objServer = New OPCServerEnd IfIf obj

8、Server.ServerState = OPCDisconnected Then' 連接OPC服務(wù)器objServer.Connect strProgID, strNodeEnd IfIf objGroups Is Nothing Then'建立一個OPC組集合Set objGroups = objServer.OPCGroupsEnd IfIf objTestGrp Is Nothing Then' 添加一個OPC組Set objTestGrp = objGroups.Add("TestGrp")End IfEnd Sub添加OPC標簽對OPC服

9、務(wù)器進行訪問前,必須先在OPC組里添加要訪問的OPC標簽。AddItem子程序如下:'添加OPC標簽Sub AddItem()Dim strltemlDs(8) As StringDim ICIientHandles(2) As LongDim lErrors() As LongDim I As IntegerIf objTestGrp Is Nothing ThenExit SubEnd IfIf Not objItems Is Nothing ThenIf objItems.Count > 0 ThenExit SubEnd IfEnd If'設(shè)置組活動狀態(tài)objTe

10、stGrp.IsActive = True'取消組非同期通知objTestGrpsSubscribed = False' 建立OPC項集合Set objItems = objTestGrp.OPCItems'生成標簽的項標識符For I = 1 To 2strltemlDs(l) = "TAG"ICIientHandles =INext' 添加OPC項Call objltems.Addltems(8, strItemIDs, _ICIientHandles, IServerHandles, lErrors)End Sub斷開服務(wù)器連接著OP(

11、服務(wù)器的OPC應(yīng)用程序,在退出前必須斷開和0P(服務(wù)器的連接。 因為OPC服務(wù)器并不知道OPC應(yīng)用程序的退出,如果不先斷開連接,那么OPC服務(wù)器使用的計算機資源就不被釋放。 如果這樣的問題反復(fù)發(fā)生,久而久之,連 續(xù)運轉(zhuǎn)的自動控制系統(tǒng)可能會使計算機資源漸漸枯竭從而發(fā)生嚴重問題。Disconnect子程序如下:'斷開OPO務(wù)器Sub Disconnect()Dim IErrors() As LongIf Not objItems Is Nothing ThenIf objltems.Count > 0 Then'清除OPC項objltems.Remove 2, IServer

12、Handles, lErrorsEnd IfSet objItems = NothingEnd IfIf Not objTestGrp Is Nothing Then' 清除OPC組objGroups.Remove "TestGrp"Set objTestGrp = NothingEnd IfIf Not objGroups Is Nothing ThenSet objGroups = NothingEnd IfIf Not objServer Is Nothing ThenIf objServer.ServerState <> OPCDisconnec

13、ted Then'斷開OPC服務(wù)器.objServer.DisconnectEnd IfSet objServer = NothingEnd IfEnd Sub3.3數(shù)據(jù)讀取與顯示客戶端使用2個定時器TmUpdate和dataUpdate,定時為1S。在TmUpdate 事件中調(diào)用同步讀取數(shù)據(jù)函數(shù)SyncRead每隔1S讀取服務(wù)器端的數(shù)據(jù),同時對棒柱的顯示進行刷新。在定時器dataUpdate事件中讀取系統(tǒng)時間并不斷刷新TextBox的容,顯示當(dāng)前的時間和數(shù)據(jù)。棒狀圖顯示為了是顯示更加人性化,對不同圍的數(shù)值顯示采用了不同的顏色。當(dāng)數(shù)值過低或者過高時分別顯示深藍色和紅色以示警告。中間值顯

14、示綠色和橙黃色。程序代碼如下所示:SyncRead OPCCache, vtltemValues, lErrors'棒圖的表示For I = 1 To 2'數(shù)據(jù)的格式化strBuf = Format(vtltemValues(l), "#.000")'表示數(shù)據(jù)字符串lbBar(I).Caption = strBufdataTemp(I) = strBuf'計算棒的寬和高nWidth = picBar(l).ScaleWidthnHeight = picBar(l).ScaleHeightsglScale = vtltemValues(I) /

15、 100nDrawHeight = CInt(nHeight * sglScale)'清除現(xiàn)棒圖picBar(I).Cls'繪制棒圖If vtltemValues(I) < tHoldValuel ThenpicBar(l).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), RGB(0, 0, 255), BFElseIf vtltemValues(I) < tHoldValue2 ThenpicBar(I).Line (0, nHeight - tHoldValuel / 100 * nHeight)-(nWid

16、th, nHeight), RGB(0, 225,0), BFpicBar(I).Line (0, nHeight - nDrawHeight)-(nWidth, (1 - tHoldValue1 / 100) * nHeight),RGB(225, 225, 0), BFElsepicBar(I).Line(0, nHeight - tHoldValue1 / 100 * nHeight)-(nWidth, nHeight),RGB(0, 225,0), BFpicBar(I).Line(0, nHeight - tHoldValue2 / 100 * nHeight)-(nWidth, (

17、1 - tHoldValue1 / 100)* nHeight), RGB(225, 225, 0), BFpicBar(I).Line (0, nHeight - nDrawHeight)-(nWidth, (1 - tHoldValue2 / 100) * nHeight),RGB(255, 0, 0), BFEnd IfEnd IfIf I = 1 Theny(num1) = vtltemValues(I)num1 = num1 + 1Elsez(num2) = vtltemValues(I)num2 = num2 + 1End IfNextEnd Sub332文本框顯示程序代碼如下:P

18、rivate Sub dataUpdate_Timer()If SaveFlag Then '保存數(shù)據(jù)結(jié)束后清除原來的數(shù)據(jù)datalnfo.Text = Year(Now() & Month(Now() & Day(Now() & ""& Hour(Now() & ":"& Minute(Now() & ":" & Second(Now() & ""& "反應(yīng)罐溫度:"& dataTemp(1) &a

19、mp; "" &"反應(yīng)罐液位:"& dataTemp(2) & Chr(13) & Chr(1O)SaveFlag = FalseElsedataInfo.Text = dataInfo.Text & Year(Now() & Month(Now() & Day(Now() & "" &Hour(Now() & ":" & Minute(Now() & ":" & Second(Now() &

20、amp; ""& "反應(yīng)罐溫度:"& dataTemp(1)& "" & "反應(yīng)罐液位:"& dataTemp(2) & Chr(13) & Chr(10)End IfEnd Sub3.4數(shù)據(jù)保存此處定義bool型的SaveFlag為保存標志,在保存時停止對新的數(shù)據(jù)的接收。 主要用到Com mon Dialog控件。該控件可用于創(chuàng)建“文件打開”、“文件保存”、“文件打印”、“顏色設(shè)置”、“字體設(shè)置”、“幫助”6種對話框。程序代碼如下所示:Private Sub

21、 BtnSave_Click()TmUpdate.Enabled = FalsedataUpdate.Enabled = FalseCommonDialog1.DialogTitle =" 另存為"CommonDialog1.DefaultExt = "txt"CommonDialog1.ShowSaveIf Len(CommonDialog1.FileName) > 0 ThenOpen CommonDialogl.FileName For Output As #1Print #1, dataInfo.TextClose #1SaveFlag =

22、 TrueEnd IfEnd Sub3.5實時曲線繪制Picture是功能強大坐標圖繪制軟件,本次設(shè)計中采用 VB中Picture控件 進行實時曲線繪制。在設(shè)計時添加2個系列曲線,代表兩個通道,即溫度和液位 與時間的關(guān)系。并在圖中繪出兩條警戒線,能更直觀地比對數(shù)據(jù)的變化。實時曲線跟蹤時聞圖 3.2Picture 設(shè)置部分程序代碼如下所示:Picturel.CIsIf Checkl.Value = 0 ThenIf col < 201 ThenFor u = 1 To 2For j = col To colX = jY = vtltemValues(u)px(j, u) = Xpy(j,

23、u) = 丫Next jNext ucol = col + 1pl = pl + 1ElseFor s = 1 To 2For t = 1 To 199px(t, s) = tpy(t, s) = py(t + 1, s)Next tpy(200, s) = vtltemValues(s)Next sEnd IfElsecol = colEnd IfIf pl >= 2 ThenFor w = 1 To 2Picture1.PSet (px(1, w), py(1, w)For j = 2 To colPicture1.L ine -(px(j - 1, w), py(j - 1, w)

24、, QBColor(w * 2)Next jNext wEnd If'畫兩條警戒線Picture1.DrawWidth = 2Picture1.Line (0, 150)-(200, 150), vbRedPicture1.Line (0, 600)-(200, 600), vbBlue'指示警戒值,警戒值以上改變顯示顏色If lbBar(1).Caption > 150 Or lbBar(2).Caption > 600 ThenLabel7.Caption =" 出現(xiàn)異常!"ElseLabel7.Caption =" 正在觀測!&q

25、uot;End IfIf lbBar(1).Caption > 150 ThenText2.Text =" 溫度過高!"picBar(1). Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _RGB(255, 0, 0), BFEnd IfIf lbBar(1).Caption < 150 ThenText2.Text =" 溫度平穩(wěn)!"picBar(1) .L ine (0, nHeight - nDrawHeight)-(nWidth, nHeight), _RGB(0, 255, 0

26、), BFEnd IfIf lbBar(2).Caption > 600 ThenText1.Text ="液面過高!"picBar(2).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _RGB(255, 0, 0), BF4程序測試4.1測試過程運行程序后,先單擊“連接”按鈕,保證客戶端連接上組態(tài)王數(shù)據(jù)庫。然后 單擊“加載”按鈕,觀察數(shù)據(jù)時候正常顯示,棒柱的數(shù)據(jù)和顏色是否正常,文本 框的時間和數(shù)據(jù)是否正常以及看是否能實時顯示曲線。單擊“保存數(shù)據(jù)”按鈕, 彈出對話框,選擇路徑,填寫文件名后保存數(shù)據(jù)。最后單擊“退出

27、”按鈕,看成 否正常退出程序。運行程序,注意將bin文件夾放到工程下。4.2測試結(jié)果從測試結(jié)果上看,整個程序沒有bug,各個功能正常。從繪圖的結(jié)果可以看 出從服務(wù)器傳來的數(shù)據(jù)是按正弦規(guī)律變化的。2014年:U月:U日萊鑫存狀態(tài)呈示現(xiàn)在時間冷時10分4秒幌作育板-丈時曲線跟蹤岀現(xiàn)異常!辰盍罐畐度 反應(yīng)蘇立1GD. 473MO. OOC遺怪、溫當(dāng)顯示(迪恆紅,禺駕)退出悍存油據(jù)廠 RuDj'Stopnx32OLMlli4ZtlAlHAZU1UL1421J1UL142010114 ztiuiu2H1U1142014LLUW9 g g0 1239 0 y i 111:4 7 93 日掃另41鳳

28、網(wǎng) ® o i - “ J - r ; y ofc 4 6 a-td T 3 6 5- L 4- 怎 4 1111T監(jiān)1郵二lln:IX番UesLEner味恒劉啟焙白童圖4.1程序測試圖一201411 月 14 日硯在時何:9時14分2秒抹作面板岀現(xiàn)異卒!實時曲線跟蹤溫蔭討高!夜位、溫卓顯丟(Sf&tt-爲(wèi)度辯)實時歆抵更新|7 Rin/StfltRj另存為S:201電111起3:14:5201411143:14:G201111149:14:7201«1143;14;0331電111屯3:14:9£01411143:14:10h 154. IBS h 15

29、0. 49E h 117. 933F; 50.1ST:103. 384 S- i3G-279圖4.2程序測試圖* *U(E!)卜亨二蚪* » ve »kfliH *爭理文禪夫-.WBE=1- .tni«卜載主雨OPC_數(shù)石±xt-7庫3 w*=國=T 7*7*5Designer 張恒 劉啟畤 白童E!|勺| 橫索VQP歸-<&鞘曰悶斎耶1014-11 13 2145丈稈關(guān)20JU1 11 14 y:15丈不之也亶件芒恨;tVr?iSi電消圖4.3保存數(shù)據(jù)5程序文檔5.1使用說明(1) 運行程序,連接成功后,啟動,此時棒狀圖以及文本框就會顯示

30、反應(yīng) 罐溫度和反應(yīng)罐液位的值。(2) 當(dāng)數(shù)據(jù)積累到一定程度之后,點擊“繪圖”按鈕,應(yīng)罐溫度和反應(yīng)罐液位數(shù)值變化曲線就會顯示出來,每點擊一次,就會刷新一次。從而實現(xiàn)了數(shù)據(jù)的實時顯示。程序中數(shù)據(jù)刷新為1s,因此在點擊“繪圖”按鈕時頻率最好不要 超過1s。(3) 保存數(shù)據(jù)。點擊“保存”按鈕,會彈出對話框,輸入響應(yīng)的文件名保 存便可。保存數(shù)據(jù)后,所有歷史數(shù)據(jù)會被清空。5.2程序清單Option Base 1Option ExplicitDim WithEvents objServer As OPCServerDim objGroups As OPCGroupsDim objTestGrp As OPC

31、GroupDim objItems As OPCItemsDim IServerHandles() As LongDim px(200, 2) As Single, py(200, 2) As SingleDim col As IntegerDim pl As IntegerDim dataTemp(2) As StringDim DrawFlag As BooleanDim SaveFlag As BooleanSub Connect(strProglD As String, Optional strNode As String)If objServer Is Nothing Then

32、9;建立一個OPC服務(wù)器對象Set objServer = New OPCServerEnd IfIf objServer.ServerState = OPCDisconnected Then' 連接OPC服務(wù)器objServer.Connect strProgID, strNodeEnd IfIf objGroups Is Nothing Then'建立一個OPC組集合Set objGroups = objServer.OPCGroupsEnd IfIf objTestGrp Is Nothing Then'添加一個OPC組Set objTestGrp = objGr

33、oups.Add("TestGrp")End IfEnd SubSub Addltem()Dim strltemlDs(2) As StringDim ICIientHandles(2) As LongDim IErrors() As LongDim I As IntegerIf objTestGrp Is Nothing ThenExit SubEnd IfIf Not objItems Is Nothing ThenIf objItems.Count > 0 ThenExit SubEnd IfEnd If'設(shè)置組活動狀態(tài)objTestGrp.lsActi

34、ve = True'取消組非同期通知objTestGrpsSubscribed = False'建立OPC項集合Set objItems = objTestGrp.OPCItems'生成標簽的項標識符strltemlDs(l)="反應(yīng)罐溫度.Value"strltemlDs(2)="反應(yīng)罐液位.Value"ICIientHandles(l) = 1lClientHandles(2) = 2' 添加OPC項Call objItems.AddItems(2, strltemIDs, _ ICIientHandles, ISer

35、verHandles, lErrors)End SubSub Disconnect()Dim IErrors() As LongIf Not objItems Is Nothing ThenIf objItems.Count > 0 Then'清除OPC項objltems.Remove 2, IServerHandles, lErrorsEnd IfSet objItems = NothingEnd IfIf Not objTestGrp Is Nothing Then' 清除OPC組objGroups.Remove "TestGrp"Set objT

36、estGrp = NothingEnd IfIf Not objGroups Is Nothing ThenSet objGroups = NothingEnd IfIf Not objServer Is Nothing ThenIf objServer.ServerState <> OPCDisconnected Then '斷開OPC服務(wù)器.objServer.DisconnectEnd IfSet objServer = NothingEnd IfEnd SubPrivate Sub btnConnect_Click()'調(diào)用Connect子程序Call Co

37、nnect("kingview.view.1") Label7.Caption ="與服務(wù)器連接成功!End SubPrivate Sub btnAddltem_Click()'調(diào)用AddItem子程序Call AddItemIf Not objTestGrp Is Nothing ThenIf objTestGrp.OPCItems.Count > 0 Then '啟動定時器tmUpdate.Enabled = True dataUpdate.Enabled = True ElseEnd IfEnd IfEnd SubPrivate Sub

38、 btnQuit_Click() '卸載窗體Unload fmMainEnd SubPrivate Sub Form_Unload(Cancel As Integer) ' 調(diào)用Disconnect子程序Call DisconnectEnd SubPrivate Sub tmUpdate_Timer()Dim vtItemValues() As VariantDim lErrors() As LongDim strBuf As StringDim nWidth As IntegerDim nHeight As IntegerDim nDrawHeight As IntegerD

39、im sglScale As SingleDim I As Integer, u As Integer, j As Integer, s As Integer, t As Integer, w As IntegerDim X As Single, Y As Single'同期讀取SyncRead OPCCache, vtItemValues, lErrors'棒圖的表示For I = 1 To 2'數(shù)據(jù)的格式化strBuf = Format(vtltemValues(l), "#.000")'表示數(shù)據(jù)字符串lbBar(l).Caption =

40、 strBuf dataTemp(l) = strBuf' 計算棒的寬和高nWidth = picBar(l).ScaleWidthnHeight = picBar(l).ScaleHeight sglScale = vtItemValues(I) / 700 nDrawHeight = CInt(nHeight * sglScale)'清除現(xiàn)棒圖picBar(l).CIs'繪制棒圖picBar(l).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _ RGB(255, 0, 0), BFNext'曲線繪制P

41、icturel.CIslf Checkl.Value = 0 Thenlf col < 201 ThenFor u = 1 To 2For j = col To colX = jY = vtltemValues(u)px(j, u) = Xpy(j, u) = 丫Next jNext ucol = col + 1pl = pl + 1ElseFor s = 1 To 2For t = 1 To 199px(t, s) = tpy(t, s) = py(t + 1, s)Next tpy(200, s) = vtltemValues(s)Next sEnd lfElsecol = colE

42、nd lflf pl >= 2 ThenFor w = 1 To 2Picture1.PSet (px(1, w), py(1, w)For j = 2 To colPicture1.Line -(px(j - 1, w), py(j - 1, w), QBColor(w * 2)Next jNext wEnd lf'畫兩條警戒線Picture1.DrawWidth = 2Picture1.Line (0, 150)-(200, 150), vbRedPicture1.Line (0, 600)-(200, 600), vbBlue'指示警戒值,警戒值以上改變顯示顏色lf

43、 lbBar(1).Caption > 150 Or lbBar(2).Caption > 600 Then Label7.Caption ="出現(xiàn)異常!"ElseLabel7.Caption ="正在觀測!"End IfIf lbBar(1).Caption > 150 ThenText2.Text =" 溫度過高!"picBar(1).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _RGB(255, 0, 0), BFEnd IfIf lbBar(1).Ca

44、ption < 150 ThenText2.Text =" 溫度平穩(wěn)!"picBar(1).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _RGB(0, 255, 0), BFEnd IfIf lbBar(2).Caption > 600 ThenText1.Text ="液面過高!"picBar(2).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _RGB(255, 0, 0), BFEnd IfIf lbBar(2).Capti

45、on < 600 ThenText1.Text ="液面平穩(wěn)!"picBar(2).Line (0, nHeight - nDrawHeight)-(nWidth, nHeight), _RGB(0, 255, 0), BFEnd IfEnd SubSub SyncRead(nSource As Integer, ByRef vtltemValues() As Variant, _ByRef IErrors() As Long)Dim IServerHandlesTemp(2) As LongDim j As IntegerIf objTestGrp Is Nothi

46、ng ThenExit SubEnd IfIf objTestGrp.OPCItems.Count > 0 Then'同期讀取objTestGrp.SyncRead nSource, 2, lServerHandles, _vtItemValues, lErrorsEnd IfEnd SubPrivate Sub Form_Load()tmUpdate.Enabled = FalsetmUpdate.Interval = 100dataUpdate.Enabled = FalsedataUpdate.Interval = 1000'初始化時間變量col = 1pl = 0

47、'調(diào)用時間函數(shù),顯示時間Call date1'初始化坐標圍Picture1.Scale (0, 750)-(200, 0)End Sub'調(diào)用系統(tǒng)時間子函數(shù)Sub date1()Label3.Caption = Trim(Str(Year(Date) + "年"+ Trim(Str(Month(Date) + "月 Trim(Str(Day(Date) + " 日"Label4.Caption ="現(xiàn)在時間:"+ Trim(Str(Hour(Time) + "時"+ Trim(Str(Minute(Time) + "分"+ Trim(Str(Second

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論