Hallo Leute.
In der Hoffnung, dass mir jemand auf die Sprünge helfen kann, wende ich mich im Forum um Hilfe.
Ich besitze ein Easy-Steuerrelais von Moeller bzw. Eaton (DC-RCX) und möchte mir per Visual-Basic eine Bedienoberfläche für Windows gestalten. Dazu möchte ich die easy_com.dll zur Hilfe nehmen.
Anhand der Dokumentation und dem Beispielprogramm habe ich es soweit geschafft, die verschiedenen Ausgänge zu schalten.
Hier der Befehl:
ComError = easyCOM.MC_Write_Object_Value(MyComHandle, 0, 4, 3, 0, bMarkerByte(0))
Interpretiere ich die Doku richtig, steht
- die 0 für den Com-Port
- die 4 für "einzelne Bit-Merker"
- die 3 für den jeweiligen Merker (in meinem Beispiel M3)
- die 0 für die Länge?
- und das bMarkerByte(0) für den Wert, der in den Merker geschrieben werden soll.
Natürlich möchte ich für einen Ausgang nicht einen separaten Ein- und Ausschalt-Button erstellen, sondern nur einen Button verwenden, mit dem ich den Ausgang ein- und ausschalten und wenn möglich gleichzeitig noch den Zustand anzeigen kann.
Dazu habe ich folgendes geschrieben:
im bRawByte(0) As Byte
Dim bMarkerByte() As Byte = {1, 2, 3, 4, 5, 6, 7, 8}
Private Sub btn_Run_Test_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Run_Test.Click
ComError = easyCOM.MC_Read_Object_Value(MyComHandle, 0, 1, 1, 0, bRawByte(0))
MsgBox(bRawByte(0))
If bRawByte(0) = 0 Then
bMarkerByte(0) = 1
Else : bMarkerByte(0) = 0
End If
MsgBox(bMarkerByte(0))
ComError = easyCOM.MC_Write_Object_Value(MyComHandle, 0, 4, 3, 0, bMarkerByte(0))
End Sub
Alles anzeigen
Demnach sollte der erste Befehl den Wert aus dem Merker auslesen und durch das "If-Then-Else-Verfahren" den gegenteiligen Wert in den Merker schreiben.
Mein Problem besteht jedoch darin, dass mir nicht nur die beiden Werte 1 und 0 ausgegeben werden, sondern steht beispielsweise in der Variable bMarkerByte(0) bei eingeschalteten Ausgang der Wert 5 und wenn er ausgeschaltet wird den Wert 4.
Diese Werte ändern sich sporadisch und ich konnte noch nicht herausfinden, weshalb sich diese Werte ändern.
Kann mir jemand weiterhelfen und mir erklären, weshalb ein Wert 4 oder 5 statt 0 und 1 ausgegeben wird?
Welche Bedeutung hat eigentlich die 0 vom bMarkerByte(0)?
Leider muss ich mich noch in der Stufe "Beginner" einteilen, da ich mich erst seit ein paar Tagen mit VisualBasic auseinandersetze.
Falls mir jemand mit einigen Tipps weiterhelfen kann, bedanke ich mich bereits im Voraus dafür.
Gruss
ADB