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

Re: Text scrollen Kategorie: Programmierung (von André H. - 1.01.2009 20:14)
Als Antwort auf Text scrollen von Markus - 26.12.2008 1:02
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, C-Control II Station, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, 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.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: Text scrollen (von Markus - 2.01.2009 14:11)