⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmwriteitem.frm

📁 opc 通讯 册测试通讯OPC使用 客户端/服务端
💻 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 + -