Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > > Hallo Karl, > > > > überprüfe bitte zuerst Deine Tastatur. Die Shifttaste schein kaputt zu sein. > > > > > in der stkeyb.c2 gibt es eine function zur eingabe von int-zahlen. > > > wer hat eine zur eingabe von float-zahlen? > > > > Für was willst Du Float-Zahlen über die Tastatur eingeben? > > Reicht evtl. auch Festkomma? > > Und wie soll mit der Station-Tastatur das Komma eingegeben werden? > > Bei Festkomma kann man die Position vorbestimmen. > > (Hier kann man die vorhandene Funktion sehr leicht anpassen.) > > > > MfG André H. > > > > hallo andre, > danke für deine antwort. meine shifttaste funktioniert schon richtig, nur meine finger sind zu ungelenk. > > die dateneingabe bei der fertigen steuerung wird von x-beliebigen leuten vorgenommen. > daher halte ich es schon für angebracht, das die eingabe der werte mit wechselnder stellenzahl > vorgenommen werden kann. > mittlerweile bin ich nach einer suche im forum fündig geworden und habe eine function "getnumfloat", > geschrieben von "m8nix" gefunden. diese wandelt strings in floats um. > dazu passend habe ich eine function "stringzahl" geschrieben. > diese beiden functionen ermöglichen eine recht komfortable eingabe von floats. > hier wird das komma mit F1 gesetzt. > in der fertigen steuerung soll eine folientasttatur von cc-tools verwendet werden, leider warten wir > nun schon 5 wochen auf die teile(bestellung von peter tebyl). > im anhang findest du,ihr die functionen mit einem kleinen testprogramm. > testet und kritisiert. > > mfg karl > > //====================================================================================== > //--String in Floatzahl konvertieren--------------------------- > // von "m8 nix" vom 29.4.2007 > // > function getnumfloat (byte s[]) returns float > // Die zurückgegebene Zahl kann in > // float gespeichert werden > // > //float x; > //string a; > //a="178.64"; > //x=getnumfloat(a); > //-------------------------------------------------------- > {byte i;float x,y; > y=0.0; > x=0.1; > if s[31]==0 return 0; > if s[0]!='-' and s[0]!='.' and not(s[0]>=0x30 and s[0]<=0x39) return -2147483647; // keine Zahl > if s[0]!='-' and s[0]!='.' y=s[0]-0x30; > i=1; > while (s[i]!='.' and i!=s[31]) > { > if s[i]<0x30 or s[i]>0x39 return -2147483647; // keine Zahl > y=y*10.0 + (s[i]-0x30); > i=i+1; > } > if (s[i]=='.' and i<s[31]) i=i+1; > while i!=s[31] > { > if s[i]<0x30 or s[i]>0x39 return -2147483647; // keine Zahl > y=y+((s[i]-0x30)*x); > x=x/10.0; > i=i+1; > } > if s[0]=='-' y=y*(-1.0); > return y; > } > //============================================================================================== > //************************************************************************************ > //Function zur Eingabe einer Floatzahl mittels eines String´s und > //anschließender Konvertierung in eine echte Floatzahl mit der > //Function getnumfloat(string) > // t Stellenzahl für den String (max 10), Komma zählt als Stelle > // min mindest Zahlengröße > // max maximale Zahlengröße > // F1 für Komma > // F2 für Abbruch und Rückgabe von DEFAULT > // C clear und neue Eingabe > // ENTER Abschluß und Übergabe der Zahl > //von Karl 12.5.2008 > //************************************************************************************ > function stringzahl(float default,int t,int min,int max) returns float > { > int u,v,w,x,y,komma; > long timer; > float z; > string a[10]; > string b; > string stzahl[11]; > stzahl[0]="0"; > stzahl[1]="1"; > stzahl[2]="2"; > stzahl[3]="3"; > stzahl[4]="4"; > stzahl[5]="5"; > stzahl[6]="6"; > stzahl[7]="7"; > stzahl[8]="8"; > stzahl[9]="9"; > stzahl[10]="."; > for x=0...9 {a[x]="";} > lcdext.setcursor(3); > b="0"; > x=0;komma=0; > > loop > { > timer=system.timer(); > y=stkeyb.get(); > wait y!= stkeyb.get()or (system.timer()-timer) >= 5000; // Timeout > plm.beep(10) ;sleep 40;plm.beep(-1); // warten auf Taste > u=stkeyb.get(); > wait not stkeyb.get();sleep 100; // Taste losgelassen > > if u== 14 {break;} //RETURN Eingabe beendet > > if u== 11 or (system.timer()-timer) >= 5000 // Timeout > {lcdext.setcursor(0);;return default;} //F2 Abbruch DEFAULT zurück > if u== 13 {for v=0...9 {a[v]="";}; //C clear, neue Eingabe > for w=1...x {lcdext.cursorleft(); > lcdext.print(" ");lcdext.cursorleft();} > b="0";x=0; > } > if x==t {u=255;} //keine Ziffer > if u == 10 and komma == 10 {u=255;} > if u == 10 {komma = 10;} //verhindert zweites Komma > if u <= 10 and u>=0 > {a[x]=stzahl[u]; > lcdext.print(a[x]); > x=x+1; > } > } > for x=0...9 {b=b+a[x];} > z=getnumfloat(b); > lcdext.setcursor(0); > if z < min or z > max {return default;} // prüft Plausibilität > return z; > } > //************************************************************************************ > // schreibt eine float-Zahl, mit Nachkommastellen > // w Anzahl derNachkommastellen, hier maximal 3 Stellen > //************************************************************************************ > function printfloat(float x,int w) > { > int u,y; > float z; > y= x; > z= (x-y); > if w==1 {u=z*10;} > if w==2 {u=z*100;} > if w==3 {u=z*1000;} > lcdext.zahl3(y);lcdext.print("."); > if u<=9 {lcdext.ziff(u);} > if u>=10 and u<=99 {lcdext.zahl2(u);} > if u>=100 {lcdext.zahl3(u);} > } > //************************************************************************************** > > > > thread main > { > lcdext.init(); > stports.init(); // Initialisierung > relais.alleaus(); > > > float x; > > lcdext.print("Eingabe : "); > x=stringzahl(x,4,10,95); > > lcdext.line(2);lcdext.print("Ausgabe : "); > printfloat(x,2); > wait not ports.get(8); > } > //*********************************************************************************************************** > > >