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