📄 canform.frm
字号:
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 30
TabIndex = 25
Top = 3042
Width = 435
End
Begin VB.Label Label28
BackStyle = 0 'Transparent
Caption = "25"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 30
TabIndex = 24
Top = 2190
Width = 435
End
Begin VB.Label Label29
BackStyle = 0 'Transparent
Caption = "10"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 30
TabIndex = 23
Top = 3468
Width = 435
End
Begin VB.Label Label30
BackStyle = 0 'Transparent
Caption = "20"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 30
TabIndex = 22
Top = 2616
Width = 435
End
Begin VB.Label Label31
BackStyle = 0 'Transparent
Caption = "35"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 30
TabIndex = 21
Top = 1338
Width = 435
End
Begin VB.Label Label32
BackStyle = 0 'Transparent
Caption = "45"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 30
TabIndex = 20
Top = 486
Width = 435
End
Begin VB.Label Label34
BackStyle = 0 'Transparent
Caption = "40"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 30
TabIndex = 19
Top = 912
Width = 435
End
Begin VB.Label Label35
BackStyle = 0 'Transparent
Caption = "50"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 30
TabIndex = 18
Top = 60
Width = 435
End
Begin VB.Label Label36
BackStyle = 0 'Transparent
Caption = "30"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 30
TabIndex = 17
Top = 1764
Width = 435
End
Begin VB.Label Label38
BackStyle = 0 'Transparent
Caption = "0"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 315
Left = 30
TabIndex = 16
Top = 4320
Width = 435
End
Begin VB.Label Label14
Alignment = 1 'Right Justify
BackStyle = 0 'Transparent
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 405
Left = 10710
TabIndex = 1
Top = 390
Width = 1845
End
Begin VB.Label Label16
BackStyle = 0 'Transparent
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 405
Left = 13320
TabIndex = 0
Top = 360
Width = 2025
End
End
Attribute VB_Name = "CANForm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim num As Integer
Dim data(10000) As Single
Dim minlx, maxlx, minly, maxly As Integer
Dim mindex As Long
'初始化
Private Sub Form_Load()
minlx = 0: maxlx = 100
minly = 0: maxly = 50
mindex = 0
Call re_set
Call link_set
End Sub
'复位设备
Private Sub re_set()
Call CAN_Reset(mindex)
End Sub
'连接设备
Private Sub link_set()
Dim i As Boolean
Dim canconfig(11) As Byte
i = CAN_Open(mindex)
If (i = 0) Then
MsgBox "无法打开设备", vbCritical, "信息提示"
Exit Sub
End If
canconfig(0) = &H18
canconfig(1) = &H1C
canconfig(2) = 0
canconfig(3) = 0
canconfig(4) = 0
canconfig(5) = 0
canconfig(6) = &HFF
canconfig(7) = &HFF
canconfig(8) = &HFF
canconfig(9) = &HFF
canconfig(10) = 0
If CAN_Init(mindex, canconfig(0)) Then
Else
MsgBox "通讯卡初始化失败", vbCritical, "信息提示"
Call CAN_Close(mindex)
End If
End Sub
'按时钟周期采集数据、绘图、计算
Private Sub Timer1_Timer()
Call Get_Data
Call xxd_Lx
Call cal
End Sub
'采集数据
Sub Get_Data()
Dim cth, ctl As Integer
Dim canbuff(13) As Byte
Dim fv, dv, df As Long
Dim value(10) As Double
fv = 5000: df = 0: dv = 4095
canbuff(0) = &H3
canbuff(1) = 8
canbuff(2) = 0
canbuff(3) = &H55
canbuff(4) = &H2
canbuff(5) = 1
If (CAN_Trans(mindex, canbuff(0), 50) <> 1) Then
MsgBox " 发送失败 ", vbCritical, "信息提示"
Timer1.Enabled = False
Else
If (CAN_Recv(mindex, canbuff(0), 500)) Then
ctl = canbuff(7): cth = canbuff(6)
value(canbuff(5) - 1) = ctl + cth * 256
Tdata.Text = Format(CStr(((value(canbuff(5) - 1) And dv) / dv * fv - df) - 1) * 25 / 1000, "0.0")
data(num) = Val(Tdata.Text)
num = num + 1
Tnum.Text = Str(num)
End If
End If
End Sub
'绘制实时变化曲线图
Sub xxd_Lx()
If num > 100 Then
minlx = minlx + 1: maxlx = maxlx + 1
End If
kk = 5
pl.Cls
pl.BackColor = QBColor(15)
pl.Scale (minlx, maxly)-(maxlx, minly)
pl.DrawWidth = 1
For i = 1 To 12
X1 = 0: Y1 = kk
X2 = maxlx: Y2 = kk
pl.Line (X1, Y1)-(X2, Y2), QBColor(6)
kk = kk + 5
Next i
pl.DrawWidth = 3
For i = 1 To num - 1
X1 = (i - 1): Y1 = data(i - 1)
X2 = i: Y2 = data(i)
pl.Line (X1, Y1)-(X2, Y2), QBColor(0)
Next i
End Sub
'计算平均值、最大、最小值
Sub cal()
Sum = 0
Max = Val(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
Tmax.Text = Format$(Max, "0.0")
Tmin.Text = Format$(Min, "0.0")
Taver.Text = Format$(aver, "0.0")
End Sub
'关闭设备、程序
Private Sub Cmdquit_Click()
Call CAN_Close(mindex) '关闭设备
Unload Me
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -