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

Re: if..else Kategorie: Programmierung (von Jacke - 19.01.2005 18:11)
Als Antwort auf Re: if..else von Hans - 19.01.2005 17:52
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT V3.0
Danke Hans,

aber leider wars das nicht.






> Hallo,
> nach meiner Meinung stimmt die Klammersetzung nicht.
> > >     if ports.get(8) >= 0
> > >        {sleep zeit*1000;}       geschweifte Klammer fehlt
>
> GruÃ? Hans
>
>
>
> > Ist mein Problem so einfach oder so dumm, dass keiner antwortet?
> > bitte ein Tip!
> >
> >

> >
> > > Hallo,
> > >
> > > ich hab schon wieder eine Herausforderung.
> > > 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.
> > >
> > >
> > > /* Projekt Ansteuerung Frequenzumrichter */
> > > /* Beginn 13.01.2005     */
> > > /* Autor: S. Golebniak       */
> > >
> > > /* HW-Voraussetzung:
> > > /* Ein Frequenzumrichter
> > > /* über PLM0 soll alle 20 ms ein Impuls gehen.
> > > /* Die Länge des Impusl ist von 1.1ms linker bis 2.1ms rechter anschlag */

> > >
> > >
> > >
> > > //------------------------------------------
> > > function beep(int ton, int laenge,int pause)
> > > //------------------------------------------
> > > {
> > >   plm.beep(ton);
> > >   sleep laenge;
> > >   plm.beep(plm.TONE_OFF); // Signal abgeschaltet, Analogport wird nebutzt
> > >   sleep pause;
> > > }
> > >
> > > function SetFu(int Kanal,float Value)
> > > {
> > >    // 0=1.1ms = 1375 Impulse * 800 ns  Praxis 700 * 800 = 0.56ms
> > >    // 50=1.6ms = 2000 Impulse * 800 ns
> > >    // 100=2.1ms = 2625 Impulse * 800 ns Praxis 2800 *800ns = 2.24ms
> > >    int outvalue;
> > >    string s1;
> > >
> > > // was auf den ausgang geht
> > >
> > >    outvalue=700+(21*Value);
> > >    plm.out(1,outvalue);
> > >    lcdext.goto(2,0);
> > >    s1 = "fa=";
> > >    str.putfloatf(s1,Value,2);
> > >    lcdext.print(s1) ;
> > > }
> > > //---------
> > > thread main
> > > //---------
> > > {
> > >   float x;
> > >   string s1;
> > >   float  voltage;
> > >   string output;
> > >   float  zeit;
> > >   string time;
> > >   int start;
> > >   string anfang;
> > >  
> > >
> > >   // Initial LCD
> > >   lcdext.init();
> > >   wait lcd.ready();
> > >   lcdext.clear();
> > >   lcdext.home();
> > >   lcdext.goto(1,0);
> > >  
> > >   // initial PLM
> > >   plm.settimebase(0,1); //Base_800 ns
> > >   plm.setmode(0,0); //Mode=digital
> > >   plm.setperiod(0,2500); //Periodenlänge=Base_800 ns * 25000 = 20 ms oder 50 Hz
> > >   SetFu(0,0); //Servomitte
> > >   //ports.set(8,0);
> > >
> > >   loop
> > >   {
> > >
> > >       // Einlesen der Eingänge
> > >       //Spannung
> > >    
> > >     voltage = ports.adc(1) * 0.004;  // 4 mV per ADC Digit An Eingang A1
> > >     output = "Ve=";
> > >     str.putfloatf (output, voltage, 2);
> > >     lcdext.goto(1,0);
> > >     lcdext.print(output);
> > >    
> > >       // Zeit
> > >     zeit = ports.adc(0);  // Zeit entspricht Spannung am Eingang A0
> > >     time = "t=";
> > >     str.putfloatf (time, zeit, 2);
> > >     lcdext.goto(1,8);
> > >     lcdext.print(time);
> > >    
> > >    
> > >    
> > >     // Einlesen der digitalen Eingänge
> > >       //Start
> > >    
> > >     start = ports.get(8);   // High-Pegel auf E0
> > >     anfang = "p=";
> > >     str.putfloatf (anfang, start, 2);
> > >     lcdext.goto(2,8);
> > >     lcdext.print(anfang);
> > >
> > >    
> > >     //Ausgabe auf Ausgang
> > >     SetFu(0,voltage);
> > >
> > >     if ports.get(8) >= 0
> > >        sleep zeit*1000;
> > >     else
> > >     {
> > >  
> > > // CALLING
> > >   melody.good_bad_ugly();
> > >   melody.pink_panther();
> > >
> > > }
> > >
> > >   }
> > > }
> > >
> > > //ENDE
> > >
> > >

> > >
> > > ich hatte es auch in der fprm versucht einen anderen thread aufzurufen geht aber nicht.
> > >
> > > 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.
> > >
> > > 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.
> > >
> > > Danke schonmal!
> > >
> > >


    Antwort schreiben


Antworten: