PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CControl als Schnittstelle ?



nux
06.06.2004, 13:10
Hallo,

ich würde gerne meinen PC, bzw Roboter um einige Schnittstellen erweitern. Ist es möglich, die CControl so zu programmieren, dass
sie über die serielle Schnittstelle die Daten vom PC empfängt und
entsprechend verarbeitet und automatisch immer die Daten an den
PC zurückschickt.

Das ganz soll dann verschlüsselt/zusammengefügt geschehen.

ungefähr so:

Es werden in der CControl 8 Digitale Ausgänge und 8 Digitale Eingänge definiert.

ganz einfach konnte man das ja hintereinander schreiben, sprich so:

v1 = 255 '# das sind die 8 digitalen ausgänge (Ausgang 1 entspricht 2^0, Ausgang 2 entspricht 2^1, ...)
v2 = 255 '# Analoger Ausgang 1
v3 = 255 '# Analoger Ausgang 2
v4 = v1 xor v2 xor v3

dann sendet man einfach:

chr(v1) + chr(v2) + chr(v3) + chr(v4)

Die CControl entschlüsselt das und sendet so was ähnliches für die Eingänge zurück. evtl so:

v1 = 255 '# das sind die 8 digitalen Eingänge (Eingang 1 entspricht 2^0, Eingang 2 entspricht 2^1, ...)
v2 = 255 '# Analoger Eingang 1
vn = 255 '# Analoger Eingang n ....
v9 = 255 '# Analoger Eingang 8
v10 = v1 xor v2 xor ....

dann sendet man einfach wieder:

chr(v1) + chr(v2) + .......... + chr(v10)



Wenn man dann was empfängt (egal PC oder CC) wird der XOR-Wert mit dem Rest überprüft. Stimmt das Ergebniss, sind keine Fehler unterlaufen, wenn es Fehlerhaft ist, wird es einfach ignoiert.

Meint ihr das klappt?
Oder gibts da bessere, elegantere Lösungen?

Vielen Dank für eure Hilfe.

nux.

Matthias
06.06.2004, 15:26
Das müsste gehen. Ne elegantere Lösung fällt mir auf die Schnelle nicht ein, weil diese hier ja schon zimlich kurz und sicher ist.

nux
06.06.2004, 20:09
kann die CControl überhaupt XOR? kennt die den befehl?
Würde so ein Programm möglich sein, ich kann ja nicht parallel arbeiten (Multitasking) sondern immer eine Sequenz abarbeiten.

Also noch mehr Meinungen bitte.

djdune
06.06.2004, 21:07
Xor kennt sie nicht, aber das kannst ja aus AND, NAND, NOR und OR machen.
einfach
a1|a0|y
0|0|0
0|1|1
1|0|1
1|1|0
=> y = !a^b v a^!b

Matthias
08.06.2004, 15:04
wenn das ^ "Hoch" bedeuten soll: Das kann die CC auch net...

Mann müsste dann schreiben:

a2=not a
gosub hochrechnen
y=a2
b=not b
gosub hochrechnen
y=y or a2

Edit: Hier muss nartürlich return hin.

#hochrechnen
for b=1 to 255
a2=a2*not a
next
Edit2: Und hier auch...

Das proggi hab ich grad schnell aus dem Ärmel geschüttelt, kann sein dass das net funtzt...

RCO
13.06.2004, 14:07
^ bedeutet "Und" wenn ich recht informiert bin.
v bedeutet "oder".

ODer beides genau umgekehrt, aber glaube, das war schon richtig

Matthias
13.06.2004, 14:08
^bedeutet Hoch, oder? Wenns AND ist, geht's doch einfach...

nux
13.06.2004, 14:10
^ = hoch
v = "oder"
umgedrehtes "v" = "und"

RCO
13.06.2004, 14:36
Dann versteh ich diese Aussge von djdune nicht:

y = !a^b v a^!b
Dachte:
y = negiert(a)und(b) oder (a) und negiert(b)

liegt warschinlich daran, dass man mit der Tastatur kein
^ und umgedrehtes v unterscheiden kann (gibt ja nur das ^) :-s