
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo, > Ich brauche ein Programm mit dem ich über die serielle Schnittstelle auf die Digi. Ausgänge > der C-Control einzeln zugreifen kann und diese schalten kann. Du musst hierfür ein "Protokoll" schreiben. Du sendest eine gewisse Datenreihe an die C-Control, diese liest diese Daten aus und bewertet die entsprechend. Beispiel: Ein Datenrahmen besteht aus einem Befehlsbyte, einem Adressbyte und einem Datenbyte. Befehlsbyte "1" heißt Digitalport setzten, Adressbyte wird für den jeweiligen Digitalport reserviert und in Datenbyte schreibst Du was passieren soll. 1-5-1 Würde praktisch bedeuten: Setzte Digitalport 5 in den TRUE/ON Zustand. Man kann das ganze natürlich noch weiter ausbauen. > Ja das ist schon richtig, gesendete/empfangene Portnummer 999 > Noch kurz zu den Ports, 16 stehen zur Verfügung. Es sollen 10 Ports der CC's benutzt werden die im bereich von 1-999 zugeordnet werden können. Das habe ich nicht verstanden. Wenn Du meinst, dass insgesamt 999 Digitalport an 999/16 = (fast) 63 C-Controls angesteuert werden können würde ich das anders machen. In jedem Fall musst Du aber zwei Bytes für so große Adressen reservieren. Datenrahmen: [Controller No] [Befehl] [Port/Adresse] [Datenbyte] (alles 1 Byte groß) > Als zu sendendende Daten auf der seriellen Schnittstelle habe ich folgendes im Kopf. > Eine Zusammensetzung einer Art Verschlüsselung, denn später soll das ganze per Funk laufen. > Aber nur in eine Richtung! > Folgendes wird übertragen: 1234&1% das heißt im Klartext 1234 ist der Schlüssel & ist ein > Trennzeichen zum erkenne des Endes des Schlüssels. 1 ist die Gesendete Portnummer. % ist > das Ende der Übertragung. Erst wenn das % angekommen ist wird der entsprechende Port > für ca. 0,2 sec. ein/aus geschaltet. Das macht die Sache unglaublich kompliziert. Man kann es sicher machen. Was soll 1234 sein? 16 Bit oder sind das 4 Byte? Eine 16 Bit Verschlüsselung könnte man so übertragen: Datenrahmen: [Schlüssel HighByte] [Schlüssel LowByte] [Controller No] [Befehl] [Port/Adresse] [Datenbyte] (alles 1 Byte groß) Optional wäre noch eine Prüfsumme. Z.B. könnte man die Anzahl der gesetzten Bits senden und diese beim Empfang testen. Stimmt die empfange Anzahl gesetzter Bits nicht mit der Prüfsumme überein ist der Befehl ungültig: Datenrahmen: [Schlüssel HighByte] [Schlüssel LowByte] [Controller No] [Befehl] [Port/Adresse] [Datenbyte] [Prüfsumme] (alles 1 Byte groß) Insgesamt wären es also 7 Bytes, die zu reservieren sind. Gruß, Stefan Meine Homepage: http://www.fdos.de/ccbpp |
| Antwort schreiben |