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

📄 form1.frm

📁 多功能数据采集卡上位机完整代码
💻 FRM
📖 第 1 页 / 共 2 页
字号:
         Text            =   "Text1"
         Top             =   465
         Width           =   930
      End
      Begin VB.TextBox Text1 
         BeginProperty Font 
            Name            =   "宋体"
            Size            =   9.75
            Charset         =   0
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   330
         Index           =   5
         Left            =   5640
         TabIndex        =   9
         Text            =   "Text1"
         Top             =   465
         Width           =   930
      End
      Begin VB.TextBox Text1 
         BeginProperty Font 
            Name            =   "宋体"
            Size            =   9.75
            Charset         =   0
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   330
         Index           =   6
         Left            =   6690
         TabIndex        =   8
         Text            =   "Text1"
         Top             =   465
         Width           =   930
      End
      Begin VB.TextBox Text1 
         BeginProperty Font 
            Name            =   "宋体"
            Size            =   9.75
            Charset         =   0
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   330
         Index           =   7
         Left            =   7725
         TabIndex        =   7
         Text            =   "Text1"
         Top             =   465
         Width           =   930
      End
   End
   Begin VB.ComboBox cobShowMode 
      Height          =   345
      ItemData        =   "Form1.frx":0461
      Left            =   5175
      List            =   "Form1.frx":046E
      Style           =   2  'Dropdown List
      TabIndex        =   3
      Top             =   255
      Width           =   2205
   End
   Begin VB.Timer Timer1 
      Enabled         =   0   'False
      Interval        =   500
      Left            =   8685
      Top             =   180
   End
   Begin VB.CommandButton cmdStartAD 
      Caption         =   "启动AD"
      Height          =   450
      Left            =   3105
      TabIndex        =   0
      ToolTipText     =   "开始或停止'定时启动AD方式'"
      Top             =   5025
      Width           =   1560
   End
   Begin VB.CommandButton cmdStopAD 
      Caption         =   "停止AD"
      Height          =   450
      Left            =   5460
      TabIndex        =   1
      ToolTipText     =   "开始或停止'软件启动AD方式'"
      Top             =   5025
      Width           =   1560
   End
   Begin VB.Label Label3 
      AutoSize        =   -1  'True
      Caption         =   "板卡基地址:"
      Height          =   225
      Index           =   1
      Left            =   330
      TabIndex        =   5
      Top             =   315
      Width           =   1245
   End
   Begin VB.Label lblBaseAddr 
      BorderStyle     =   1  'Fixed Single
      Caption         =   "板卡基地址"
      Height          =   360
      Left            =   1695
      TabIndex        =   4
      Top             =   255
      Width           =   1800
   End
   Begin VB.Label Label1 
      AutoSize        =   -1  'True
      Caption         =   "显示方式:"
      Height          =   225
      Index           =   0
      Left            =   4050
      TabIndex        =   2
      Top             =   315
      Width           =   1020
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Dim m_cardNO As Long  'pci卡的板卡索引号
Dim m_saveData(819200) As Long '申请足够大的缓冲区,应该是4096的整数倍,并且缓冲区大小至少大于4096

Public m_bTimer1Finish As Boolean

Const m_PSCardCount As Long = 1 '1块PS010
Const m_ADchCount As Long = 1 '占用1路AD通道(1块PS010占1个AD通道)
'Const m_AIrange As Long = AI.Range_0__5000mV  'AI.Range_N5000__P5000mV
'Const m_AIrange As Long = AI.Range_N5000__P5000mV
Dim m_showMode As Long
Private m_CheckParaRightFlag As Boolean '参数是否正确
Dim m_firstEnter As Boolean

Dim m_PSChCount As Long
Dim m_PSStartChNO As Long
Dim m_PSAmp As Long
Const m_cjcChNO As Long = 2

