📄 frmwriteitem.frm
字号:
VERSION 5.00
Begin VB.Form frmWriteItem
Caption = "OPC 写入数据项"
ClientHeight = 2985
ClientLeft = 60
ClientTop = 345
ClientWidth = 6525
ControlBox = 0 'False
LinkTopic = "Form1"
ScaleHeight = 2985
ScaleWidth = 6525
ShowInTaskbar = 0 'False
StartUpPosition = 1 '所有者中心
Begin VB.CommandButton OkButton
Caption = "退出(&X)"
Height = 375
Left = 5160
TabIndex = 1
Top = 2520
Width = 1215
End
Begin VB.CommandButton ApplyValue
Caption = "写入(&W)"
Height = 375
Left = 3720
TabIndex = 0
Top = 2520
Width = 1335
End
Begin VB.Frame Frame1
Caption = "写入信息"
Height = 2295
Left = 120
TabIndex = 2
Top = 120
Width = 6255
Begin VB.TextBox DataType
Height = 285
Left = 1080
Locked = -1 'True
TabIndex = 11
ToolTipText = "This box simply displays the selected Data Type for reference"
Top = 765
Width = 4935
End
Begin VB.OptionButton BooleanOff
Caption = "Off"
Height = 195
Left = 2310
TabIndex = 9
Top = 1800
Width = 615
End
Begin VB.OptionButton BooleanOn
Caption = "On"
Height = 195
Left = 1590
TabIndex = 8
Top = 1800
Value = -1 'True
Width = 615
End
Begin VB.TextBox ItemID
Height = 285
Left = 1080
Locked = -1 'True
TabIndex = 6
ToolTipText = "This box simply displays the selected ItemID for reference"
Top = 360
Width = 4935
End
Begin VB.TextBox WriteValue
Height = 285
Left = 1080
TabIndex = 3
Text = "0"
ToolTipText = "Enter the value to be written here, for arrays separate each element by a comma"
Top = 1170
Width = 4935
End
Begin VB.Label Label4
AutoSize = -1 'True
Caption = "数据类型:"
Height = 180
Left = 60
TabIndex = 10
Top = 817
Width = 900
End
Begin VB.Label Label3
AutoSize = -1 'True
Caption = "Boolean Value:"
Height = 180
Left = 120
TabIndex = 7
Top = 1800
Width = 1260
End
Begin VB.Label Label1
AutoSize = -1 'True
Caption = "ItemID:"
Height = 180
Left = 330
TabIndex = 5
Top = 412
Width = 630
End
Begin VB.Label Label2
AutoSize = -1 'True
Caption = "写入值:"
Height = 180
Left = 240
TabIndex = 4
Top = 1222
Width = 720
End
End
End
Attribute VB_Name = "frmWriteItem"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim DataTypes(17) As String
Dim ValueChange As Boolean
Private Sub Form_Load()
ItemID.Text = Module1.SelectedOPCItem.GetItemID
DataTypes(0) = "Native - Data Type is not specific set by OPC Server"
DataTypes(1) = "Invalid Data Type for this example"
DataTypes(2) = "Integer - 16 bit Signed "
DataTypes(3) = "Long - 32 bit Signed "
DataTypes(4) = "Float - 32 bit Float "
DataTypes(5) = "Double - 64 bit Real "
DataTypes(6) = "Invalid Data Type for this example" ' Currency
DataTypes(7) = "Invalid Data Type for this example" ' Date
DataTypes(8) = "String - 8 bit Signed Characters"
DataTypes(9) = "Invalid Data Type for this example" ' Object
DataTypes(10) = "Invalid Data Type for this example" ' Error
DataTypes(11) = "Boolean - True or Flase"
DataTypes(12) = "Invalid Data Type for this example" ' Variant
DataTypes(13) = "Invalid Data Type for this example" ' Data Access
DataTypes(14) = "Invalid Data Type for this example" ' Decimal
DataTypes(15) = "Invalid Data Type for this example" ' Unspecified type
DataTypes(16) = "Invalid Data Type for this example" ' Unspecified type
DataTypes(17) = "Byte 8 bit Unsigned "
If Module1.SelectedOPCItem.GetItemCanonicalType < 18 Then
DataType.Text = DataTypes(Module1.SelectedOPCItem.GetItemCanonicalType)
ElseIf (Module1.SelectedOPCItem.GetItemCanonicalType > 8192) And (Module1.SelectedOPCItem.GetItemCanonicalType < 8210) Then
DataType.Text = DataTypes(Module1.SelectedOPCItem.GetItemCanonicalType - 8192) + "Array"
Else
DataType.Text = "Possible Unsigned data type, Writes may not work"
End If
If Module1.SelectedOPCItem.GetItemCanonicalType = vbBoolean Then
BooleanOn.Enabled = True
BooleanOff.Enabled = True
WriteValue.Enabled = False
Else
BooleanOn.Enabled = False
BooleanOff.Enabled = False
WriteValue.Enabled = True
If Module1.SelectedOPCItem.GetItemCanonicalType <> vbString Then
WriteValue.Text = "0"
Else
WriteValue.Text = "String Data"
End If
End If
ValueChange = False
End Sub
Private Sub ApplyValue_Click()
ValueChange = True
WriteNewValue
End Sub
Private Sub BooleanOff_Click()
BooleanOn.Value = False
ValueChange = True
End Sub
Private Sub BooleanOn_Click()
BooleanOff.Value = False
ValueChange = True
End Sub
Private Sub Form_Deactivate()
frmWriteItem.Show
End Sub
Private Sub OkButton_Click()
WriteNewValue
fMainForm.tvTreeView.Enabled = True
Unload Me
End Sub
Private Sub WriteValue_Change()
ValueChange = True
End Sub
Private Sub WriteNewValue()
Dim ValueToWrite As Variant
Dim CurrentValue As Variant
If ValueChange = True Then
If Module1.SelectedOPCItem.GetItemCanonicalType = vbBoolean Then
ValueToWrite = BooleanOn.Value
Else
CurrentValue = Module1.SelectedOPCItem.GetItemValue(OPCItemDirect)
If Not IsArray(CurrentValue) Then
If Module1.SelectedOPCItem.GetItemCanonicalType <> vbString Then
ValueToWrite = Val(WriteValue.Text)
Else
ValueToWrite = WriteValue.Text
End If
Else
ValueToWrite = CurrentValue
Dim I As Integer
Dim Length As Integer
Dim LastStartPos As Integer
Dim LastEndPos As Integer
Length = Len(WriteValue.Text)
Dim ArrayValue As Variant
LastStartPos = 1
LastEndPos = 1
For I = 0 To UBound(ValueToWrite)
LastEndPos = InStr(LastStartPos, WriteValue.Text, ",")
If LastEndPos = 0 Then
LastEndPos = Length + 1
End If
If LastStartPos < LastEndPos Then
ValueToWrite(I) = Val(Mid(WriteValue.Text, LastStartPos, LastEndPos - LastStartPos))
End If
LastStartPos = LastEndPos + 1
Next I ' try to get the next array element
End If
End If
Module1.SelectedOPCGroup.AsyncWriteOPCItem Module1.SelectedOPCItem, ValueToWrite
End If
ValueChange = False
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -