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

Re: Sprungmarke in C2 Kategorie: Programmierung (von André H. - 29.09.2004 9:48)
Als Antwort auf Re: Sprungmarke in C2 von ACU - 27.09.2004 19:21
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0
Hallo ACU,

Sieht schonmal gut aus. :-)
Aber noch ein paar Anmerkungen zur Optimierung:
- Wenn Du das Dsiplay mit lcdext.clear() löscht, brauchst Du nacher kein
  lcdext.home() oder ähnliches ausführen, um den Cursor an die erste Stelle
  zu positionieren. Das Display macht dies beim Löschen automatisch.
- Wenn Du Deinen beiden Strings immer explizit einen Text zuweist, brauchst
  Du diese nach der Ausgabe nicht explizit löschen.
  Die Strings werden einfach mit der nächsten Meldung überschrieben.
- Capturing:
  Du greifst auf Variablen aus zwei unterschiedlichen Threads schreibend zu.
  Das kann irgendwann einmal zu Problemen führen, wenn dies nicht gecaptured wird.
  Capture die Variablen nach diesem Schema:
capture flag;// definierte globale Byte-Variable
 Displaymeldung = <Wert>;
release;


Dasselbe gilt natürlich auch für die Variable InfoanDisplay.

Und noch eine Bitte:
Verwende beim posten von Quellcode bitte die code-Tags, damit dieser korrekt dargestellt wird.
Denn gerade grö�er- und kleiner-Zeichen werden sonst meistens als HTML-Tag
interpretiert, sodaÃ? Teile des Quellcodes oft nicht sichbar sind.
AuÃ?erdem sieht es mit den Code-Tags besser aus. ;-)
Ich habe Deinen Quellcode einmal Nachträglich mt code-Tags versehen.

MfG André H.


> So der Code ist fertig und funktioniert!
> Hier der Code:
>
>  while Entfernunglinks<=12 or Entfernungrechts<=12 //gucken, ob entfernung ok ist!
>  {
>   Start=0;
>   Displaymeldung = 1;
>   Displaystring1="Zu wenig Platz!";
>   Displaystring2="OK=1";
>   InfoanDisplay=1;
>   wait Start;
>  }
>
> Und der passende Code aus dem Interface Thread:
>    if Displaymeldung==1
>   {
>    lcdext.clear();
>    lcdext.home();
>    lcdext.print(Displaystring1);
>    lcdext.line(2);
>    lcdext.print(Displaystring2);
>    Displaymeldung =0;
>    str.clear(Displaystring1);
>    str.clear(Displaystring2);
>   }
>   if InfoanDisplay==1
>   {
>   wait ports.adc(7) > 277 & ports.adc(7) <351;
>   Start=1;
>   InfoanDisplay=0;
>   }

>
>
>
> Funkioniert Super!
> Danke nochmal für die Hilfe!
>
> MfG ACU


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

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: