📄 form1.frm
字号:
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 + -