本文已参与「新人创作礼」活动,一起开启掘金创作之路。
话不多说,上图:
除了我们之前讲到的知识外,本次程序里面还增加了一些通讯以及文件处理的相关函数
加载程序的名字
```vb '******加载程序名************ Private Sub LoadJobName(ByVal CameraIndex As Integer) Try Select Case CameraIndex Case 1 cmbC1Job.Items.Clear() For i As Integer = 1 To C1.JobNum cmbC1Job.Items.Add(C1.JobName(i)) Next cmbC1Job.Text = Parm.StartJob(1) Case 2 cmbC2Job.Items.Clear() For i As Integer = 1 To C2.JobNum cmbC2Job.Items.Add(C2.JobName(i)) Next cmbC2Job.Text = Parm.StartJob(2) Case 3 cmbC3Job.Items.Clear() For i As Integer = 1 To C3.JobNum cmbC3Job.Items.Add(C3.JobName(i)) Next cmbC3Job.Text = Parm.StartJob(3) Case 4 cmbC4Job.Items.Clear() For i As Integer = 1 To C4.JobNum cmbC4Job.Items.Add(C4.JobName(i)) Next cmbC4Job.Text = Parm.StartJob(4) End Select Catch ex As Exception 'LogAdd("LoadJobName" & ex.Message, False) MessageBox.Show(ex.Message) End Try
End Sub
``` 就是读取文件夹下的文件名
visionpro实时图像
```vb Private Sub btnLiveC1Click(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) CogRDisC1DoubleClick(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
``` 图像的实时显示功能
双击图像窗口最大化
```vb
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
```