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 alle zusammen, > > ich teste gerade meine 1x12 Tastatur. Ich gebe 6 Einzelziffern ein, die dann in eine Zahl zwischen > 0 und 999999 adaptiert werden soll. Klappt alles wunderbar, die 6 Ziffern werden in einem Byte-Array > korrekt gespeichert, aber sobald ich die Variable v durch Multiplikation und Addition der Array-Elemente > berechne, verrechnet sich meine CC2, sobald ich an der 2. Stelle (also Array-Element i[1]) eine Zahl > größer 3 (???) eingebe. > Also wenn ich z.B. 999999 eingebe, kommt 934463 als Ergebnis, bei 939999 stimmt es. > Gebe ich z.B. 040000 ein, kommt als Ergebnis -25536... bei 949999 sind es 884463. > > Irgendwie stehe ich mit einem Brett vor dem Kopf auf einem großen Schlauch! > Mich macht es stutzig, dass das nur bei der 2. Stelle passiert. v ist ja long und sollte doch > eingentlich mit 999999 kein Problem haben? > > Ich habe meinen Code angehängt, evtl. fällt jemandem etwas auf... > > Vielen Dank im Voraus. > > Gruß Pet > > <code> > thread main > { > run 80; > lcdext.init(); > rbkeyb.init(0,0); > lcdext.clear(); > > //--------------------------------- > //Lokale Variablen > //--------------------------------- > long v; > byte in,pos,i[6],keycode; > string u; > > //--------------------------------- > //Wertzuweisungen > //--------------------------------- > v = 0; > in = 0; > pos = 0; > i[0] = 0; > i[1] = 1; > i[2] = 0; > i[3] = 0; > i[4] = 0; > i[5] = 0; > > //--------------------------------------- > //6-stellige Zahl eingeben, default 10000 > //--------------------------------------- > lcdext.goto(2,0); > lcdext.print("010000"); > lcdext.goto(2,0); > while rbkeyb.get() != 0x23 > { > lcdext.goto(2,pos); > lcdext.setcursor(3); > in = rbkeyb.get(); > if in == 0x2A > { > lcdext.goto(2,pos); > pos = pos - 1; //Cursor eins nach links > lcdext.goto(2,pos); > if pos > 5 pos = 0; // Cursorposition auf 0 bis 5 begrenzen > if pos < 0 pos = 0; > } > else > { > if in > { > if in==0x31 {keycode=1;} > if in==0x32 {keycode=2;} > if in==0x33 {keycode=3;} > if in==0x34 {keycode=4;} > if in==0x35 {keycode=5;} > if in==0x36 {keycode=6;} > if in==0x37 {keycode=7;} > if in==0x38 {keycode=8;} > if in==0x39 {keycode=9;} > if in==0x30 {keycode=0;} > i[pos] = keycode; > lcdext.put(in); > pos = pos + 1; > if pos > 5 pos = 5; > if pos < 0 pos = 0; > } > } > sleep 100; > } > > v = i[0]*100000 + i[1]*10000 + i[2]*1000 + i[3]*100 + i[4]*10 + i[5]; > sleep 500; > lcdext.clear(); > lcdext.setcursor(0); > > //---------------------------------- > //Ausgabe auf externem LCD > //---------------------------------- > loop > { > u = ""; > str.putlong(u,v); > lcdext.goto(1,0); > lcdext.print(u); > } > } > > </code>