基于VB.Net的康耐视Visionmpro的全部代码

227 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

话不多说,上图:

image.png

除了我们之前讲到的知识外,本次程序里面还增加了一些通讯以及文件处理的相关函数

加载程序的名字

  '***********************加载程序名*****************************************
    Private Sub LoadJobName(ByVal CameraIndex As Integer)
        Try
            Select Case CameraIndex
                Case 1
                    cmbC1_Job.Items.Clear()
                    For i As Integer = 1 To C1.JobNum
                        cmbC1_Job.Items.Add(C1.JobName(i))
                    Next
                    cmbC1_Job.Text = Parm.StartJob(1)
                Case 2
                    cmbC2_Job.Items.Clear()
                    For i As Integer = 1 To C2.JobNum
                        cmbC2_Job.Items.Add(C2.JobName(i))
                    Next
                    cmbC2_Job.Text = Parm.StartJob(2)
                Case 3
                    cmbC3_Job.Items.Clear()
                    For i As Integer = 1 To C3.JobNum
                        cmbC3_Job.Items.Add(C3.JobName(i))
                    Next
                    cmbC3_Job.Text = Parm.StartJob(3)
                Case 4
                    cmbC4_Job.Items.Clear()
                    For i As Integer = 1 To C4.JobNum
                        cmbC4_Job.Items.Add(C4.JobName(i))
                    Next
                    cmbC4_Job.Text = Parm.StartJob(4)
            End Select
        Catch ex As Exception
            'LogAdd("LoadJobName" & ex.Message, False)
            MessageBox.Show(ex.Message)
        End Try

    End Sub

就是读取文件夹下的文件名

visionpro实时图像

