基于康耐视visionpro的vb通讯

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

每次在程序运行前的准备---授权查询

```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

```

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋小童

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值