创新can调试器Linux版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

592 lines
17 KiB

VERSION 5.00
Begin VB.Form Form1
Caption = "USB_CAN Demo(创芯光电科技有限公司)"
ClientHeight = 6480
ClientLeft = 7155
ClientTop = 2280
ClientWidth = 7245
LinkTopic = "Form1"
ScaleHeight = 6480
ScaleWidth = 7245
Begin VB.CommandButton Command4
Caption = "清空列表"
Height = 375
Left = 6000
TabIndex = 34
Top = 3360
Width = 975
End
Begin VB.ComboBox Combo2
Height = 315
ItemData = "Form1.frx":0000
Left = 3720
List = "Form1.frx":000A
Style = 2 'Dropdown List
TabIndex = 19
Top = 430
Width = 1185
End
Begin VB.TextBox Text1
Height = 285
Left = 4800
TabIndex = 18
Text = "00000080"
Top = 2820
Width = 975
End
Begin VB.Timer Timer1
Interval = 10
Left = 6480
Top = 480
End
Begin VB.TextBox Text4
Height = 285
Left = 720
TabIndex = 15
Text = "01 02 03 04 05 06 07 08 "
Top = 3360
Width = 1935
End
Begin VB.ComboBox Combo5
Height = 315
ItemData = "Form1.frx":001C
Left = 3000
List = "Form1.frx":0026
Style = 2 'Dropdown List
TabIndex = 14
Top = 2805
Width = 1215
End
Begin VB.ComboBox Combo4
Height = 315
ItemData = "Form1.frx":003A
Left = 960
List = "Form1.frx":0044
Style = 2 'Dropdown List
TabIndex = 13
Top = 2820
Width = 1215
End
Begin VB.CommandButton Command3
Caption = "复位CAN"
Height = 330
Left = 6000
TabIndex = 12
Top = 3000
Width = 1005
End
Begin VB.CommandButton Command2
Caption = "启动CAN"
Height = 330
Left = 6000
TabIndex = 11
Top = 2640
Width = 1005
End
Begin VB.ComboBox Combo1
Height = 315
ItemData = "Form1.frx":0058
Left = 1200
List = "Form1.frx":0062
Style = 2 'Dropdown List
TabIndex = 10
Top = 420
Width = 1290
End
Begin VB.CommandButton Connect
Caption = "连接"
Height = 330
Left = 5400
TabIndex = 1
Top = 430
Width = 1005
End
Begin VB.Frame Frame1
Caption = " 发送数据帧 "
Height = 1230
Left = 120
TabIndex = 0
Top = 2520
Width = 5835
Begin VB.CommandButton Command1
Caption = "发送"
Height = 330
Left = 4680
TabIndex = 6
Top = 720
Width = 870
End
Begin VB.Label Label3
Caption = "发送格式:"
Height = 240
Left = 120
TabIndex = 33
Top = 360
Width = 960
End
Begin VB.Label Label7
Caption = "数据:"
Height = 240
Left = 120
TabIndex = 5
Top = 840
Width = 555
End
Begin VB.Label Label6
Caption = "帧ID:"
Height = 195
Left = 4200
TabIndex = 4
Top = 360
Width = 585
End
Begin VB.Label Label5
Caption = "帧格式:"
Height = 195
Left = 2160
TabIndex = 3
Top = 360
Width = 765
End
Begin VB.Label Label4
Caption = "帧类型:"
Height = 195
Left = 120
TabIndex = 2
Top = 360
Width = 810
End
End
Begin VB.Frame Frame2
Caption = "设备参数"
Height = 2295
Left = 120
TabIndex = 7
Top = 120
Width = 6855
Begin VB.Frame Frame3
Caption = "初始化CAN参数"
Height = 1335
Left = 120
TabIndex = 20
Top = 840
Width = 6615
Begin VB.ComboBox Combo7
Height = 315
ItemData = "Form1.frx":0079
Left = 5280
List = "Form1.frx":0086
Style = 2 'Dropdown List
TabIndex = 32
Top = 840
Width = 1215
End
Begin VB.ComboBox Combo6
Height = 315
ItemData = "Form1.frx":00A8
Left = 5280
List = "Form1.frx":00B5
Style = 2 'Dropdown List
TabIndex = 30
Top = 360
Width = 1215
End
Begin VB.TextBox Text6
Height = 285
Left = 3360
TabIndex = 28
Text = "14"
Top = 840
Width = 855
End
Begin VB.TextBox Text5
Height = 285
Left = 1200
TabIndex = 26
Text = "00"
Top = 840
Width = 855
End
Begin VB.TextBox Text3
Height = 285
Left = 3360
TabIndex = 24
Text = "FFFFFFFF"
Top = 360
Width = 855
End
Begin VB.TextBox Text2
Height = 285
Left = 1200
TabIndex = 22
Text = "00000000"
Top = 360
Width = 855
End
Begin VB.Label Label13
Caption = "模式:"
Height = 255
Left = 4680
TabIndex = 31
Top = 885
Width = 615
End
Begin VB.Label Label12
Caption = "滤波方式:"
Height = 255
Left = 4320
TabIndex = 29
Top = 400
Width = 975
End
Begin VB.Label Label11
Caption = "定时器1:0x"
Height = 255
Left = 2280
TabIndex = 27
Top = 840
Width = 975
End
Begin VB.Label Label8
Caption = "定时器0:0x"
Height = 255
Left = 120
TabIndex = 25
Top = 840
Width = 975
End
Begin VB.Label Label2
Caption = "屏蔽码:0x"
Height = 255
Left = 2400
TabIndex = 23
Top = 360
Width = 975
End
Begin VB.Label Label1
Caption = "验收码:0x"
Height = 255
Left = 240
TabIndex = 21
Top = 360
Width = 975
End
End
Begin VB.Label Label10
Caption = "CAN通道:"
Height = 255
Left = 2520
TabIndex = 9
Top = 360
Width = 1095
End
Begin VB.Label Label9
Caption = "设备类型:"
Height = 255
Left = 240
TabIndex = 8
Top = 360
Width = 1095
End
End
Begin VB.Frame Frame6
Caption = "信息"
Height = 2535
Left = 120
TabIndex = 16
Top = 3840
Width = 6975
Begin VB.ListBox List1
Height = 2040
Left = 120
TabIndex = 17
Top = 240
Width = 6735
End
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim m_devtype As Long
Dim m_connect As Byte
Dim m_cannum As Long
Dim m_bRun As Boolean
Public Function EnableUI(bEnable As Boolean)
Label1.Enabled = bEnable
Label2.Enabled = bEnable
Label12.Enabled = bEnable
Label8.Enabled = bEnable
Label11.Enabled = bEnable
Label13.Enabled = bEnable
Text2.Enabled = bEnable
Text3.Enabled = bEnable
Text5.Enabled = bEnable
Text6.Enabled = bEnable
Combo1.Enabled = bEnable
Combo2.Enabled = bEnable
Combo6.Enabled = bEnable
Combo7.Enabled = bEnable
End Function
Private Sub Command1_Click()
If m_connect = 0 Then
MsgBox ("请先打开端口")
Exit Sub
End If
Dim SendType, frameformat, frametype As Byte
Dim ID As Long
Dim data(7) As Byte
Dim frameinfo As VCI_CAN_OBJ
Dim str, tmpstr As String
SendType = 0
frameformat = Combo5.ListIndex
frametype = Combo4.ListIndex
str = "&H"
str = str + Text1.Text
ID = Val(str)
str = Text4.Text
strdata = " "
i = 0
For i = 0 To 7
strdata = Left(str, 2)
If Len(strdata) = 0 Then
Exit For
End If
str = Right(str, Len(str) - 3)
data(i) = Val("&H" + strdata)
Next
frameinfo.DataLen = i
frameinfo.ExternFlag = frametype
frameinfo.RemoteFlag = frameformat
frameinfo.ID = ID
For j = 0 To i - 1
frameinfo.data(j) = data(j)
Next
If VCI_Transmit(m_devtype, 0, m_cannum, frameinfo, 1) <> 1 Then
MsgBox ("发送数据失败")
Else
str = "发送数据成功: "
tmpstr = "时间标识:无 "
str = str + tmpstr
tmpstr = " 帧ID:0x" + Hex(frameinfo.ID)
str = str + tmpstr
str = str + " 帧格式:"
If frameinfo.RemoteFlag = 0 Then
tmpstr = "数据帧 "
Else
tmpstr = "远程帧 "
End If
str = str + tmpstr
str = str + " 帧类型:"
If frameinfo.ExternFlag = 0 Then
tmpstr = "标准帧 "
Else
tmpstr = "扩展帧 "
End If
str = str + tmpstr
List1.AddItem str, List1.ListCount
If frameinfo.RemoteFlag = 0 Then
str = " 数据:"
If frameinfo.DataLen > 8 Then
frameinfo.DataLen = 8
End If
For j = 0 To frameinfo.DataLen - 1
tmpstr = Hex(frameinfo.data(j)) + " "
str = str + tmpstr
Next
List1.AddItem str, List1.ListCount
End If
List1.ListIndex = List1.ListCount - 1
End If
List1.ListIndex = List1.ListCount - 1
End Sub
Private Sub Command2_Click()
If m_connect = 0 Then
MsgBox ("请先打开端口")
Exit Sub
End If
If VCI_StartCAN(m_devtype, 0, m_cannum) <> 1 Then
MsgBox ("启动CAN错误")
Else
List1.AddItem "启动CAN成功", List1.ListCount
Command1.Enabled = True
End If
End Sub
Private Sub Command3_Click()
If m_connect = 0 Then
MsgBox ("请先打开端口")
Exit Sub
End If
If VCI_ResetCAN(m_devtype, 0, m_cannum) <> 1 Then
MsgBox ("复位CAN错误")
Else
List1.AddItem "复位CAN成功", List1.ListCount
Command1.Enabled = False
End If
End Sub
Private Sub Command4_Click()
Dim i As Integer
For i = 0 To List1.ListCount - 1
List1.RemoveItem 0
Next
End Sub
Private Sub Connect_Click()
Dim cannum As Long
Dim code, mask As Long
Dim Timing0, Timing1, filtertype, Mode As Byte
Dim InitConfig As VCI_INIT_CONFIG
If m_connect = 1 Then
m_connect = 0
Connect.Caption = "连接"
VCI_CloseDevice m_devtype, 0
EnableUI True
Exit Sub
End If
If Combo1.ListIndex <> -1 And Combo2.ListIndex <> -1 Then
cannum = Combo2.ListIndex
filtertype = Combo6.ListIndex + 1
Mode = Combo7.ListIndex
code = Val("&H" + Text2.Text)
mask = Val("&H" + Text3.Text)
Timing0 = Val("&H" + Text5.Text)
Timing1 = Val("&H" + Text6.Text)
InitConfig.AccCode = code
InitConfig.AccMask = mask
InitConfig.Filter = filtertype
InitConfig.Mode = Mode
InitConfig.Timing0 = Timing0
InitConfig.Timing1 = Timing1
If VCI_OpenDevice(m_devtype, 0, 0) <> 1 Then
MsgBox ("打开设备错误")
Else
If VCI_InitCAN(m_devtype, 0, cannum, InitConfig) = 1 Then
m_connect = 1
m_cannum = cannum
Connect.Caption = "断开"
Else
MsgBox ("初始化CAN错误")
End If
End If
End If
EnableUI False
End Sub
Private Sub Form_Activate()
m_bRun = True
End Sub
Private Sub Form_Load()
Me.Left = (Screen.Width - Me.Width) / 2
Me.Top = (Screen.Height - Me.Height) / 2
m_bRun = False
m_devtype = 4 'USB_CAN2类型号
m_connect = 0
m_cannum = 0
Combo1.ListIndex = 1
Combo2.ListIndex = 0
Combo4.ListIndex = 0
Combo5.ListIndex = 0
Combo6.ListIndex = 0
Combo7.ListIndex = 0
EnableUI True
Command1.Enabled = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
If m_connect = 1 Then
m_connect = 0
VCI_CloseDevice m_devtype, 0
End If
End Sub
Private Sub Combo1_Click()
If m_bRun = True Then
m_devtype = Combo1.ListIndex + 3
If m_devtype = 3 Then
Combo2.RemoveItem 1
m_cannum = 0
Combo2.ListIndex = 0
Else
Combo2.AddItem "通道2"
End If
End If
End Sub
Private Sub Timer1_Timer()
Timer1.Enabled = False
Dim ErrInfo As VCI_ERR_INFO
If m_connect = 0 Then
Timer1.Enabled = True
Exit Sub
End If
Dim Length As Long
Dim frameinfo(49) As VCI_CAN_OBJ
Dim str As String
Length = VCI_Receive(m_devtype, 0, m_cannum, frameinfo(0), 50, 10)
If Length <= 0 Then
VCI_ReadErrInfo m_devtype, 0, m_cannum, ErrInfo '注意:如果没有读到数据则必须调用此函数来读取出当前的错误码,
'千万不能省略这一步(即使你可能不想知道错误码是什么)
Timer1.Enabled = True
Exit Sub
End If
For i = 0 To Length - 1
str = "接收到数据帧: "
If frameinfo(i).TimeFlag = 0 Then
tmpstr = "时间标识:无 "
Else
tmpstr = "时间标识:0x" + Hex(frameinfo(i).TimeStamp)
End If
str = str + tmpstr
tmpstr = " 帧ID:0x" + Hex(frameinfo(i).ID)
str = str + tmpstr
str = str + " 帧格式:"
If frameinfo(i).RemoteFlag = 0 Then
tmpstr = "数据帧 "
Else
tmpstr = "远程帧 "
End If
str = str + tmpstr
str = str + " 帧类型:"
If frameinfo(i).ExternFlag = 0 Then
tmpstr = "标准帧 "
Else
tmpstr = "扩展帧 "
End If
str = str + tmpstr
List1.AddItem str, List1.ListCount
If frameinfo(i).RemoteFlag = 0 Then
str = " 数据:"
If frameinfo(i).DataLen > 8 Then
frameinfo(i).DataLen = 8
End If
For j = 0 To frameinfo(i).DataLen - 1
tmpstr = Hex(frameinfo(i).data(j)) + " "
str = str + tmpstr
Next
List1.AddItem str, List1.ListCount
End If
List1.ListIndex = List1.ListCount - 1
Next
Timer1.Enabled = True
End Sub