无法在函数中实现backgroundworker

时间:2016-02-03 16:41:37

标签: vb.net backgroundworker

我读过的所有内容都指出我需要运行我的" CollectSample"在backgroundworker1中运行但是使用了我无法弄清楚或编译的所有样本。因为我对vb很新,而不是一个强大的程序员,所以我无法弄清楚如何调用,或者在下面的代码中使用后台工作程序。一个快速的总结,我将realterm称为一个过程,它打开和关闭就好了,但锁定了win形式,因为它在16循环中,如果需要我可以突破?任何帮助或指导将不胜感激。

Private Sub Button35_Click(sender As Object, e As EventArgs) Handles Button35.Click

    ProgressBar2.Visible = True
    ProgressBar2.Value = 0

    For i As Integer = 17 To 32
        DirectCast(Me.Controls.Find("Button" & i, True)(0), Button).Visible = False
    Next

    For Bindex = 17 To 32

        Dim Counter As Integer = 0
        Dim Tone As Integer = TextBox1.Text
        Dim Duration As Integer = TextBox2.Text

        Duration = Duration * 2
        For Counter = 1 To Duration
            Counter = Counter + 1
            NtBeep(Tone, 200)  'f,d
        Next

        CollectSample("SAMPLE" & Bindex - 16 & ".txt")  'subtracting the first 16
        ProgressBar2.PerformStep()
        CheckSample("SAMPLE" & Bindex - 16 & ".txt")

        DirectCast(Me.Controls.Find("Label" & Bindex, True)(0), Label).Visible = True
        DirectCast(Me.Controls.Find("Button" & Bindex, True)(0), Button).Visible = True

        If SampleFlag = 1 Then  'error readiing from instument
            DirectCast(Me.Controls.Find("Label" & Bindex, True)(0), Label).Text = "Er00"
            DirectCast(Me.Controls.Find("Button" & Bindex, True)(0), Button).Text = "Er00"
        End If

        If SampleFlag = 2 Then  'sample count error
            DirectCast(Me.Controls.Find("Label" & Bindex, True)(0), Label).Text = IncSamp
            DirectCast(Me.Controls.Find("Button" & Bindex, True)(0), Button).Text = IncSamp
        End If

        If SampleFlag = 0 Then   'sample good
            If SendMyAvg <> 0 Then
                SendMyAvg = Math.Round(SendMyAvg, 2)
                '  MessageBox.Show("Button" & Bindex & " / " & SendMyAvg)
                DirectCast(Me.Controls.Find("Label" & Bindex, True)(0), Label).Text = SendMyAvg
                DirectCast(Me.Controls.Find("Button" & Bindex, True)(0), Button).Text = SendMyAvg
            End If
        End If
    Next
End Sub


Private Sub CollectSample(ByVal Samplefile As String)   'call realterm, close realterm
    NtBeep(500, 200)  'f,d
    'http://www.dotnetperls.com/process-vbnet
    Dim p As New ProcessStartInfo
    p.FileName = "C:\Program Files (x86)\BEL\Realterm\realterm.exe"
    p.Arguments = "C:\Program Files (x86)\BEL\Realterm\realterm.exe Baud=4800 Data=7E2 Port=" & USBPort & " timestamp=4 capfile=C:\IMAX_Ware_V2\LS100Cap\""" & targetName & """ capsecs=35 capture=1 Sendfile=""" & sourceName & """ Senddly=3000 Sendrep=10 CapQuit"

    p.WindowStyle = ProcessWindowStyle.Hidden
    Dim myProcess As Process = System.Diagnostics.Process.Start(p)
    myProcess.WaitForExit()
    myProcess.Close()

End Sub

0 个答案:

没有答案