📄 ai&do.frm
字号:
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 285
Left = 2280
TabIndex = 16
Top = 1560
Width = 240
End
Begin VB.Label Label5
Caption = "℃"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 285
Left = 2280
TabIndex = 15
Top = 1035
Width = 240
End
Begin VB.Label Label8
Caption = "℃"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 285
Left = 2280
TabIndex = 14
Top = 480
Width = 240
End
Begin VB.Label Label4
Caption = "平均值:"
Height = 255
Left = 225
TabIndex = 12
Top = 1035
Width = 855
End
Begin VB.Label Label1
Caption = "当前值:"
Height = 255
Left = 225
TabIndex = 10
Top = 480
Width = 855
End
Begin VB.Label Label3
Caption = "最大值:"
Height = 255
Left = 225
TabIndex = 6
Top = 2160
Width = 855
End
Begin VB.Label Label2
Caption = "最小值:"
Height = 255
Left = 225
TabIndex = 4
Top = 1605
Width = 855
End
End
End
Attribute VB_Name = "DAQForm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'定义变量
Dim num As Integer '采集的数据个数
Dim Data(1000) As Single '数据的数值形式
Dim filedata(1000) As String '数据的字符串形式
Dim Mindata As Single '下限温度报警值
Dim Maxdata As Single '上限温度报警值
Dim drawtype As Integer '绘图类型选择
'程序初始化
Private Sub Form_Load()
DAQAI1.SelectDevice '选择模拟量输入设备
DAQDO1.SelectDevice '选择数字量输出设备
DAQAI1.StartChannel = 1 '通道号1
DAQAI1.SampleRate = 500 '采样频率
DAQAI1.OpenDevice '打开模拟量输入端口
DAQDO1.OpenDevice '打开数字量输出端口
drawtype = 1 '初始绘制连续的曲线图
Mindata = 20: Maxdata = 30 '下限、上限温度报警初始值
Tmin.Text = Mindata: Tmax.Text = Maxdata '显示下限、上限温度值
alarm1.FillColor = QBColor(10) '报警指示灯初始颜色
alarm2.FillColor = QBColor(10)
Timer1.Enabled = True
Call tabinit '调用表格初始化子程序
End Sub
'数据表格初始化
Public Sub tabinit()
Grid.Cols = 2
Grid.Rows = 200 + 1
Grid.ColWidth(0) = 700
Grid.ColWidth(1) = 950
Grid.Col = 0
For i = 1 To 200
Grid.Row = i
Grid.Text = " " + Str$(i)
Next i
Grid.Row = 0
Grid.Col = 0: Grid.Text = " 序号"
Grid.Col = 1: Grid.Text = " 温度值"
Grid.TopRow = 1 '置在第一页
Grid.LeftCol = 1
End Sub
Private Sub Timer1_Timer()
Dim u As String
If num > 199 Then Call renew
u = DAQAI1.RealInput(1) '获取AI1通道数据(电压值)
Data(num) = (Val(u) - 1) * 150 '标度变换(温度值)
filedata(num) = Format$(Data(num), "0.0")
TempText.Text = filedata(num)
Grid.Col = 1: Grid.Row = num + 1
Grid.Text = filedata(num)
Call alarm
num = num + 1
Call cal '调用计算极值、平均值子程序
Call draw '调用绘图子程序
End Sub
'报警指示
Sub alarm()
If Data(num) <= Mindata Then
alarm1.FillColor = QBColor(12)
DAQDO1.Bit = 1
DAQDO1.BitOutput (1)
End If
If Data(num) > Mindata And Data(num) < Maxdata Then
alarm1.FillColor = QBColor(10)
alarm2.FillColor = QBColor(10)
DAQDO1.Bit = 1
DAQDO1.BitOutput (0)
DAQDO1.Bit = 2
DAQDO1.BitOutput (0)
End If
If Data(num) >= Maxdata Then
alarm2.FillColor = QBColor(12)
DAQDO1.Bit = 2
DAQDO1.BitOutput (1)
End If
End Sub
'改变下限报警温度值
Private Sub Tmin_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Mindata1 = Val(Tmin.Text)
If Mindata1 >= Maxdata Then
MsgBox ("设定的下限温度不能比上限温度大!")
Tmin.Text = Str$(Mindata)
Else
Mindata = Mindata1
End If
End If
End Sub
'改变上限报警温度值
Private Sub Tmax_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Maxdata1 = Val(Tmax.Text)
If Maxdata1 <= Mindata Then
MsgBox ("设定的上限温度不能比下限温度小!")
Tmax.Text = Str$(Maxdata)
Else
Maxdata = Maxdata1
End If
End If
End Sub
'计算极值、平均值
Sub cal()
On Error GoTo hh
Sum = 0
Max = Data(0): Min = Max
For i = 0 To num - 1
If Data(i) >= Max Then Max = Data(i)
If Data(i) <= Min Then Min = Data(i)
Sum = Sum + Data(i)
Next i
aver = Sum / num
MaxText.Text = Format$(Max, "0.0")
MinText.Text = Format$(Min, "0.0")
AverText.Text = Format$(aver, "0.0")
hh: Exit Sub
End Sub
'连续采集数据,绘制曲线图
Private Sub Cmddraw1_Click()
drawtype = 1
Timer1.Enabled = True
End Sub
'连续采集数据,绘制散点图
Private Sub Cmddraw2_Click()
drawtype = 2
Timer1.Enabled = True
End Sub
'画连续曲线/间断散点图
Sub draw()
On Error GoTo hh
If num = 0 Then Exit Sub
Picture1.Cls
Picture1.DrawWidth = 1
Picture1.BackColor = QBColor(15)
Picture1.Scale (0, 50)-(200, 0)
If drawtype = 1 Then
For i = 1 To num - 1
X1 = (i - 1): Y1 = Data(i - 1)
X2 = i: Y2 = Data(i)
Picture1.Line (X1, Y1)-(X2, Y2), QBColor(0)
Next i
End If
If drawtype = 2 Then
For i = 0 To num - 1
Picture1.PSet (i, Data(i)), QBColor(0)
Next i
End If
hh: Exit Sub
End Sub
'存储数据到文本文件
Private Sub Cmdsave_Click()
On Error GoTo hh
If num = 0 Then Exit Sub
Timer1.Enabled = False
CDsave.Filter = "*.txt|*.txt|"
F3 = FreeFile
CDsave.ShowSave
fname = CDsave.FileName
Open fname For Output As #F3
For j = 0 To num - 1
Print #F3, filedata(j)
Next j
Close #F3
hh: Exit Sub
End Sub
'打开数据文件
Private Sub Cmdopen_Click()
Dim l As Long
Dim a As String, b As String, X As String
On Error GoTo errhandler
Timer1.Enabled = False
CDopen.Filter = "*.txt|*.txt|"
CDopen.FilterIndex = 1
CDopen.Action = 1
fname = CDopen.FileName
Call renew
F% = FreeFile
Open fname For Input As #F%
Do
Input #F%, filedata(num)
Data(num) = Val(filedata(num))
Grid.Col = 1: Grid.Row = num + 1
Grid.Text = filedata(num)
num = num + 1
Loop Until EOF(F%)
Close #F%
Call cal
Call draw
Exit Sub
errhandler:
Exit Sub
End Sub
'刷新
Private Sub renew()
If num = 0 Then Exit Sub
TempText.Text = "": AverText.Text = ""
MinText.Text = "": MaxText.Text = ""
Grid.Clear
Picture1.Cls
For i = 0 To num - 1
Data(i) = 0: filedata(i) = ""
Next i
num = 0
Call tabinit
End Sub
'关闭程序
Private Sub Cmdquit_Click()
Unload Me
End Sub
'关闭板卡模拟量输入、数字量输出端口
Private Sub Form_Unload(Cancel As Integer)
DAQDO1.Bit = 1
DAQDO1.BitOutput (0)
DAQDO1.Bit = 2
DAQDO1.BitOutput (0)
DAQDO1.CloseDevice
DAQAI1.CloseDevice
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -