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 16:45)
Als Antwort auf if..else von Jacke - 18.01.2005 11:48
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT V3.0
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:

Re: if..else (von André H. - 21.01.2005 17:51)
Re: if..else (von Hans - 19.01.2005 17:52)
    Re: if..else (von Jacke - 19.01.2005 18:11)