本文已参与「新人创作礼」活动,一起开启掘金创作之路。
每次在程序运行前的准备---授权查询
#Region "检测软件授权"
Delegate Sub mydelegate()
Dim LicensedFeatures As New CogStringCollection
Public Sub CheckLicense()
Try
If InvokeRequired Then
Dim mydel As New mydelegate(AddressOf CheckLicense)
Invoke(mydel)
Return
End If
LicensedFeatures = CogMisc.GetLicensedFeatures(False)
If LicensedFeatures.Count > 0 Then
Else
mLoadingThread.Abort()
mCloseThread = New Thread(AddressOf CloseStart)
mCloseThread.Start()
'Sleep(20)
'mLoadingThread.Abort()
'LogAdd("License不存在,请检查License!", False)
MessageBox.Show("License不存在,请检查License!")
Application.Exit()
End If
Catch gx As CogException
MessageBox.Show(gx.ToString)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
#End Region
用来产看有没有获得官方授权
自己弄的类,用来处理visionpro
嗨,这样就不会显得文章很短,全是代码了。 这些是tcp通讯的类文件
我们怎么通讯呢
实例化
'=========初始化TCPSever==========================
mServerC1.InitTcpServer(Parm.SerPort(1), 2, 1024, 10)
mServerC1.StartServer()
对于TCP的状态做个监控
'=====================通讯状态监控==============================
Private Delegate Sub TCPStatusC1(ByVal str As String, ByVal Flag As Boolean)
Private Sub mServerC1_ClientConnected(ByVal IP As String, ByVal Port As String) Handles mServerC1.ClientConnected
Try
Me.Invoke(New TCPStatusC1(AddressOf StatusDisplayC1), " Camera01客户端" & IP & "已连接!", True)
gOnlineFlag = True
Catch ex As Exception
LogAdd(ex.Message, False)
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub mServerC1_ClientClose(ByVal IP As String, ByVal Port As String) Handles mServerC1.ClientClose
Try
Me.Invoke(New TCPStatusC1(AddressOf StatusDisplayC1), " Camera01客户端" & IP & "已断开!", False)
Catch ex As Exception
LogAdd(ex.Message, False)
MessageBox.Show(ex.Message)
End Try
End Sub
'==================状态灯监控===================================
Private Sub StatusDisplayC1(ByVal Log As String, ByVal Flag As Boolean)
If Flag Then
LogAdd(Log, True)
picStatusC1.BackgroundImage = My.Resources.green
Else
LogAdd(Log, False)
picStatusC1.BackgroundImage = My.Resources.red
End If
End Sub
Private Sub LogMessageC1(ByVal Log As String)
STimeC1 = GetTime()
LogAdd(Log, True)
End Sub
接收来自TCP的数据
'==================接收数据监控==================================
Private Delegate Sub CameraRecC1()
Private Delegate Sub LogAddC1(ByVal LogStr As String)
Private Delegate Sub CmbDisplayC1(ByVal JobStr As String)
Private Sub mServerC1_DataArrived(ByVal value() As Byte, ByVal Len As Integer, ByVal IPAddress As String, ByVal Port As String) Handles mServerC1.DataArrived
Try
Dim ReceiveStr As String = ""
Dim ReStr() As String
ReceiveStr = Encoding.Default.GetString(value)
Me.Invoke(New LogAddC1(AddressOf LogMessageC1), "Camera01接收数据:" & ReceiveStr)
ReStr = Split(ReceiveStr, "!")
ReceiveStr = ReStr(0)
If CStr(ReStr(1)) <> "" Then
C1ImageName = ReceiveStr.Substring(0, 4) & "_" & ReStr(1)
End If
For i As Integer = 1 To C1.JobNum
If C1.Trigger(i) = ReceiveStr Then
C1.SelectJobNum = i
Me.Invoke(New CameraRecC1(AddressOf CameraDataC1))
End If
Next
Catch ex As Exception
LogAdd(ex.Message, False)
MessageBox.Show(ex.Message)
End Try
End Sub
我们根据接收到的数据去判断,然后去运行我们的额程序
TCP 发送数据
'*******************************TCP发送数据*******************************************
Private Sub TCPSendData(ByVal CameraIndex As Integer, ByVal data As String, ByVal Flag As Boolean)
Dim SendByte() As Byte
SendByte = Encoding.ASCII.GetBytes(data)
Try
Select Case CameraIndex
Case 1
If gStep = 1 Then
mServerC1.SendDataToAllClient(SendByte)
ETimeC1 = GetTime()
gRunTimeC1 = CalRunTime(STimeC1, ETimeC1)
LogAdd("Camera01发送结果:" & data, Flag)
Else
ETimeC1 = GetTime()
gRunTimeC1 = CalRunTime(STimeC1, ETimeC1)
LogAdd("Camera01检测结果:" & data, Flag)
End If
lblRunTimeC1.Text = gRunTimeC1 & "ms"
C1ImageName = ""
Case 2
If gStep = 1 Then
mServerC2.SendDataToAllClient(SendByte)
ETimeC2 = GetTime()
gRunTimeC2 = CalRunTime(STimeC2, ETimeC2)
LogAdd("Camera02发送结果:" & data, Flag)
Else
ETimeC2 = GetTime()
gRunTimeC2 = CalRunTime(STimeC2, ETimeC2)
LogAdd("Camera02检测结果:" & data, Flag)
End If
lblRunTimeC2.Text = gRunTimeC2 & "ms"
C2ImageName = ""
Case 3
If gStep = 1 Then
mServerC3.SendDataToAllClient(SendByte)
ETimeC3 = GetTime()
gRunTimeC3 = CalRunTime(STimeC3, ETimeC3)
LogAdd("Camera03发送结果:" & data, Flag)
Else
ETimeC3 = GetTime()
gRunTimeC3 = CalRunTime(STimeC3, ETimeC3)
LogAdd("Camera03检测结果:" & data, Flag)
End If
lblRunTimeC3.Text = gRunTimeC3 & "ms"
C3ImageName = ""
Case 4
If gStep = 1 Then
mServerC4.SendDataToAllClient(SendByte)
ETimeC4 = GetTime()
gRunTimeC4 = CalRunTime(STimeC4, ETimeC4)
LogAdd("Camera04发送结果:" & data, Flag)
Else
ETimeC4 = GetTime()
gRunTimeC4 = CalRunTime(STimeC4, ETimeC4)
LogAdd("Camera04检测结果:" & data, Flag)
End If
lblRunTimeC4.Text = gRunTimeC4 & "ms"
C4ImageName = ""
Case 5
mServerC1.SendDataToAllClient(SendByte)
LogAdd("Camera01发送结果:" & data, Flag)
End Select
Catch ex As Exception
LogAdd(ex.Message, False)
MessageBox.Show(ex.Message)
End Try
End Sub