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