Private Function CheckPara() As Long
'检查参数
    CheckPara = -1
    '
    If Val(cobChCount.Text) <= 0 Then MsgBox "通道数必须大于0": Exit Function
    If Val(cobStartCh.Text) <= 0 Then MsgBox "起始通道号必须大于0": Exit Function
    
    m_PSChCount = Val(cobChCount.Text)
    m_PSStartChNO = Val(cobStartCh.Text)
    m_PSAmp = Val(cobAmp.Text)
    CheckPara = 0
End Function

Private Sub cmdStartAD_Click()
'启动AD
'
    '在开始前必须检查参数
    If CheckPara < 0 Then Exit Sub

    'cobADrange.Enabled = False
    cobShowMode.Enabled = False
    cobChCount.Enabled = False
    cobStartCh.Enabled = False
    cobAmp.Enabled = False
    cobCjcMode.Enabled = False
    
    '选择板卡的AD量程(必须与板上跳线相一致)
    Call ZT8361_LoadADZeroFull(m_cardNO, AI.Range_0__5000mV, 2, 0) '从卡中读调零调满值
        
    m_bTimer1Finish = True
    Timer1.Interval = 200
    Timer1.Enabled = True
    If ZT8361_GetLastErr <> 0 Then Me.Caption = "PCI8361V+PS010例子(错误号: " & ZT8361_GetLastErr & ")" '返回错误号
End Sub

Private Sub cmdStopAD_Click()
'停止AD
    Call ZT8361_DOAll(m_cardNO, 2, 0) '选PS010通道
'    cobADrange.Enabled = True
    cobShowMode.Enabled = True
    cobShowMode.Enabled = True
    cobChCount.Enabled = True
    cobStartCh.Enabled = True
    cobAmp.Enabled = True
    cobCjcMode.Enabled = True

    Timer1.Enabled = False
    m_bTimer1Finish = False
End Sub

Private Sub cobChCount_Click()
'如果通道个数不为0,使这一行的控件有效
    If Val(cobChCount.Text) > 0 Then
        'cobChCount.Enabled = True
        cobStartCh.Enabled = True
        'cobCountPS.Enabled = True
        cobAmp.Enabled = True
        cobCjcMode.Enabled = True
    Else
        'cobChCount.Enabled = False
        cobStartCh.Enabled = False
        'cobCountPS.Enabled = False
        cobAmp.Enabled = False
        cobCjcMode.Enabled = False
    End If
End Sub

Private Sub cobStartCh_Click()
'起始通道
    If m_firstEnter = False Then Exit Sub
    cobChCount.Clear
    Dim i As Long
    For i = 0 To 16 - Val(cobStartCh.Text) + 1
        cobChCount.AddItem i
    Next i
    cobChCount.ListIndex = 0
End Sub

Private Sub cobCjcMode_Click()
    '
    If cobCjcMode.Text = "手动补偿" Then
        MsgBox "请输入一个温度值作为冷端补偿温度", , "提示"
    End If
End Sub

Private Sub cobCjcMode_KeyPress(KeyAscii As Integer)
'冷端补偿输入
    If cobCjcMode.Text = "自动补偿" Or cobCjcMode.Text = "无" Then
        KeyAscii = 0
    End If
    '过滤字符
    Select Case KeyAscii
        Case vbKey0 To vbKey9
        Case vbKeyBack
        Case vbKeyDelete '.
        Case vbKeyInsert '-
        Case vbKeyExecute '+
        Case vbKeyReturn
            cobCjcMode.Text = Val(cobCjcMode.Text)
            If Val(cobCjcMode.Text) <> 0 Then
                'MsgBox "  " & cobSaveStartTime.Text
                'm_runAfterSecond = Val(cobSaveStartTime.Text)
            End If
        Case Else
            KeyAscii = 0
    End Select
End Sub

Private Sub cobShowMode_Click()
'选择显示方式
    m_showMode = cobShowMode.ListIndex
End Sub

Private Sub Form_Load()
'打开设备
    '窗体居中
    Me.Left = (Screen.Width - Me.Width) / 2
    Me.Top = (Screen.Height - Me.Height) / 3
    '打开设备
    m_cardNO = 1
    If ZT8361_OpenDevice(m_cardNO) <> 0 Then
        MsgBox "打开设备失败,找不到指定的板卡。"
        Exit Sub
        'end
    End If
    lblBaseAddr.Caption = "&&H" & Hex(ZT8361_GetBaseAddr(m_cardNO)) '显示基地址
    
    cobShowMode.ListIndex = 0 '默认选择温度值
    cobStartCh.ListIndex = 1
    cobChCount.ListIndex = 16
    cobAmp.ListIndex = 4 '100倍增益
    cobCjcMode.ListIndex = 2
    
    Me.Caption = "PCI8361V+PS010例子(错误号: " & ZT8361_GetLastErr & ")" '返回错误号
End Sub

Private Sub Form_Unload(Cancel As Integer)
'关闭设备
    ZT8361_ClearLastErr
    If ZT8361_CloseDevice(m_cardNO) <> 0 Then
        'MsgBox "关闭设备失败"
    End If
End Sub

Private Sub Timer1_Timer()
'用于AD,成批读数
    If m_bTimer1Finish = False Then Exit Sub '防止重入
    m_bTimer1Finish = False
    
    Dim retCount As Long, countPerCh As Long
    Dim sum(16 - 1) As Double
    Dim averVal(16 - 1) As Double
    Dim k As Long, n As Long, i As Long
    
    countPerCh = 100 '每个通道采集若干个点,求平均
    For k = 0 To 16 - 1 '16个热电偶通道
        'Call ZT8361_DOAll(m_cardNO, 2, k And &HF) '选PS010通道
        '选完通道后,要做一些延时
        For i = 0 To 100 - 1
            Call ZT8361_DOAll(m_cardNO, 2, k And &HF) '选PS010通道
        Next i
        '读AD结果
        For i = 0 To countPerCh - 1
            m_saveData(i * countPerCh + k) = ZT8361_AIonce(m_cardNO, 0, 1, AI.Range_0__5000mV, 0, 60)
        Next i
    Next k
    '采集冷端补偿温度值
    Dim cjcTemp As Single, cjcMv As Single
    cjcTemp = 0
    Select Case cobCjcMode.ListIndex
        Case 0 '无
            cjcTemp = 0
        Case 1 '输入温度值后到不了这里,手动
            cjcTemp = Val(cobCjcMode.Text)
        Case 2 '自动
            cjcTemp = ZT8361_AIonce(m_cardNO, 0, m_cjcChNO, AI.Range_0__5000mV, 0, 60) / 24.4
        Case Else '手动
            cjcTemp = Val(cobCjcMode.Text)
    End Select
    cjcMv = K_tempTomV(cjcTemp)
    '求平均, 并显示
    For k = 0 To 16 - 1 '16个热电偶通道
        sum(k) = 0
        For i = 0 To countPerCh - 1
            sum(k) = sum(k) + m_saveData(i * countPerCh + k)
        Next i
        averVal(k) = sum(k) / countPerCh
        Select Case m_showMode
            Case 0: '温度值
                Text1(k).Text = Format(K_mVtoTemp(averVal(k) / Val(cobAmp.Text) + cjcMv), "0.00")
            Case 1: '热电偶电压值(mV)
                Text1(k).Text = Format(averVal(k) / Val(cobAmp.Text), "0.00")
            Case 2: '电压值
                Text1(k).Text = Format(averVal(k), "0.00")
        End Select
    Next k
    m_bTimer1Finish = True
    If ZT8361_GetLastErr <> 0 Then Me.Caption = "PCI8361V+PS010例子(错误号: " & ZT8361_GetLastErr & ")" '返回错误号
End Sub

⌨️ 快捷键说明

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