Hallo zusammen,
ich brauch mal wieder eure Hilfe. Folgendes ich möchte eine ModbusTCP Verbindung aufbauen. Ich hatte eine Beispiel-Code gefunden und wollte diesen in meine Projekt integrieren und erweitern.
Vielen Dank für eure Hilfe.
Ich bekomme eine Fehlermeldung die ich nicht deuten kann auch schon bei Google gesucht:
Fehler 107 "Public Event OnResponseData(id As UShort, unit As Byte, function As Byte, data() As Byte)" ist ein Ereignis und kann nicht direkt aufgerufen werden. Verwenden Sie eine RaiseEvent-Anweisung, um ein Ereignis aufzurufen.
Source-Code:
Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
Try
' Create new modbus master and add event functions
MBmaster = New Master(txtIP.Text, 502)
MBmaster.OnResponseData += New ModbusTCP.Master.ResponseData(AddressOf MBmaster_OnResponseData)
'MBmaster.OnException += New ModbusTCP.Master.ExceptionData(AddressOf MBmaster_OnException)
ResizeData()
' Show additional fields, enable watchdog
Catch [error] As SystemException
MessageBox.Show([error].Message)
End Try
End Sub
Private Sub MBmaster_OnResponseData(ByVal ID As UShort, ByVal unit As Byte, ByVal [function] As Byte, ByVal values As Byte())
' ------------------------------------------------------------------
' Seperate calling threads
If Me.InvokeRequired Then
Me.BeginInvoke(New Master.ResponseData(AddressOf MBmaster_OnResponseData), New Object() {ID, unit, [function], values})
Return
End If
' ------------------------------------------------------------------------
' Identify requested data
Select Case ID
Case 1
grpData.Text = "Read coils"
data = values
ShowAs(Nothing, Nothing)
Exit Select
Case 2
grpData.Text = "Read discrete inputs"
data = values
ShowAs(Nothing, Nothing)
Exit Select
Case 3
grpData.Text = "Read holding register"
data = values
ShowAs(Nothing, Nothing)
Exit Select
Case 4
grpData.Text = "Read input register"
data = values
ShowAs(Nothing, Nothing)
Exit Select
Case 5
grpData.Text = "Write single coil"
Exit Select
Case 6
grpData.Text = "Write multiple coils"
Exit Select
Case 7
grpData.Text = "Write single register"
Exit Select
Case 8
grpData.Text = "Write multiple register"
Exit Select
End Select
End Sub
ich brauch mal wieder eure Hilfe. Folgendes ich möchte eine ModbusTCP Verbindung aufbauen. Ich hatte eine Beispiel-Code gefunden und wollte diesen in meine Projekt integrieren und erweitern.
Vielen Dank für eure Hilfe.
Ich bekomme eine Fehlermeldung die ich nicht deuten kann auch schon bei Google gesucht:
Fehler 107 "Public Event OnResponseData(id As UShort, unit As Byte, function As Byte, data() As Byte)" ist ein Ereignis und kann nicht direkt aufgerufen werden. Verwenden Sie eine RaiseEvent-Anweisung, um ein Ereignis aufzurufen.
Source-Code:
Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
Try
' Create new modbus master and add event functions
MBmaster = New Master(txtIP.Text, 502)
MBmaster.OnResponseData += New ModbusTCP.Master.ResponseData(AddressOf MBmaster_OnResponseData)
'MBmaster.OnException += New ModbusTCP.Master.ExceptionData(AddressOf MBmaster_OnException)
ResizeData()
' Show additional fields, enable watchdog
Catch [error] As SystemException
MessageBox.Show([error].Message)
End Try
End Sub
Private Sub MBmaster_OnResponseData(ByVal ID As UShort, ByVal unit As Byte, ByVal [function] As Byte, ByVal values As Byte())
' ------------------------------------------------------------------
' Seperate calling threads
If Me.InvokeRequired Then
Me.BeginInvoke(New Master.ResponseData(AddressOf MBmaster_OnResponseData), New Object() {ID, unit, [function], values})
Return
End If
' ------------------------------------------------------------------------
' Identify requested data
Select Case ID
Case 1
grpData.Text = "Read coils"
data = values
ShowAs(Nothing, Nothing)
Exit Select
Case 2
grpData.Text = "Read discrete inputs"
data = values
ShowAs(Nothing, Nothing)
Exit Select
Case 3
grpData.Text = "Read holding register"
data = values
ShowAs(Nothing, Nothing)
Exit Select
Case 4
grpData.Text = "Read input register"
data = values
ShowAs(Nothing, Nothing)
Exit Select
Case 5
grpData.Text = "Write single coil"
Exit Select
Case 6
grpData.Text = "Write multiple coils"
Exit Select
Case 7
grpData.Text = "Write single register"
Exit Select
Case 8
grpData.Text = "Write multiple register"
Exit Select
End Select
End Sub