如何将控制台中的信息提供给文本框

时间:2014-07-16 12:20:49

标签: vb.net printing textbox console

我正在使用vb.net编写代码,该代码可以通过名为CANcaseXL的设备从连接到计算机的雷达传感器获取一些信息,我添加了与CANcaseXL驱动程序对应的dll文件参考和手册有一个命令可以让我打印到CANcaseXL的信息到控制台(命令是xlPrintRx(XLClass.xl_event receivedEvent)),以及它通过CANcaseXL从雷达到计算机的连续实时数据。 现在我可以在控制台中看到数据,但我需要提取它,就像将其打印到文本框中然后进行计算,但我不知道如何。

我将不胜感激任何帮助!

这就像我一直在研究的主要代码一样,我使用XL驱动程序库 - .NET包装器描述>> http://www.labviewforum.de/attachment.php?aid=43764和现成的应用程序。

选项明确开启

进口系统 Imports System.Runtime.InteropServices 进口System.Threading 导入vxlapi_NET20 Imports System.IO

Public Class Main

区域" DLL_Import"

<DllImport("kernel32.dll", SetLastError:=True)> _
Shared Function WaitForSingleObject(ByVal handle As Integer, ByVal timeOut As Integer) As Integer
End Function

结束地区

地区&#34; GLOBALS&#34;

Shared CANDemo_TxChannel As xlSingleChannelCAN_Port
Shared CANDemo_RxChannel As xlSingleChannelCAN_Port


Private RxThread As Thread

Private Enum WaitResults : int

    WAIT_ABANDONED = &H80
    WAIT_FAILED = &HFFFFFFF
    WAIT_OBJECT_0 = &H0
    WAIT_TIMEOUT = &H102
    INFINITE = &HFFFF
End Enum

结束地区

Declare Function AllocConsole Lib "kernel32" () As Int32
Declare Function FreeConsole Lib "kernel32" () As Int32

Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click



    AllocConsole() 

    ProgressBar1.Value = 0

    Dim Max As Double
    Dim Min As Double

    Dim id As String
    Dim dlc As String
    Dim data As String

    Max = Val(TextBox1.Text)
    Min = Val(TextBox2.Text)

    id = Val(TextBox3.Text)
    dlc = Val(TextBox4.Text)
    data = TextBox5.Text
    If data = "" Then
        data = 0
    End If

    Dim Max_hex As Double = Val("&H" & Max)
    Dim Min_hex As Double = Val("&H" & Min)

    If (Max < 1 Or Min < 0) Then
        MsgBox("Please fill the range fields!!", MsgBoxStyle.Critical)
        GoTo C
    End If

    CANDemo_TxChannel = New xlSingleChannelCAN_Port("xlCANdemo NET", Convert.ToUInt32(0))
    CANDemo_RxChannel = New xlSingleChannelCAN_Port("xlCANdemo NET", Convert.ToUInt32(0))

    If (CANDemo_TxChannel.xlCheckPort() And CANDemo_RxChannel.xlCheckPort()) Then
        Label10.BackColor = Color.Green
        Label11.Text = "CAN Connected ..."
      ' these two commands print the configuration for the CANcaseXL device
        CANDemo_TxChannel.xlPrintConfig()
        CANDemo_RxChannel.xlPrintConfig()

        CANDemo_RxChannel.xlResetAcceptanceFilter()
        CANDemo_RxChannel.xlCanAddAcceptanceRange(Convert.ToUInt32(Min_hex), Convert.ToUInt32(Max_hex))

        CANDemo_TxChannel.xlActivate()
        CANDemo_RxChannel.xlActivate()

        Dim RxThread As New Thread(AddressOf RX_Thread)
        RxThread.Start()

        If MsgBox("Are you sure you wont to transmit ?", MsgBoxStyle.YesNo, "Transmission") = MsgBoxResult.Yes Then

            CANDemo_TxChannel.xlTransmit(Convert.ToUInt32(id, 16), Convert.ToUInt16(dlc, 16), Convert.ToUInt64(data, 16))
            ProgressBar1.Value = 100
            MsgBox("Data Transmited!", MsgBoxStyle.Information, "Transmission")

        Else
        End If

    Else
        Label10.BackColor = Color.Red
        Label11.Text = "CAN Disconnected!!"
        MsgBox("Check the device connection!", MsgBoxStyle.Critical, "CAN disconnected")

        CANDemo_TxChannel.xlClosePort()
        CANDemo_RxChannel.xlClosePort()

    End If

C:

End Sub

区域&#34;事件线程(RX)&#34;

Public Shared Sub RX_Thread()


    Dim receivedEvent As XLClass.xl_event = New XLClass.xl_event

    Dim xlStatus As XLClass.XLstatus = XLClass.XLstatus.XL_SUCCESS

    Dim waitResult As WaitResults


    While (True)

        waitResult = WaitForSingleObject(CANDemo_RxChannel.eventHandle, 1000)

        If (waitResult <> WaitResults.WAIT_TIMEOUT) Then

            xlStatus = XLClass.XLstatus.XL_SUCCESS

            While (xlStatus <> XLClass.XLstatus.XL_ERR_QUEUE_IS_EMPTY)

                xlStatus = CANDemo_RxChannel.xlReceive(receivedEvent)

                If (xlStatus = XLClass.XLstatus.XL_SUCCESS) Then

                  ' this command let the coming results from the Radar printed to the console
                    CANDemo_RxChannel.xlPrintRx(receivedEvent)
                End If
            End While
        End If
    End While
End Sub

结束地区

0 个答案:

没有答案