Private Sub btnLiveC1_Click(sender As Object, e As EventArgs) Handles btnLiveC1.Click, btnLiveC2.Click, btnLiveC3.Click, btnLiveC4.Click
        Dim btnLive As ToolStripButton = sender
        Select Case btnLive.Name
            Case "btnLiveC1"
                gSelectCamNum = 1
                Try
                    If btnLiveC1.Text = "实时图像" Then
                        CogRDisC1.StaticGraphics.Clear()
                        CogRDisC1.InteractiveGraphics.Clear()
                        C1.Acq.Operator.OwnedExposureParams.Exposure = CDbl(C1.ExposureTime(C1.SelectJobNum))
                        CogRDisC1.StartLiveDisplay(C1.Acq.Operator)
                        CogRDisC1_DoubleClick(sender, e)
                        btnLiveC1.Text = "停止实时"
                        btnRunC1.Enabled = False
                        btnEditC1.Enabled = False
                        btnJobConfigC1.Enabled = False
                        TimerLive.Start()
                        CogRDisC1.Fit()
                    ElseIf btnLiveC1.Text = "停止实时" Then
                        CogRDisC1.StopLiveDisplay()
                        CogRDisC1.Fit()
                        btnLiveC1.Text = "实时图像"
                        btnRunC1.Enabled = True
                        btnEditC1.Enabled = True
                        btnJobConfigC1.Enabled = True
                        TimerLive.Stop()
                        btnLiveC1.Image = My.Resources.Live
                    End If
                Catch ex As Exception
                    btnLiveC1.Text = "实时图像"
                    btnRunC1.Enabled = True
                    btnEditC1.Enabled = True
                    btnJobConfigC1.Enabled = True
                    btnLiveC1.Image = My.Resources.Live
                    LogAdd("Camera0打开实时图像失败!" & ex.Message, False)
                    MessageBox.Show("Camera0打开实时图像失败!")
                End Try
            Case "btnLiveC2"
                gSelectCamNum = 2
                Try
                    If btnLiveC2.Text = "实时图像" Then
                        CogRDisC2.StaticGraphics.Clear()
                        CogRDisC2.InteractiveGraphics.Clear()
                        C2.Acq.Operator.OwnedExposureParams.Exposure = CDbl(C2.ExposureTime(C2.SelectJobNum))
                        CogRDisC2.StartLiveDisplay(C2.Acq.Operator)
                        CogRDisC2_DoubleClick(sender, e)
                        btnLiveC2.Text = "停止实时"
                        btnRunC2.Enabled = False
                        btnEditC2.Enabled = False
                        btnJobConfigC2.Enabled = False
                        TimerLive.Start()
                        CogRDisC2.Fit()

                    ElseIf btnLiveC2.Text = "停止实时" Then
                        CogRDisC2.StopLiveDisplay()
                        CogRDisC2.Fit()
                        btnLiveC2.Text = "实时图像"
                        btnRunC2.Enabled = True
                        btnEditC2.Enabled = True
                        btnJobConfigC2.Enabled = True
                        TimerLive.Stop()
                        btnLiveC2.Image = My.Resources.Live
                    End If
                Catch ex As Exception
                    btnLiveC2.Text = "实时图像"
                    btnRunC2.Enabled = True
                    btnEditC2.Enabled = True
                    btnJobConfigC2.Enabled = True
                    btnLiveC2.Image = My.Resources.Live
                    LogAdd("Camera1打开实时图像失败!" & ex.Message, False)
                    MessageBox.Show("Camera1打开实时图像失败!")

                End Try
            Case "btnLiveC3"
                gSelectCamNum = 3
                Try
                    If btnLiveC3.Text = "实时图像" Then
                        CogRDisC3.StaticGraphics.Clear()
                        CogRDisC3.InteractiveGraphics.Clear()

                        C3.Acq.Operator.OwnedExposureParams.Exposure = CDbl(C3.ExposureTime(C3.SelectJobNum))
                        CogRDisC3.StartLiveDisplay(C3.Acq.Operator)
                        CogRDisC3_DoubleClick(sender, e)
                        btnLiveC3.Text = "停止实时"
                        btnRunC3.Enabled = False
                        btnEditC3.Enabled = False
                        btnJobConfigC3.Enabled = False
                        TimerLive.Start()
                        CogRDisC3.Fit()

                    ElseIf btnLiveC3.Text = "停止实时" Then
                        CogRDisC3.StopLiveDisplay()
                        CogRDisC3.Fit()
                        btnLiveC3.Text = "实时图像"
                        btnRunC3.Enabled = True
                        btnEditC3.Enabled = True
                        btnJobConfigC3.Enabled = True
                        TimerLive.Stop()
                        btnLiveC3.Image = My.Resources.Live
                    End If
                Catch ex As Exception
                    btnLiveC3.Text = "实时图像"
                    btnRunC3.Enabled = True
                    btnEditC3.Enabled = True
                    btnJobConfigC3.Enabled = True
                    btnLiveC3.Image = My.Resources.Live
                    LogAdd("Camera2打开实时图像失败!" & ex.Message, False)
                    MessageBox.Show("Camera2打开实时图像失败!")
                End Try
            Case "btnLiveC4"
                gSelectCamNum = 4
                Try
                    If btnLiveC4.Text = "实时图像" Then
                        CogRDisC4.StaticGraphics.Clear()
                        CogRDisC4.InteractiveGraphics.Clear()

                        C4.Acq.Operator.OwnedExposureParams.Exposure = CDbl(C4.ExposureTime(C4.SelectJobNum))
                        CogRDisC4.StartLiveDisplay(C4.Acq.Operator)
                        CogRDisC4_DoubleClick(sender, e)
                        btnLiveC4.Text = "停止实时"
                        btnRunC4.Enabled = False
                        btnEditC4.Enabled = False
                        btnJobConfigC4.Enabled = False
                        TimerLive.Start()
                        CogRDisC4.Fit()

                    ElseIf btnLiveC4.Text = "停止实时" Then
                        CogRDisC4.StopLiveDisplay()
                        CogRDisC4.Fit()
                        btnLiveC4.Text = "实时图像"
                        btnRunC4.Enabled = True
                        btnEditC4.Enabled = True
                        btnJobConfigC4.Enabled = True
                        TimerLive.Stop()
                        btnLiveC4.Image = My.Resources.Live
                    End If
                Catch ex As Exception
                    btnLiveC4.Text = "实时图像"
                    btnRunC4.Enabled = True
                    btnEditC4.Enabled = True
                    btnJobConfigC4.Enabled = True
                    btnLiveC4.Image = My.Resources.Live
                    LogAdd("Camera3打开实时图像失败!" & ex.Message, False)
                    MessageBox.Show("Camera3打开实时图像失败!")
                End Try
        End Select
    End Sub

