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

📄 dioform.frm

📁 基于数据采集卡的测试程序
💻 FRM
📖 第 1 页 / 共 2 页
字号:
      Left            =   3840
      TabIndex        =   16
      Top             =   240
      Width           =   735
      Begin VB.Label diodata 
         AutoSize        =   -1  'True
         Caption         =   "关"
         BeginProperty Font 
            Name            =   "System"
            Size            =   24
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H00C00000&
         Height          =   480
         Index           =   5
         Left            =   120
         TabIndex        =   17
         Top             =   240
         Width           =   480
      End
   End
   Begin VB.Frame Frame2 
      Caption         =   "4路"
      Height          =   855
      Index           =   3
      Left            =   2400
      TabIndex        =   14
      Top             =   240
      Width           =   735
      Begin VB.Label diodata 
         AutoSize        =   -1  'True
         Caption         =   "关"
         BeginProperty Font 
            Name            =   "System"
            Size            =   24
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H00C00000&
         Height          =   480
         Index           =   3
         Left            =   120
         TabIndex        =   15
         Top             =   240
         Width           =   480
      End
   End
   Begin VB.Frame Frame2 
      Caption         =   "3路"
      Height          =   855
      Index           =   2
      Left            =   1680
      TabIndex        =   12
      Top             =   240
      Width           =   735
      Begin VB.Label diodata 
         AutoSize        =   -1  'True
         Caption         =   "关"
         BeginProperty Font 
            Name            =   "System"
            Size            =   24
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H00C00000&
         Height          =   480
         Index           =   2
         Left            =   120
         TabIndex        =   13
         Top             =   240
         Width           =   480
      End
   End
   Begin VB.Frame Frame2 
      Caption         =   "1路"
      Height          =   855
      Index           =   0
      Left            =   240
      TabIndex        =   11
      Top             =   240
      Width           =   735
      Begin VB.Label diodata 
         AutoSize        =   -1  'True
         Caption         =   "关"
         BeginProperty Font 
            Name            =   "System"
            Size            =   24
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H00C00000&
         Height          =   480
         Index           =   0
         Left            =   120
         TabIndex        =   8
         Top             =   240
         Width           =   480
      End
   End
   Begin VB.Frame Frame2 
      Caption         =   "2路"
      Height          =   855
      Index           =   1
      Left            =   960
      TabIndex        =   10
      Top             =   240
      Width           =   735
      Begin VB.Label diodata 
         AutoSize        =   -1  'True
         Caption         =   "关"
         BeginProperty Font 
            Name            =   "System"
            Size            =   24
            Charset         =   134
            Weight          =   700
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         ForeColor       =   &H00C00000&
         Height          =   480
         Index           =   1
         Left            =   120
         TabIndex        =   9
         Top             =   240
         Width           =   480
      End
   End
   Begin VB.CommandButton Exit 
      Cancel          =   -1  'True
      Caption         =   "返    回"
      Default         =   -1  'True
      Height          =   495
      Left            =   4560
      TabIndex        =   7
      Top             =   3645
      Width           =   1455
   End
   Begin VB.CommandButton HelpCom 
      Caption         =   "操作帮助"
      Height          =   495
      Left            =   4545
      TabIndex        =   6
      Top             =   2925
      Width           =   1455
   End
   Begin VB.CommandButton DoCom 
      Caption         =   "确定输出"
      Height          =   495
      Left            =   4560
      TabIndex        =   5
      Top             =   2295
      Width           =   1455
   End
   Begin VB.Frame Frame1 
      Caption         =   "开关量显示区"
      ForeColor       =   &H00000000&
      Height          =   2085
      Left            =   120
      TabIndex        =   0
      Top             =   0
      Width           =   6015
   End
End
Attribute VB_Name = "DioForm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'did(2)为DI输入数据
Dim did(2) As Byte
'diod(2)为DO输出数据
Dim diod(2) As Byte
'diofs为DIO方式
Dim diofs As Boolean '=true为DIO =false为DI
'oldkey为旧键值
Dim oldkey As Integer
'kmin,ksec为旧键的时间,分为分钟,秒钟
Dim kmin, ksec
'改变DO量显示区函数
Private Sub diodata_Click(Index As Integer)
'判断是否为DO方式
If diofs = True Then
 ' 改变开关量显示区
 If diodata(Index).Caption = "关" Then
    diodata(Index).ForeColor = RGB(255, 0, 0)
    diodata(Index).Caption = "开"
   Else
    diodata(Index).ForeColor = RGB(0, 0, 255)
    diodata(Index).Caption = "关"
 End If
 
Dim X(16) As Integer

 For i = 0 To 15
    If diodata(i).Caption = "开" Then
       X(i) = 1
    Else
       X(i) = 0
    End If
 Next i
 
 diod(0) = 0
 diod(1) = 0
 
 For i = 0 To 7
      diod(0) = X(i) * 2 ^ i + diod(0)
  Next i

 For i = 8 To 15
      diod(1) = X(i) * 2 ^ (i - 8) + diod(1)
  Next i
 
 
 doedit(0) = Hex(diod(0))
 doedit(1) = Hex(diod(1))

End If
End Sub
'DI输入定时检测函数
Private Sub DioTimer_Timer()
 '判断是否是DI方式
 If diofs = False Then
 '调用DI函数,取出did数据
' Call pc7484_di(did(0), Port, Delay)
'hplx = 0
'hplx = pci7483check(0, 0, False)
did(0) = pci7483di(hplx, False, 0)
did(1) = pci7483di(hplx, False, 1)
' If hplx <> 1 Then
'hplx = pci7483close(hplx)
'End If
 '显示到开关量显示区
 For i = 0 To 1
  X = did(i)
  For j = 0 To 7
   '判断每一路是否有数据
   If (X Mod 2 ^ (j + 1)) = 2 ^ j Then
    X = X - 2 ^ j
    diodata(i * 8 + j).ForeColor = RGB(255, 0, 0)
    diodata(i * 8 + j).Caption = "开"
   Else
    diodata(i * 8 + j).ForeColor = RGB(0, 0, 255)
    diodata(i * 8 + j).Caption = "关"
   End If
  Next j
 Next i
 End If
End Sub
'DO输出函数
Private Sub DoCom_Click()
 '根据开关量显示区确定DO转换数据
 For i = 0 To 1
   X = 0
   For j = 0 To 7
     If diodata(i * 8 + j).Caption = "开" Then
       X = X + 2 ^ j
     End If
   Next j
   diod(i) = X
 Next i
  X1 = diod(0)
  X2 = diod(1)

'hplx = 0
'hplx = pci7483check(0, 0, False)
Call pci7483do(hplx, False, 0, X1)
Call pci7483do(hplx, False, 1, X2)
'If hplx <> 1 Then
'hplx = pci7483close(hplx)
'End If
End Sub
'DO数据编辑函数
Private Sub DoEditCom_Click()
  j = 1
  For i = 0 To 1
   '判断DO输入数据是否为空
   If doedit(i) = "" Then
      k = MsgBox("DO数据为空,请重新输入,范围在(0--FFH)!", vbQuestion, "DO数据输入")
      j = 0
      i = 3
   Else
      k = Val("&h" & doedit(i))
      '判断DO输入数据是否有错
      If k < 0 Or k > &HFF Then
        k = MsgBox("DO数据输入错误,请重新输入,范围在(0--FFH)!", vbQuestion, "DO数据输入")
        j = 0
        i = 3
      End If
   End If
  Next i
  '输入DO数据正确
  If j = 1 Then
   '根据输入DO数据更新开关量显示区
   For i = 0 To 1
     X = Val("&h" & doedit(i))
     For j = 0 To 7
       If (X Mod 2 ^ (j + 1)) = 2 ^ j Then
        X = X - 2 ^ j
        diodata(i * 8 + j).ForeColor = RGB(255, 0, 0)
        diodata(i * 8 + j).Caption = "开"
       Else
        diodata(i * 8 + j).ForeColor = RGB(0, 0, 255)
        diodata(i * 8 + j).Caption = "关"
       End If
     Next j
   Next i
  End If
End Sub


Private Sub Exit_Click()
If hplx <> 1 Then
hplx = pci7483close(hplx)
End If
 Unload DioForm
End Sub
'检测键盘输入函数
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim keytime
Dim newksec, newkmin
'判断是否为DO输出方式,是否同时按了Alt键,键值是否为数字键
If diofs = True And Shift = 4 And KeyCode > 47 And KeyCode < 58 Then
 '取当时时间
  mytime = Time
  newksec = Second(mytime)
  newkmin = Minute(mytime)
  '判断当时秒钟是否刚好变小
  If newksec < 2 Then
     newksec = 60 + newksec
     kmin = kmin + 1
  End If
  '判断是否超过2秒钟,如超时则旧键值为初始值
  If newksec > ksec + 2 Or kmin <> newkmin Then oldkey = -1
  '判断旧键值是否为初始值
  If oldkey = -1 Then
  '为初始值,则改变旧键值
    If KeyCode > 47 And KeyCode < 51 Then oldkey = KeyCode - 48
  Else
    '不为初始值,则取数字
    Index = oldkey * 10 + KeyCode - 49
    '还原旧键值为初始
    oldkey = -1
    '改变开关量显示区
    If Index >= 0 And Index < 24 Then
      If diodata(Index).Caption = "关" Then
            diodata(Index).ForeColor = RGB(255, 0, 0)
            diodata(Index).Caption = "开"
      Else
            diodata(Index).ForeColor = RGB(0, 0, 255)
            diodata(Index).Caption = "关"
      End If
    End If
  End If 'oldkey=-1
  '取当时的分钟,秒钟
  ksec = Second(mytime)
  kmin = Minute(mytime)
End If
End Sub
'开关量测试初始化函数
Private Sub Form_Load()
  Dim mytime
 mytime = Time
 ksec = Second(mytime)
 kmin = Minute(mytime)
 '设置为DI方式
 diofs = False
 oldkey = -1
 doedit(0) = 0
 doedit(1) = 0
 DoCom.Enabled = False
 DoInput.Enabled = False
 '允许DI定时检测
 DioTimer.Enabled = True
 '执行DI检测函数,更新开关量显示区
 hplx = 0
 hplx = pci7483check(0, 0, False, 1)
 DioTimer_Timer
End Sub
'DI/DO方式设置函数
Private Sub fs_Click(Index As Integer)
'判断改变的方式
If Index = 0 Then
 '改变为DI输入方式
 If diofs = True Then
  k = MsgBox("真想设置为输入方式吗?", vbYesNo + vbSystemModal, "开关量方式设置")
  '确认为DI输入方式
  If k = vbYes Then
   DoInput.Enabled = False
   DoCom.Enabled = False
   diofs = False
  Else
  '否认改变则还原DO方式
   fs(1).Value = True
  End If
 End If
Else
 '改变为DO输出方式
 If diofs = False Then
  k = MsgBox("真想设置为输出方式吗?", vbYesNo + vbSystemModal, "开关量方式设置")
  '确认为改变为DO输出方式
  If k = vbYes Then
   DoInput.Enabled = True
   DoCom.Enabled = True
   diofs = True
  Else
  '否认改变则还原DI方式
   fs(0).Value = True
  End If
 End If
End If
End Sub
'开关量测试操作帮助函数
Private Sub HelpCom_Click()
 DioHelpForm.Show
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -