Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Text scrollen Kategorie: Programmierung (von Markus - 2.01.2009 14:11)
Als Antwort auf Re: Text scrollen von André H. - 1.01.2009 20:14
Ich nutze:
C-Control II Station, OSOPT V3.1
> Hallo Markus
>
> > könnt Ihr mir helfen? Ich möchte im Station Display, dass die este Zeile fix stehen bleibt und die zweite
> > Zeile nach links "Durchgescrollt" wird!
> > Ich hab hierzu schon mit dem Beispielprog (step_6 aus dem CC2_SP2-14) von André rumgespielt,
> > komme aber zu keinem erfolgreichem Ziel...
>
> Das Beispiel scrollt das gesamte Display.
> (Ich sehe gerade, daÃ? im Beispiel lcdext.WriteCMD, statt lcdext.WriteCmd steht.)
>
> Einzelne Zeilen kann ein Standard-LCD leider nicht selbst scrollen.
> Um das zu bewerksteligen, muÃ?t Du die Zeile zwischenspeichern und selbst
> vor der Ausgabe scrollen.
> Ein Ansatz könnte folgender sein:
>
> inline function printlengthpos(int addr, byte len)
> {
>  inline vmcodes.VM_INLINE_SYSCALL+lcdext.Segment;
>  inline lcdext._SEND;
> }
>
> function printScrollText(byte text[], byte line, byte pos)
> {int stringaddr; byte len;
>  lcdext.delline(line);
>  lcdext.line(line);
>  if pos<0
>   {
>    len=math.max(text[31]+pos,0);
>    if len
>     {
>      stringaddr=mem.getMemAddrByte(text)-pos;
>      printlengthpos(stringaddr,len);
>     }
>   }
>  else
>   {
>    if pos
>     {
>      lcdext.fill(' ', pos);
>      len=math.min(text[31],lcdext.CharsperLine-pos);
>      lcdext.printlength(text,math.max(len,0));
>     }
>     else
>      lcdext.printlength(text,text[31]);
>   }
> }
>
> //-----------
>   thread main
> //-----------
> {
>  string s;
>  int i;
> // stports.init();
>  lcdext.init();
>  lcdext.print("Fester Text");
>
>  s="scrollender Text";
>  loop
>  {
>   for i = -15 ... lcdext.CharsperLine //links nach rechts
> //  for i = lcdext.CharsperLine ...>= -15 step-1  //rechts nach links
>   {
>    printScrollText(s,2,i);
>    sleep 250; //langsam
> //   sleep 125; //schnell
> //   if i==0 sleep 500; //kurz warten
>
>   }
>  }
> }
>

> Die Funktion printScrollText() ist relativ universell gehalten.
> Die -15 bei der For-Schlreife ergibt sich aus der negierten Stringlänge +1
> Spiele einfach etwas mit den Parametern. :-)
>
> MfG André H.

Hallo,

vielen Dank Andrè!
Werd heute Abend gleich mal damit rumspielen ;-)

GruÃ?,
Markus






    Antwort schreiben


Antworten: