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

Re: if..else Kategorie: Programmierung (von André H. - 21.01.2005 17:51)
Als Antwort auf Re: if..else von Jacke - 19.01.2005 16:45

Hallo Jacke,

> Ist mein Problem so einfach oder so dumm, dass keiner antwortet?
> bitte ein Tip!

Du brauchst nicht glauben, daÃ? man immer innerhalb von 24h eine Antwort bekommt.
Das könnte man Verlangen, wenn mein Forum ein kostenpflichtiger Dienst wäre.
Jedoch helfen die Leute hier alle in Ihrer Freizeit aus freien Stücken.

Darum sind solche "schnellen" Erinnerungspostings extrem unhöflich.

Nun aber zu Deinem Problem:

> > Mein Programm funzt soweit, dass es den Eingang auslieÃ?t, jedoch stoppt es nicht
> > den Programmablauf, sondern spilet sofort die Melodien  - ich kann sie nicht mehr hören.

Dann entferne die Melodien und ersetze diese durch einen einfach Piep.

Aber nun Schrittweise zu Deinem Programm:

> >
> >   // Initial LCD
> >   lcdext.init();
> >   wait lcd.ready();
> >   lcdext.clear();
> >   lcdext.home();
> >   lcdext.goto(1,0);


Was ist das ????
Warum prüfts Du hier auf lcd.ready() ??
Das Modul lcd.c2 betrifft nur die vergossenen Units mit Mini-LCD,
die es noch bis Frühjahr 2004 gab.
Und Deine Initialisierung des externen LCDs ist auch etwas "umständlich"
Ein Aufruf von lcdext.init() reicht hier völlig.
Denn bei einem Init des externen Displays wird:
- dieses gelöscht
- der Cursor auf die Anfangspositin gesetzt (Zeile 1, Position 0)


> >     if ports.get(8) >= 0
> >        sleep zeit*1000;
> >     else
> >     {
> >  
> > // CALLING
> >   melody.good_bad_ugly();
> >   melody.pink_panther();
> >
> > }


Was ist das für ein Vergleich ?
Warum prüft Du hier auf grö�er-gleich 0 ?
die Funktion ports.get() gibt entweder 0 (False) oder -1 (minus 1) (True) zurück.
Wenn also Port P1H.0 einen Highpegel hat, werden die Melodien abgespielt
Aber schöner würd es so aussehen:

 if ports.get(8)
  {// bei High-Pegel
   melody.good_bad_ugly();
   melody.pink_panther();
  }
  else // bei Low-Pegel
   sleep x;


Ach ja, und noch ein Hinweis zu sleep:
Es sind nur Werte von 0 bis 65535 zulässig. (-32768 bis -1 werden als 32768 bis 65535 interpretiert)
Sobald Deine Variable "zeit" einen Wert grö�er 65 hat, stimmt die Wartezeit nichtmehr.

> > Wird der thread in einem neuen Modul definiert oder im selben?
> >
> >  if ports.get(8) >= 0
> >        sleep zeit*1000;
> >     else
> > run = beepen
> >
> > da gibt es bei beepen immer eine Fehlermeldung, ebal ob der thread beepen im selben Modul
> >  oder in einen eigenen untergebracht ist.

Das ist ein typischer Syntax error, der nur auftauchen kann, wenn man das Handbuch
vorher nicht liest.
Der Syntax zum starten von Threads lautet:
 run <Threadname>;
Befindet sich der Thread in einem anderem Modul:
 run <Modulname>.<Threadname>;

> > Wenn ich also Port 8 mittels Sapnnung  auf 0 setze bekomme ich sofort diese furchtbare Melodie.
> > Gedacht ist das ganze um über Port 8 das Programm zu stoppen, über Port 9 Pause - das aber erst
> >  wenn ichs kann.

Bist Du sicher, da� Du den richtigen Port gewählt hast ??
Port 8 ist P1H.0 .


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: