Private Function funSend(ByVal sIP As String, ByVal sSend As String, ByVal sNum As String) As String
'本函数用于发送读写PLC命令
'sIP指定远程IP地址,sSend指定要发送的命令正文,sErr返回错误信息
Try
Winsock1.RemotePort = 500
Winsock1.RemoteHost = sIP
sSend = Chr(2) & sNum & sSend
sSend = sSend + LRC(sSend) + Chr(3)
Winsock1.SendData(sSend) Catch ex As Exception
funSend = ex.Message
End Try
End Function
警告:函数“funSend”并非在所有代码路径上都返回值。当使用结果时,可能会在运行时发生空引用异常。
该怎么解决呢?
'本函数用于发送读写PLC命令
'sIP指定远程IP地址,sSend指定要发送的命令正文,sErr返回错误信息
Try
Winsock1.RemotePort = 500
Winsock1.RemoteHost = sIP
sSend = Chr(2) & sNum & sSend
sSend = sSend + LRC(sSend) + Chr(3)
Winsock1.SendData(sSend) Catch ex As Exception
funSend = ex.Message
End Try
End Function
警告:函数“funSend”并非在所有代码路径上都返回值。当使用结果时,可能会在运行时发生空引用异常。
该怎么解决呢?
发生空引用的地方加上判断
对VB不是很熟悉,感觉应该是这么搞
Private Function funSend(ByVal sIP As String, ByVal sSend As String, ByVal sNum As String) As String
'本函数用于发送读写PLC命令
'sIP指定远程IP地址,sSend指定要发送的命令正文,sErr返回错误信息
Try
Winsock1.RemotePort = 500
Winsock1.RemoteHost = sIP
sSend = Chr(2) & sNum & sSend
sSend = sSend + LRC(sSend) + Chr(3)
Winsock1.SendData(sSend)
funSend = "这里想写什么写什么,成功可以返回1" Catch ex As Exception
funSend = ex.Message
End Try
End Function就可以了
Public Function ReceiveFatek(ByVal sInfo As String) As String
Try
Dim i As Integer
i = Mid(sInfo, 4, 2)
If Mid(sInfo, 6, 1) <> "0" Then
ReceiveFatek = "PLC返回错误信息,操作失败!"
Exit Function
End If
Select Case i
Case Is = 40
If Mid(sInfo, 8, 1) = "0" Then ReceiveFatek = "PLC处于停止状态"
If Mid(sInfo, 8, 1) = "1" Then ReceiveFatek = "PLC处于运行状态"
Case Is = 41
ReceiveFatek = "PLC运行状态改变成功"
Case Is = 42
ReceiveFatek = "PLC操作单点成功"
Case Is = 46
glngSpeed = CInt("&H" & Mid(sInfo, 11, 4))
glngTBstate = Mid(sInfo, 15, 4)
ReceiveFatek = "PLC读取成功,速度是" & glngSpeed & _
"同步状态是" & glngTBstate
Case Is = 47
ReceiveFatek = "PLC写入成功"
End Select
Catch ex As Exception
ReceiveFatek = ex.Message
End Try
End Function
ReceiveFatek = "PLC写入成功"
Case Else
ReceiveFatek = "PLC不明状态"
End Select
加一下也行ReceiveFatek = String.Empty
If Mid(sInfo, 8, 1) = "0" Then ReceiveFatek = "PLC处于停止状态"
If Mid(sInfo, 8, 1) = "1" Then ReceiveFatek = "PLC处于运行状态"