Hallo Leute,
ich versuche schon seit langer Zeit meine 8-fach Relaisplatine von Conrad anzusteuern.
Ein bisschen Hilfe brauche ich aber noch, da mir noch nicht alles ganz klar ist.
Das Problem hat, meine ich, auch mehr mit C# zu tun, als mit der Platine selbst.
Der Befehlsrahmen für die Platine sind (genau wie die Antwort) immer 4 Bytes.
Commando - Board-Adresse - Daten - Prüfsumme (XOR aus den ersten 3 Bytes)
Um z.B. alle Relais zu schalten, gibt es den Rahmen: 03 01 255 253
Als Antwort sollte von der Relaiskarte genau der Rahmen zurückkommen, allerdings das Commando invertiert. (Also hier mit 252)
Folgenden Code habe ich geschrieben. Doch leider tut sich bei der Karte nichts und wenn ich die Antwort lesen will, sind es genau jene Bytes, die ich auch geschickt habe.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| SerialPort port = new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One); port.Handshake = Handshake.None;
port.Open();
byte[] data = new Byte[4] { 03, 01, 255, 253 }; port.Write(data, 0, 4);
for (int i = 0; i < 4; i++) { Console.Write(port.ReadByte().ToString() + " "); } port.Close(); |
Deshalb nun meine Frage, was ich falsch machen könnte. Muss ich die Bytes villeicht in einem anderen Format senden?
Lg und vielen Dank,
mannyk
PS: Für interessierte habe ich die Bedienungsanleitung dazugetan.
Moderiert von Christian S.: Code- durch C#-Tags ersetzt