图像的实时显示功能

双击图像窗口最大化

#Region "双击相机图像窗口最大化"
    Private Sub CogRDisC1_DoubleClick(sender As Object, e As EventArgs) Handles CogRDisC1.DoubleClick
        MaxStep += 1
        If MaxStep > 1 Then
            MaxStep = 0
        End If
        If MaxStep = 1 Then
            pnlC1.Location = New Point(0, 0)
            pnlC1.Size = New Point(pnlDisplay.Width, pnlDisplay.Height)
            ResizeToolStrip(ToolStripC1)
            pnlC1.BringToFront()
        Else
            btnLiveC1.Text = "停止实时"
            btnLiveC1_Click(btnLiveC1, e)
            btnCrossC1.Text = "十字光标显示中"
            btnCrossC1_Click(btnCrossC1, e)
            pnlC1.Location = New Point(0, 0)
            pnlC1.Size = New Point(NpnlWidthC1, NpnlHeightC1)
            ResizeToolStrip(ToolStripC1)
        End If
    End Sub
    Private Sub CogRDisC2_DoubleClick(sender As Object, e As EventArgs) Handles CogRDisC2.DoubleClick
        MaxStep += 1
        If MaxStep > 1 Then
            MaxStep = 0
        End If
        If MaxStep = 1 Then
            pnlC2.Location = New Point(0, 0)
            pnlC2.Size = New Point(pnlDisplay.Width, pnlDisplay.Height)
            ResizeToolStrip(ToolStripC2)
            pnlC2.BringToFront()
        Else
            btnLiveC2.Text = "停止实时"
            btnLiveC1_Click(btnLiveC2, e)
            btnCrossC2.Text = "十字光标显示中"
            btnCrossC1_Click(btnCrossC2, e)
            pnlC2.Location = New Point(NpnlLocationXC2, NpnlLocationYC2)
            pnlC2.Size = New Point(NpnlWidthC2, NpnlHeightC2)
            ResizeToolStrip(ToolStripC2)
        End If
    End Sub
    Private Sub CogRDisC3_DoubleClick(sender As Object, e As EventArgs) Handles CogRDisC3.DoubleClick
        MaxStep += 1
        If MaxStep > 1 Then
            MaxStep = 0
        End If
        If MaxStep = 1 Then
            'setTag(ToolStripC3)
            pnlC3.Location = New Point(0, 0)
            pnlC3.Size = New Point(pnlDisplay.Width, pnlDisplay.Height)
            ResizeToolStrip(ToolStripC3)
            pnlC3.BringToFront()
        Else
            btnLiveC3.Text = "停止实时"
            btnLiveC1_Click(btnLiveC3, e)
            btnCrossC3.Text = "十字光标显示中"
            btnCrossC1_Click(btnCrossC3, e)
            pnlC3.Location = New Point(NpnlLocationXC3, NpnlLocationYC3)
            pnlC3.Size = New Point(NpnlWidthC3, NpnlHeightC3)
            ResizeToolStrip(ToolStripC3)
        End If
    End Sub
    Private Sub CogRDisC4_DoubleClick(sender As Object, e As EventArgs) Handles CogRDisC4.DoubleClick
        MaxStep += 1
        If MaxStep > 1 Then
            MaxStep = 0
        End If
        If MaxStep = 1 Then
            'setTag(ToolStripC4)
            pnlC4.Location = New Point(0, 0)
            pnlC4.Size = New Point(pnlDisplay.Width, pnlDisplay.Height)
            ResizeToolStrip(ToolStripC4)
            pnlC4.BringToFront()
        Else
            btnLiveC4.Text = "停止实时"
            btnLiveC1_Click(btnLiveC4, e)
            btnCrossC4.Text = "十字光标显示中"
            btnCrossC1_Click(btnCrossC4, e)
            pnlC4.Location = New Point(NpnlLocationXC4, NpnlLocationYC4)
            pnlC4.Size = New Point(NpnlWidthC4, NpnlHeightC4)
            ResizeToolStrip(ToolStripC4)
        End If
    End Sub
#End Region

后续我们会讲一下通讯和触发拍照