发布于 2010-11-04 13:46:26
6楼
Private Sub Command_Read_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command_Read.Click
Dim OutText As String
Dim myValues As Array
Dim myErrors As Array
Dim myQualitys As Object
Dim myTimeStamps As Array
Dim Dims() As Integer = New Integer() {2}
Dim Bounds() As Integer = New Integer() {1}
Dim Serverhandles As Array = Array.CreateInstance(GetType(Integer), Dims, Bounds)
Dim Source As Integer
Source = 2 'OPC_DS_CACHE = 1, OPC_DS_DEVICE = OPC_DS_CACHE + 1
On Error GoTo ErrorHandler
OutText = "Reading Value of Item"
Serverhandles.SetValue(ItemObj(1).ServerHandle, 1)
Serverhandles.SetValue(ItemObj(2).ServerHandle, 2)
myValues = Nothing
myErrors = Nothing
myTimeStamps = Nothing
myQualitys = Nothing
GroupObj.SyncRead(Source, 2, Serverhandles, myValues, myErrors, myQualitys, myTimeStamps)
Edit_ReadVal.Text = myValues(1)(0).ToString
Edit_ReadQu.Text = GetQualityText(myQualitys(1).ToString)
Edit_ReadTS.Text = myTimeStamps(1).ToString
Serverhandles = Nothing
myValues = Nothing
myErrors = Nothing
myTimeStamps = Nothing
myQualitys = Nothing
GC.Collect()
Exit Sub
ErrorHandler:
MsgBox(Err.Des cription & Chr(13) & OutText, MsgBoxStyle.Critical, "ERROR")
End Sub
以前改的测试程序,封装是OPCSiemensDAAutomation, VB.NET。一次读2个Item.是SyncRead不是AsyncRead, 函数不同但是与AsynRead同理。有兴趣你你可以写出来试试。