Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Tastaturabfrage aus Array verrechnet sich... Kategorie: Programmierung (von Pet - 6.07.2007 17:10)
Ich nutze:
C164CI-ControllerBoard, CC2-StarterBoard, OSOPT V3.1
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


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);
  }
}



    Antwort schreiben


Antworten:

Re: Tastaturabfrage aus Array verrechnet sich... (von Schroeder - 7.07.2007 13:08)
    Re: Tastaturabfrage aus Array verrechnet sich... (von Pet - 9.07.2007 13:36)
Re: Tastaturabfrage aus Array verrechnet sich... (von Pet - 7.07.2007 10:37)