Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Kommunikation 2er units Kategorie: Programmierung CC-Plus (von Grübel Denk - 7.11.2010 22:58)
 Als Antwort auf Kommunikation 2er units von Alex - 4.11.2010 16:33
Grübel Denk nutzt:  CC1-Unit V1.1
Meine Vermutung:


Wenn Master die function 'senden()' ohne Verzoegerung mit voller Geschwindikeit der main - Schleife immer wieder aufruft wird der 8 Bytes grosse RS232 Empfangspuffer des Slave schneller gefuellt als das Empfangsprogramm dort die Daten auslesen und verarbeiten kann.

Solange kein Platz im Empfanmgspuffer (wieder) freigeworden ist, gehen empfangene Zeichen verloren, Master und Slave sind nicht mehr snyhron und die Anzeige flakcert.


Versuch mal:

> function senden()
> put sync
> put grün
> put weis
> put musik
  PAUSE xyz '
> end function

Wert fuer 'xyz' must ausprobieren z.B. erst 100 oder 50, dann 75 oder 25, dann 62 oder 12, usw.

Der Trick mit dem Sync-Byte ist dann nicht noetig, wodurch der Slave auch etwas schneller wird.

Statt

>if rxd = true then
>          get x
> end if

kannst direkt schreiben

 IF rxd THEN GET x


Bei Erfolg würd mich mal deine Projektbeschreibung interessieren, vielleicht mit Hardwarebeschreibung zum Nachbauen
?
Klingt jedenfalls interessant....

> Hallo Ihr Helfer!
> Vielleicht könnt Ihr auch mir helfen.
>
> Ich habe 2 Controlls miteinander verbunden (TXD an RXD der anderen). Es soll ein Master-Slave-System sein. Es geht eigentlich um die Übertragung von 3 Werten von Master nach Slave, jeweils Bytes. 2 Bytes beschreiben die Helligkeit von (grünen und weißen) LEDs, die der Slave über DA1 & DA2 ansteuern soll. Der 3te Werte wird benötigt um eine Musiksteuerung zu realisieren (es werden die Werte 2,3,4,5) übermittelt).
>
> Nun mein Problem: Die Werte kommen durcheinander. Das bedeutet, das die grüne Helligkeit schon mal die(zB) "3" der Musiksteuerung erhält und dann grün von 255 kurz auf 3 runtergeht und man das natürlich als Flackern des Lichts wahrnimmt.
> Ich habe schon probiert mit einem Syncronisationsbyte zu arbeiten. D.H. das erst ein Byte gesendet wird, ddamit der Slave weiß: "ah jetzt kommen drei Werte hintereinander und zwar grün,weis,musik!"
> Danach war es schon besser, aber es flackert manchmal immer noch!
>
> Wie bekomme ich es nun hin, dass wirklich immer der Slave weiß, "Das ist der Wert für grün, das der für weiß, das der für Musik!!!!!???????????
>
> Hier die Programmausschnitte:
>
> Hauptprogramm mit "sendefunction"
>
> function senden()
> put sync
> put grün
> put weis
> put musik
> end function
>
> (diese function wird immerwider in der "main" aufgerufen um die aktuellen Werte zu senden)
>
> Hier das Programm des Slave:
>
> '------Schnittstellenabfrage--------------------
> if rxd = true then
>          get x
> end if
> if x = 123 then   '123 ist das Syncbyte
>    goto Sprung
> else
>         goto main
> end if
>
>
> #Sprung
> if rxd = true then
>          get zeitgrün
> end if
> if rxd = true then
>          get zeitweis
> end if
> if rxd = true then                
>          get musik
> end if
>
>
> Kann mir jemand helfen????
>
> Gruß ALEX

 Antwort schreiben

Bisherige Antworten:

Re: Kommunikation 2er units (von Alex - 9.11.2010 0:30)
    Re: Kommunikation 2er units (von Grübel Denk - 9.11.2010 15:27)
        Re: Kommunikation 2er units (von Grübel Denk - 11.11.2010 17:17)
            Re: Kommunikation 2er units (von Alex - 16.11.2010 4:28)
                Re: Kommunikation 2er units (von Grübel Denk - 4.12.2010 12:28)