Re: if..else Kategorie: Programmierung (von Jacke - 19.01.2005 16:45) | ||
Als Antwort auf if..else von Jacke - 18.01.2005 11:48 | ||
| ||
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) |