To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.robotics.rcx.legosOpen lugnet.robotics.rcx.legos in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 Robotics / RCX / legOS / 185
184  |  186
Subject: 
case statement doesn't work- any clue?
Newsgroups: 
lugnet.robotics.rcx.legos
Date: 
Mon, 3 May 1999 15:13:11 GMT
Viewed: 
1228 times
  
I'm trying to program some very rudimentary debugging stuff- just
outputting variables to the screen. Basically, I want to use a switch/case
statement to read an integer variable (in this case ID_number)
which is then linked (by the case statement) to universal variables
elsewhere in the code. Each case should output it's ID#, and then the
value of the variable which has been ID'd. Then it should wait for the
next button push to output the next variable.

The problem is that the case statement appears to fail completely.
Instead of outputting one value and then incrementing ID_number and
waiting, it outputs all the values, and *then* waits for the button push ,
as if they were a continuous list and not a case statement. Is this just
poor coding on my part? Is this one of these hidden C/C++ differences? Or
is this another LegOS limitation? (I'm leaning towards the last, but have
not had a change yet to test this more generally.)

The applicable code is below. If you'd like to grab the .srec, it's at
http://arthurdent.dorm.duke.edu/legos/code/light-brait-w-debug.srec

Thanks ahead of time!
-Luis
P.S. I tried incrementing both inside the case statement (as the attached
code shows) and after the case statement. Neither one worked.

int variable_output()
{
  int ID_number=0; //for the switch statement

  while(1)
    {
      wait_event(&button_press_wakeup,BUTTON_PROGRAM); // wait for PROG

      switch(ID_number)
{
case 0:
  //this should only run the first time the debugger is activated
  {
    cputs("debug");    //indicate start
    lcd_refresh();
    ID_number=1;  //increment the counter to the next variable
  }
case 1:
  //light sensor #1
  {
    cputs("light");  //outputs "light" then "1" to ID the variable
    lcd_refresh();
    msleep(300);
    new_lcd_int(1,PRINT_TIME);

    new_lcd_int(LIGHT_1,PRINT_TIME); //this time is irrelevant
and should be removed once I confirm the code works
    ID_number+=1;  //increment the counter to the next variable
  }
case 2:
  //light sensor #2
  //since this is the last case, the counter is returned to 1
instead of being incremented
  {
    cputs("light");  //outputs "light" then "1" to ID the variable
    lcd_refresh();
    msleep(300);
    new_lcd_int(2,PRINT_TIME);

    new_lcd_int(LIGHT_2,PRINT_TIME);
    //PRINT_TIME is irrelevant here-
    //the code will wait for the button press no matter what.

    ID_number=1;  //resets the counter to begin the loop again
  }

  cputs("test");
  lcd_refresh();

   wait_event(&button_release_wakeup,BUTTON_PROGRAM); // wait for PROG
button to be released

  //maybe code in an exit case?

}
    }
}
#######################################################################

God was my co-pilot,
  but we crashed in the mountains
       and I had to eat him.
-bumper sticker

#######################################################################



Message has 2 Replies:
  Read me first! Re: case statement doesn't work- any clue?
 
Nevermind. Dangit. Forgot break statements like a moron. -Luis (...) ###...### God was my co-pilot, but we crashed in the mountains and I had to eat him. -bumper sticker ###...### (25 years ago, 3-May-99, to lugnet.robotics.rcx.legos)
  Re: case statement doesn't work- any clue?
 
(...) Doh! You haven't put any breaks between the cases. BTW, if LegOS can change the semantics of C its cleverer than I thought ... :-) Cheers, Ben. -- (URL) grandfather once told me that there are two kinds of people: those who work and those who (...) (25 years ago, 3-May-99, to lugnet.robotics.rcx.legos)

3 Messages in This Thread:


Entire Thread on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact
    

Custom Search

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR