⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.vb

📁 汽车领can总线通讯程序
💻 VB
📖 第 1 页 / 共 4 页
字号:
                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 + -