📄 form1.vb
字号:
GroupAfterOpenPort.Enabled = False
GroupAcceptance.Enabled = False
GroupCanSpecial.Enabled = True
RxThread.Resume()
End If
Else
xlstatus = xlDeactivateChannel(portHandle, accessMask)
If (xlstatus) Then
Output.Items.Add(xlGetErrorString(xlstatus))
Else
Output.Items.Add("xl.Channels deactivated")
BnActivateChannels.Text = "Activate"
GroupAfterOpenPort.Enabled = True
GroupAcceptance.Enabled = True
GroupCanSpecial.Enabled = False
GroupCanMessage.Enabled = False
RxThread.Suspend()
End If
End If
End Sub
#End Region
#Region "xlSetChannelOutput"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BnCanAck.Click
Dim xlstatus As Byte
' xlCanSetChannelOutput
' XL_OUTPUT_MODE_SILENT = ack off, XL_OUTPUT_MODE_NORMAL = ack on (standard)
If BnCanAck.Text = "ACK:on" Then
xlstatus = xlCanSetChannelOutput(portHandle, Convert.ToUInt64(accessMask), XL_OUTPUT_MODE_SILENT)
If (xlstatus) Then
Output.Items.Add(xlGetErrorString(xlstatus))
Else
Output.Items.Add("xl.ACK is now off")
BnCanAck.Text = "ACK:off"
End If
Else
xlstatus = xlCanSetChannelOutput(portHandle, Convert.ToUInt64(accessMask), XL_OUTPUT_MODE_NORMAL)
If (xlstatus) Then
Output.Items.Add(xlGetErrorString(xlstatus))
Else
Output.Items.Add("xl.ACK is now on")
BnCanAck.Text = "ACK:on"
End If
End If
End Sub
#End Region
#Region "xlGetReceiveQueueLevel"
Private Sub BnRXQueueLevel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BnRXQueueLevel.Click
Dim xlstatus As Byte
Dim RxQueueLevel As Long
xlstatus = xlGetReceiveQueueLevel(portHandle, RxQueueLevel)
If (xlstatus) Then
Output.Items.Add(xlGetErrorString(xlstatus))
Else
Output.Items.Add("xl.RxQueueLevel is " & RxQueueLevel.ToString)
End If
End Sub
#End Region
#Region "xlCanRequestChipState"
Private Sub BnChipstate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BnChipstate.Click
Dim xlstatus As Byte
xlstatus = xlCanRequestChipState(portHandle, accessMask)
If (xlstatus) Then
Output.Items.Add(xlGetErrorString(xlstatus))
End If
End Sub
#End Region
#Region "xlOpenPort, xlClosePort"
Private Sub BnDriverStatus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BnDriverStatus.Click
Dim xlstatus As Byte
If BnDriverStatus.Text = "ClosePort" Then
RxThread.Suspend()
xlstatus = xlDeactivateChannel(portHandle, accessMask)
If (xlstatus) Then
Output.Items.Add("xl!Error:xlDeactivateChannel" & xlGetErrorString(xlstatus))
End If
xlstatus = xlClosePort(portHandle, accessMask)
If (xlstatus) Then
Output.Items.Add("xl!Error:xlClosePort" & xlGetErrorString(xlstatus))
Else
Output.Items.Add("Closing port")
GroupCanMessage.Enabled = False
GroupAcceptance.Enabled = False
GroupCanSpecial.Enabled = False
BnActivateChannels.Enabled = False
GroupAfterOpenPort.Enabled = False
BnDriverStatus.Text = "OpenPort"
End If
ElseIf BnDriverStatus.Text = "OpenPort" Then
GroupAcceptance.Enabled = True
GroupAfterOpenPort.Enabled = True
BnActivateChannels.Enabled = True
BnActivateChannels.Text = "Activate"
BnDriverStatus.Text = "ClosePort"
InitDriver()
End If
End Sub
#End Region
#Region "xlCanResetAcceptance"
Private Sub BnCanAcceptReset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BnCanAcceptReset.Click
Dim xlstatus As Byte
xlstatus = xlCanResetAcceptance(portHandle, accessMask, Convert.ToUInt16(XL_CAN_STD Or XL_CAN_EXT))
If (xlstatus) Then
Output.Items.Add("xlCanResetAcceptance:" & xlGetErrorString(xlstatus))
Else
Output.Items.Add("xlCanResetAcceptance: reset XL_CAN_STD and XL_CAN_EXT")
End If
End Sub
#End Region
#Region "xlCanAddAcceptanceRange"
Private Sub BnResetAccepFilter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BnResetAccepFilter.Click
Dim xlstatus As Byte
' close all filters first coz open by default
xlstatus = xlCanSetChannelAcceptance(portHandle, accessMask, _
Convert.ToUInt32(&HFFF), Convert.ToUInt32(&HFFF), XL_CAN_STD_UINT16)
If (xlstatus) Then
Output.Items.Add("xlCanResetAcceptance:" & xlGetErrorString(xlstatus))
Exit Sub
End If
'add range you want to get messages
xlstatus = xlCanAddAcceptanceRange(portHandle, accessMask, _
Convert.ToUInt32(TBoxCanAcceptFrom.Text), _
Convert.ToUInt32(TBoxCanAcceptTo.Text))
If (xlstatus) Then
Output.Items.Add("xlCanAddAcceptanceRange:" & xlGetErrorString(xlstatus))
Else
Output.Items.Add("xlCanAddAcceptanceRange: filters set from id:" & TBoxCanAcceptFrom.Text & " to " & TBoxCanAcceptTo.Text)
End If
End Sub
#End Region
#Region "xlCanSetChannelParams"
Function CanSetChannelParamsSample()
Dim xlstatus As Byte
Dim tmp As s_xl_channelparams
tmp.bitRate = Convert.ToUInt32(100000)
tmp.sjw = 4
tmp.tseg1 = 12
tmp.tseg2 = 7
tmp.sam = 1
xlstatus = xlCanSetChannelParams(portHandle, Convert.ToUInt64(1), tmp)
If (xlstatus) Then
Output.Items.Add("xlActivateChannel:" & xlGetErrorString(xlstatus))
End If
End Function
#End Region
#Region "xlGetDriverConfig"
Private Sub BnGetDriverConfig_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BnGetDriverConfig.Click
Dim xlstatus As Byte
Dim driverConfig As s_xl_driver_config
Dim serialNum As UInt32
Dim driverVersion As UInt32
Dim hardwareType As Byte
Dim majorVer As Long
Dim minorVer As Long
Dim buildVer As Long
Dim intVal As Integer
xlstatus = xlGetDriverConfig(driverConfig)
If (xlstatus) Then
Output.Items.Add("xlGetDriverConfig:" & xlGetErrorString(xlstatus))
Else
serialNum = driverConfig.channel0.serialNumber
driverVersion = driverConfig.channel0.driverVersion
hardwareType = driverConfig.channel0.hwType
intVal = Convert.ToInt32(driverVersion)
majorVer = (intVal And &HFF000000) >> 24
minorVer = (intVal And &HFF0000) >> 16
buildVer = (intVal And &HFFFF)
Output.Items.Add(GetHWTypeString(hardwareType) & " Channel 1 Serial Number = " & serialNum.ToString)
Output.Items.Add(GetHWTypeString(hardwareType) & " Channel 1 Driver Version = " & majorVer.ToString & "." & minorVer.ToString & "." & buildVer.ToString)
End If
End Sub
#End Region
'functions for sync wire
#Region "xlGetSyncTime"
'get the pctime in libary format (ns), should be close to the timestamp of an sync event
'when not use XL_ACTIVATE_RESET_CLOCK
Private Sub BnGetSync_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim xlstatus As Byte
Dim time As UInt64
xlstatus = xlGetSyncTime(portHandle, time)
If (xlstatus) Then
Output.Items.Add("xl!Error:xlGetSyncTime:" & xlGetErrorString(xlstatus))
Else
Output.Items.Add("xl.GetSyncTime:" & Str(Convert.ToInt64(time)))
End If
End Sub
#End Region
#Region "xlGenerateSyncPulse"
Private Sub BnGeneratePulse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim xlstatus As Byte
xlstatus = xlGenerateSyncPulse(portHandle, Convert.ToUInt64(ChannelMask(0)))
If (xlstatus) Then
Output.Items.Add("xlGenerateSyncPulse: " & xlGetErrorString(xlstatus))
Else
Output.Items.Add("xlGenerateSyncPulse: sent pulse")
End If
End Sub
#End Region
' application administration stuff
#Region "Sub for closing Application"
Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
Dim xlstatus As Byte
xlstatus = xlDeactivateChannel(portHandle, accessMask)
If (xlstatus) Then
Output.Items.Add(xlGetErrorString(xlstatus))
End If
Output.Items.Add("xl!DeactivateChannel: portHandle:" & Str(Convert.ToInt64(portHandle)) & _
" accessMask:" & Str(Convert.ToInt64(accessMask)))
Output.Items.Add("Now closing driver")
xlstatus = xlCloseDriver()
If (xlstatus) Then
Output.Items.Add(xlGetErrorString(xlstatus))
End If
End
End Sub
#End Region
#Region "windows crap - no library sample functions "
Private Function CheckCanDataBytes(ByVal Param As Integer, ByVal min As Byte, ByVal max As Byte) As String
Dim CheckCanDataBytes_ As String
If Param < min Or Param >= max Then
CheckCanDataBytes_ = Str(8)
Else
CheckCanDataBytes_ = Str(Param)
End If
Return CheckCanDataBytes_
End Function
Private Sub TBoxData0_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TBoxData0.LostFocus
TBoxData0.Text = CheckCanDataBytes(Val(TBoxData0.Text), 0, 255)
End Sub
Private Sub TBoxData1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TBoxData0.LostFocus
TBoxData1.Text = CheckCanDataBytes(Val(TBoxData1.Text), 0, 255)
End Sub
Private Sub TBoxData2_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TBoxData0.LostFocus
TBoxData2.Text = CheckCanDataBytes(Val(TBoxData2.Text), 0, 255)
End Sub
Private Sub TBoxData3_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TBoxData0.LostFocus
TBoxData3.Text = CheckCanDataBytes(Val(TBoxData3.Text), 0, 255)
End Sub
Private Sub TBoxData4_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TBoxData0.LostFocus
TBoxData4.Text = CheckCanDataBytes(Val(TBoxData4.Text), 0, 255)
End Sub
Private Sub TBoxData5_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TBoxData0.LostFocus
TBoxData5.Text = CheckCanDataBytes(Val(TBoxData5.Text), 0, 255)
End Sub
Private Sub TBoxData6_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TBoxData0.LostFocus
TBoxData6.Text = CheckCanDataBytes(Val(TBoxData6.Text), 0, 255)
End Sub
Private Sub TBoxData7_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TBoxData0.LostFocus
TBoxData7.Text = CheckCanDataBytes(Val(TBoxData7.Text), 0, 255)
End Sub
Private Sub Tbox_CanDlc_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Tbox_CanDlc.LostFocus
Tbox_CanDlc.Text = CheckCanDataBytes(Val(Tbox_CanDlc.Text), 0, 8)
End Sub
Private Sub BnCloseApp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BnCloseApp.Click
Form1_Closed(sender, e)
End Sub
Private Sub BnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BnClear.Click
Output.Items.Clear()
End Sub
Private Sub BnShowVecHardwControl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BnShowVecHardwControl.Click
Dim callSign As String
xlPopupHwConfig(callSign, 1)
End Sub
#End Region
Private Sub Bn_ReceiveMode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bn_ReceiveMode.Click
Dim xlstatus, Errorframe, Chipstate As Byte
Dim strTmp As String
Select Case Bn_ReceiveMode.Text
Case "Err:on Chip:on"
Errorframe = 1
Chipstate = 0
strTmp = "Err:off Chip:on"
Case "Err:off Chip:on"
Errorframe = 1
Chipstate = 1
strTmp = "Err:off Chip:off"
Case "Err:off Chip:off"
Errorframe = 0
Chipstate = 1
strTmp = "Err:on Chip:off"
Case "Err:on Chip:off"
Errorframe = 1
Chipstate = 1
strTmp = "Err:on Chip:on"
End Select
xlstatus = xlCanSetReceiveMode(portHandle, Errorframe, Chipstate)
If (xlstatus) Then
Output.Items.Add("xlCanSetReceiveMode:" & xlGetErrorString(xlstatus))
Else
Output.Items.Add("xlCanSetReceiveMode: " & strTmp)
Bn_ReceiveMode.Text = strTmp
End If
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -