本文已参与「新人创作礼」活动,一起开启掘金创作之路。
每次在程序运行前的准备---授权查询
```vb
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通讯的类文件 代码片段
我们怎么通讯呢
## 实例化
```vb '=========初始化TCPSever========================== mServerC1.InitTcpServer(Parm.SerPort(1), 2, 1024, 10) mServerC1.StartServer()
```
对于TCP的状态做个监控
```vb '=====================通讯状态监控============================== 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的数据
```vb '==================接收数据监控================================== 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 发送数据
```vb '*********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
```