+++ /dev/null
-#platform "uOLED-32028-PMD3T"\r
-\r
-/* 4DGL Demo Application\r
- - Packed String Manipulation -\r
- -- PICASO Platform --\r
-*/\r
-\r
-\r
-#inherit "4DGL_16bitColours.fnc"\r
-\r
-#constant NEWLINE $print("\n") // a macro for carriage return\r
-\r
-#constant VOLTAGE_OK 1\r
-\r
-#constant MSG_START 150\r
-\r
-#constant MSG_VOLTAGE_STATUS 159\r
-#constant MSG_VOLTAGE 160\r
-#constant MSG_FSM_STATE 161\r
-#constant MSG_BALLS 162\r
-#constant MSG_HW_STATUS 163\r
-#constant MSG_COLOR 164\r
-#constant MSG_POSITION 165\r
-#constant MSG_MOVE_FSM_STATE 166\r
-#constant CHANGE_MODE_REP 200\r
-#constant CHANGE_MODE_REQ 201\r
-#constant CHANGE_MODE_STATUS 202\r
-#constant CHANGE_MODE_CONTROL 203\r
-\r
-#constant MSG_ACTUATORS 180\r
-#constant MSG_GET_READY 181\r
-#constant MSG_ROBOT_START 182\r
-#constant MSG_SWITCH_TO_STATUS 183\r
-#constant MSG_SWITCH_TO_CONTROL 184\r
-#constant MSG_SWITCH_TO_STATUS_DONE 185\r
-#constant MSG_SWITCH_TO_CONTROL_DONE 186\r
-#constant MSG_SET_COLOR 187\r
-#constant MSG_SET_MODE 188\r
-#constant MSG_CAR_LEFT 189\r
-#constant MSG_CAR_RIGHT 190\r
-\r
-#constant MSG_LBRUSH_SERVO 1\r
-#constant MSG_RBRUSH_SERVO 2\r
-#constant MSG_FDOOR_SERVO 3\r
-#constant MSG_BDOOR_SERVO 4\r
-\r
-#constant MSG_LBRUSH_DRIVE 5\r
-#constant MSG_RBRUSH_DRIVE 6\r
-#constant MSG_BAGR_DRIVE 7\r
-\r
-\r
-#constant MSG_TERM 254\r
-#constant MSG_TERM_LF 10\r
-\r
-#constant TEXTWIDTH 1\r
-#constant TEXTHEIGHT 1 \r
-#constant TXT_BT_1 $"CONS"\r
-#constant TXT_BT_STATUS $" STATUS "\r
-#constant TXT_BT_CONTROL $" CONTROL "\r
-#constant TXT_BT_3 $" MAP "\r
-#constant TXT_BT_4 $" MISC "\r
-\r
-#constant TXT_BT_LEFT_BRUSH_SERVO $" LEFT BRUSH "\r
-#constant TXT_BT_RIGHT_BRUSH_SERVO $" RIGHT BRUSH "\r
-\r
-#constant TXT_BT_BOTTOM_DOOR_SERVO $" BOTTOM DOOR"\r
-#constant TXT_BT_BACK_DOOR_SERVO $" BACK DOOR "\r
-\r
-#constant TXT_BT_GET_READY $" GET READY! "\r
-#constant TXT_BT_START $" START "\r
-#constant TXT_BT_COLOR $" COLOR "\r
-\r
-#constant TXT_BT_CAR_LEFT $" << "\r
-#constant TXT_BT_CAR_RIGHT $" >> "\r
-\r
-#constant TXT_BT_BAGR_DRIVE $" BAGR "\r
-\r
-#constant MSG_BUFF_LEN 40\r
-\r
-\r
-#constant BT_S_ROW1_Y 0\r
-#constant BT_S_ROW2_Y 1\r
-#constant BT_D_ROW1_Y 2\r
-#constant BT_D_ROW2_Y 3\r
-#constant BT_S_ROW2_END_Y 4\r
-#constant BT_D_ROW2_END_Y 5\r
-#constant BT_GET_READY_Y 6\r
-#constant BT_START_Y 7\r
-#constant BT_START_END_Y 8\r
-#constant BT_STATUS_Y 9\r
-#constant BT_STATUS_END_Y 10\r
-#constant BT_COLOR_Y 11\r
-#constant BT_COLOR_END_Y 12\r
-#constant BT_CAR_LEFT_Y 13\r
-#constant BT_CAR_LEFT_END_Y 14\r
-#constant BT_CAR_RIGHT_Y 15\r
-#constant BT_CAR_RIGHT_END_Y 16\r
-#constant BT_X_0 17\r
-\r
-#constant BT_S_RBRUSH_X 0\r
-#constant BT_S_BDOOR_X 1\r
-#constant BT_D_RBRUSH_X 2\r
-#constant BT_D_BAGR_X 3\r
-#constant BT_D_BAGR_END_X 4\r
-#constant BT_GET_READY_X 5\r
-#constant BT_GET_READY_END_X 6\r
-#constant BT_START_X 7\r
-#constant BT_START_END_X 8\r
-#constant BT_STATUS_X 9\r
-#constant BT_STATUS_END_X 10\r
-#constant BT_COLOR_X 11\r
-#constant BT_COLOR_END_X 12\r
-#constant BT_CAR_LEFT_X 13\r
-#constant BT_CAR_LEFT_END_X 14\r
-#constant BT_CAR_RIGHT_X 15\r
-#constant BT_CAR_RIGHT_END_X 16\r
-\r
-#constant VOLTAGE33 0\r
-#constant VOLTAGE50 1\r
-#constant VOLTAGE80 2\r
-#constant VOLTAGE_BAT 3\r
-\r
-#constant COLOR_RED 1\r
-#constant COLOR_BLUE 0\r
-\r
-#constant CAR_LEFT 1\r
-#constant CAR_RIGHT 2\r
-\r
-#constant NO_BALL 0\r
-#constant BLUE_BALL 1\r
-#constant RED_BALL 2\r
-#constant WHITE_BALL 3\r
-\r
-#constant HW_STATUS_OK 1\r
-\r
-#constant HW1 1\r
-#constant HW2 2\r
-#constant HW3 3\r
-#constant HW4 4\r
-#constant HW5 5\r
-#constant HW6 6\r
-\r
-var msg_buff[MSG_BUFF_LEN];\r
-var bt_x[20];\r
-var bt_y[20];\r
-var msg_len;\r
-\r
-var voltage33[4];\r
-var voltage50[4];\r
-var voltage80[4];\r
-var voltageBAT[5];\r
-\r
-var voltage_status[4];\r
- \r
-var position[8];\r
-var game_color;\r
-var fsm_state[21];\r
-var move_fsm_state[21];\r
-var fsm_state_len;\r
-var move_fsm_state_len;\r
-\r
-var balls_state[5];\r
-var ball_up;\r
-var ball_down;\r
-\r
-var current_color;\r
-\r
-var isStatus;\r
-var isControl;\r
-\r
-var out_msg_buff[10];\r
-\r
-func clear_screen()\r
- gfx_Rectangle(0, 0, 239, 319, BLACK); \r
- return 0;\r
-endfunc\r
-\r
-func bt_lbrush_servo(var state, var color)\r
- gfx_Button(state, bt_x[BT_X_0], bt_y[BT_S_ROW1_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_LEFT_BRUSH_SERVO);\r
-endfunc\r
-\r
-func bt_rbrush_servo(var state, var color)\r
- gfx_Button(state, bt_x[BT_S_RBRUSH_X], bt_y[BT_S_ROW1_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_RIGHT_BRUSH_SERVO);\r
-endfunc\r
-\r
-func bt_fdoor_servo(var state, var color)\r
- gfx_Button(state, bt_x[BT_X_0], bt_y[BT_S_ROW2_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_BOTTOM_DOOR_SERVO);\r
-endfunc\r
-\r
-func bt_bdoor_servo(var state, var color)\r
- gfx_Button(state, bt_x[BT_S_BDOOR_X], bt_y[BT_S_ROW2_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_BACK_DOOR_SERVO);\r
-endfunc\r
-\r
-func bt_lbrush_drive(var state, var color)\r
- gfx_Button(state, bt_x[BT_X_0], bt_y[BT_D_ROW1_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_LEFT_BRUSH_SERVO);\r
-endfunc\r
-\r
-func bt_rbrush_drive(var state, var color)\r
- gfx_Button(state, bt_x[BT_D_RBRUSH_X], bt_y[BT_D_ROW1_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_RIGHT_BRUSH_SERVO);\r
-endfunc\r
-\r
-func bt_bagr_drive(var state, var color)\r
- gfx_Button(state, bt_x[BT_D_BAGR_X], bt_y[BT_D_ROW2_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_BAGR_DRIVE);\r
-endfunc\r
-\r
-func bt_carousel_left(var state, var color)\r
- gfx_Button(state, bt_x[BT_CAR_LEFT_X], bt_y[BT_CAR_LEFT_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_CAR_LEFT);\r
-endfunc\r
-\r
-func bt_carousel_right(var state, var color)\r
- gfx_Button(state, bt_x[BT_CAR_RIGHT_X], bt_y[BT_CAR_RIGHT_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, TXT_BT_CAR_RIGHT);\r
-endfunc\r
-\r
-func bt_get_ready(var state, var color)\r
- gfx_Button(state, bt_x[BT_GET_READY_X], bt_y[BT_GET_READY_Y], color, WHITE, FONT4, TEXTWIDTH, TEXTHEIGHT, TXT_BT_GET_READY);\r
-endfunc\r
-\r
-func bt_start(var state, var color)\r
- gfx_Button(state, bt_x[BT_START_X], bt_y[BT_START_Y], color, WHITE, FONT4, TEXTWIDTH, TEXTHEIGHT, TXT_BT_START);\r
-endfunc\r
-\r
-func bt_status(var state, var color, var text)\r
- gfx_Button(state, bt_x[BT_STATUS_X], bt_y[BT_STATUS_Y], color, WHITE, FONT3, TEXTWIDTH, TEXTHEIGHT, text);\r
-endfunc\r
-\r
-func bt_color(var state, var color)\r
- gfx_Button(state, bt_x[BT_COLOR_X], bt_y[BT_COLOR_Y], color, WHITE, FONT4, TEXTWIDTH, TEXTHEIGHT, TXT_BT_COLOR);\r
-endfunc\r
-\r
-//----------------------------------------------------------------------------------------------------\r
-func draw_voltage33()\r
- var col_rect;\r
-\r
- if(voltage_status[VOLTAGE33]==VOLTAGE_OK)\r
- col_rect := RED;\r
- else\r
- col_rect := GREEN;\r
- endif\r
-\r
- gfx_Rectangle(0,10,60,50,col_rect);\r
- gfx_Line(59, 10, 59, 50, BLACK);\r
- txt_Set(TEXT_COLOUR, WHITE);\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_MoveCursor(1,1);\r
- putstr("3,30V");\r
- txt_Set(FONT_SIZE, FONT4);\r
- txt_MoveCursor(2,0);\r
- print([CHR] voltage33[0]);\r
- print([CHR] voltage33[1]);\r
- print([CHR] voltage33[2]);\r
- print([CHR] voltage33[3]);\r
- return 0;\r
-endfunc\r
-\r
-func draw_voltage50()\r
- var col_rect;\r
-\r
- if(voltage_status[VOLTAGE50]==VOLTAGE_OK)\r
- col_rect := RED;\r
- else\r
- col_rect := GREEN;\r
- endif\r
-\r
- gfx_Rectangle(60,10,120,50,col_rect);\r
- gfx_Line(119, 10, 119, 50, BLACK);\r
- txt_Set(TEXT_COLOUR, WHITE);\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_MoveCursor(1,9);\r
- putstr("5,00V");\r
- txt_Set(FONT_SIZE, FONT4);\r
- txt_MoveCursor(2,5);\r
- print([CHR] voltage50[0]);\r
- print([CHR] voltage50[1]);\r
- print([CHR] voltage50[2]);\r
- print([CHR] voltage50[3]);\r
- return 0;\r
-endfunc\r
-\r
-func draw_voltage80()\r
- var col_rect;\r
-\r
- if(voltage_status[VOLTAGE80]==VOLTAGE_OK)\r
- col_rect := RED;\r
- else\r
- col_rect := GREEN;\r
- endif\r
-\r
- gfx_Rectangle(120,10,180,50,col_rect);\r
- gfx_Line(179, 10, 179, 50, BLACK);\r
- txt_Set(TEXT_COLOUR, WHITE);\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_MoveCursor(1,17);\r
- putstr("8,00V");\r
- txt_Set(FONT_SIZE, FONT4);\r
- txt_MoveCursor(2,10);\r
- print([CHR] voltage80[0]);\r
- print([CHR] voltage80[1]);\r
- print([CHR] voltage80[2]);\r
- print([CHR] voltage80[3]);\r
- return 0;\r
-endfunc\r
-\r
-func draw_voltageBAT()\r
- var col_rect;\r
-\r
- if(voltage_status[VOLTAGE_BAT]==VOLTAGE_OK)\r
- col_rect := RED;\r
- else\r
- col_rect := GREEN;\r
- endif\r
-\r
- gfx_Rectangle(180,10,240,50,col_rect);\r
- txt_Set(TEXT_COLOUR, WHITE);\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_MoveCursor(1,25);\r
- putstr("BATT");\r
- txt_Set(FONT_SIZE, FONT4);\r
- txt_MoveCursor(2,15);\r
- print([CHR] voltageBAT[0]);\r
- print([CHR] voltageBAT[1]);\r
- print([CHR] voltageBAT[2]);\r
- print([CHR] voltageBAT[3]);\r
- print([CHR] voltageBAT[4]);\r
- return 0;\r
-endfunc\r
-\r
-func draw_fsm_state()\r
- var idx;\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_MoveCursor(5, 6); // move the cursor to line 4, column 5\r
- txt_Set(TEXT_COLOUR, GRAY);\r
- \r
- putstr("CURRENT FSM STATE");\r
- return 0;\r
-endfunc\r
-\r
-func update_fsm_state()\r
- var idx;\r
- gfx_Rectangle(0, 70, 239, 99, BLACK);\r
- txt_Set(FONT_SIZE, FONT4);\r
- txt_MoveCursor(5, 0); // move the cursor to line 4, column 5\r
- txt_Set(TEXT_COLOUR, WHITE);\r
- idx:=0;\r
- repeat\r
- print([CHR] fsm_state[idx]);\r
- idx++;\r
- until(idx==fsm_state_len)\r
- return 0;\r
-endfunc\r
-\r
-func update_move_fsm_state()\r
- var idx;\r
- gfx_Rectangle(0, 99, 239, 112, BLACK);\r
- txt_Set(FONT_SIZE, FONT4);\r
- txt_MoveCursor(6, 0); // move the cursor to line 4, column 5\r
- txt_Set(TEXT_COLOUR, WHITE);\r
- idx:=0;\r
- repeat\r
- print([CHR] move_fsm_state[idx]);\r
- idx++;\r
- until(idx==move_fsm_state_len)\r
- return 0;\r
-endfunc\r
-\r
-func draw_balls()\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_MoveCursor(10, 12); // move the cursor to line 4, column 5\r
- txt_Set(TEXT_COLOUR, GRAY);\r
- \r
- putstr("BALLS");\r
- gfx_Set(0,0);\r
- gfx_Circle(24, 150, 22, BLUE);\r
- gfx_Circle(72, 150, 22, BLUE);\r
- gfx_Circle(120, 150, 22, DARKRED);\r
- gfx_Circle(168, 150, 22, BLUE);\r
- gfx_Circle(216, 150, 22, WHITE);\r
- return 0;\r
-endfunc\r
-\r
-func draw_carousel_pos(var up, var down)\r
- var x_up, x_down;\r
-\r
- x_up := up*48 + 24;\r
- x_down := down*48 + 24;\r
- \r
- gfx_Set(1,0);\r
- gfx_Triangle(x_up-15, 160, x_up+15, 160, x_up, 135, BLACK);\r
- gfx_Triangle(x_down, 165, x_down+15, 140, x_down-15, 140, BLACK);\r
- return 0;\r
-endfunc\r
-\r
-func update_balls()\r
- \r
- gfx_Set(0,0);\r
- if(balls_state[0]==BLUE_BALL)\r
- gfx_Circle(24, 150, 22, BLUE);\r
- endif\r
- if(balls_state[0]==RED_BALL)\r
- gfx_Circle(24, 150, 22, DARKRED);\r
- endif\r
- if(balls_state[0]==NO_BALL)\r
- gfx_Circle(24, 150, 22, GRAY);\r
- endif\r
- if(balls_state[0]==WHITE_BALL)\r
- gfx_Circle(24, 150, 22, WHITE);\r
- endif\r
- \r
- if(balls_state[1]==BLUE_BALL)\r
- gfx_Circle(72, 150, 22, BLUE);\r
- endif\r
- if(balls_state[1]==RED_BALL)\r
- gfx_Circle(72, 150, 22, DARKRED);\r
- endif\r
- if(balls_state[1]==NO_BALL)\r
- gfx_Circle(72, 150, 22, GRAY);\r
- endif\r
- if(balls_state[1]==WHITE_BALL)\r
- gfx_Circle(72, 150, 22, WHITE);\r
- endif\r
-\r
- if(balls_state[2]==BLUE_BALL)\r
- gfx_Circle(120, 150, 22, BLUE);\r
- endif\r
- if(balls_state[2]==RED_BALL)\r
- gfx_Circle(120, 150, 22, DARKRED);\r
- endif\r
- if(balls_state[2]==NO_BALL)\r
- gfx_Circle(120, 150, 22, GRAY);\r
- endif\r
- if(balls_state[2]==WHITE_BALL)\r
- gfx_Circle(120, 150, 22, WHITE);\r
- endif\r
-\r
- if(balls_state[3]==BLUE_BALL)\r
- gfx_Circle(168, 150, 22, BLUE);\r
- endif\r
- if(balls_state[3]==RED_BALL)\r
- gfx_Circle(168, 150, 22, DARKRED);\r
- endif\r
- if(balls_state[3]==NO_BALL)\r
- gfx_Circle(168, 150, 22, GRAY);\r
- endif \r
- if(balls_state[3]==WHITE_BALL)\r
- gfx_Circle(168, 150, 22, WHITE);\r
- endif \r
- \r
- if(balls_state[4]==BLUE_BALL)\r
- gfx_Circle(216, 150, 22, BLUE);\r
- endif\r
- if(balls_state[4]==RED_BALL)\r
- gfx_Circle(216, 150, 22, DARKRED);\r
- endif\r
- if(balls_state[4]==NO_BALL)\r
- gfx_Circle(216, 150, 22, GRAY);\r
- endif\r
- if(balls_state[4]==WHITE_BALL)\r
- gfx_Circle(216, 150, 22, WHITE);\r
- endif\r
- \r
-// draw_carousel_pos(ball_up, ball_down);\r
- return 0;\r
-endfunc\r
-\r
-\r
-\r
-func draw_position()\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_MoveCursor(21, 6); // move the cursor to line 4, column 5\r
- txt_Set(TEXT_COLOUR, GRAY);\r
- \r
- putstr("POSITION AND COLOR");\r
-\r
- gfx_Rectangle(0,266,239,289,game_color);\r
- txt_Set(FONT_SIZE, FONT4);\r
- txt_Set(TEXT_COLOUR, WHITE);\r
- txt_MoveCursor(17,0);\r
- print("X,Y: ");\r
- print([CHR] position[0]);\r
- print([CHR] position[1]);\r
- print([CHR] position[2]);\r
- print([CHR] position[3]);\r
- print(" ");\r
- print([CHR] position[4]);\r
- print([CHR] position[5]);\r
- print([CHR] position[6]);\r
- print([CHR] position[7]);\r
- print(" [m]");\r
- return 0;\r
-endfunc\r
-\r
-func draw_hw1(var status)\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_Set(TEXT_COLOUR, WHITE);\r
- \r
- if(status==HW_STATUS_OK)\r
- gfx_Rectangle(0,193,79,218,GREEN);\r
- else\r
- gfx_Rectangle(0,193,79,218,RED);\r
- endif\r
-\r
- txt_MoveCursor(17,1);\r
- putstr(" MOTION");\r
-endfunc\r
-\r
-func draw_hw2(var status)\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_Set(TEXT_COLOUR, WHITE);\r
- \r
- if(status==HW_STATUS_OK)\r
- gfx_Rectangle(81,193,159,218,GREEN);\r
- else\r
- gfx_Rectangle(81,193,159,218,RED);\r
- endif\r
- txt_MoveCursor(17,11);\r
- putstr(" LASER");\r
-endfunc\r
-\r
-func draw_hw3(var status)\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_Set(TEXT_COLOUR, WHITE);\r
- \r
- if(status==HW_STATUS_OK)\r
- gfx_Rectangle(161,193,240,218,GREEN);\r
- else\r
- gfx_Rectangle(161,193,240,218,RED);\r
- endif\r
-\r
- txt_MoveCursor(17,21);\r
- putstr(" CMU");\r
-endfunc\r
-\r
-func draw_hw4(var status)\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_Set(TEXT_COLOUR, WHITE);\r
- \r
- if(status==HW_STATUS_OK)\r
- gfx_Rectangle(0,220,79,245,GREEN);\r
- else\r
- gfx_Rectangle(0,220,79,245,RED);\r
- endif\r
- \r
- txt_MoveCursor(19,1);\r
- putstr(" POWER");\r
-endfunc\r
-\r
-func draw_hw5(var status)\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_Set(TEXT_COLOUR, WHITE);\r
- \r
- if(status==HW_STATUS_OK)\r
- gfx_Rectangle(81,220,159,245,GREEN);\r
- else\r
- gfx_Rectangle(81,220,159,245,RED);\r
- endif\r
- \r
- txt_MoveCursor(19,11);\r
- putstr(" ");\r
-endfunc\r
-\r
-func draw_hw6(var status)\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_Set(TEXT_COLOUR, WHITE);\r
- \r
- if(status==HW_STATUS_OK)\r
- gfx_Rectangle(161,220,240,245,GREEN);\r
- else\r
- gfx_Rectangle(161,220,240,245,RED);\r
- endif\r
- \r
- txt_MoveCursor(19,21);\r
- putstr(" ");\r
-endfunc\r
-\r
-func draw_hw()\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_MoveCursor(15, 10); // move the cursor to line 4, column 5\r
- txt_Set(TEXT_COLOUR, GRAY);\r
- \r
- putstr("HW STATUS");\r
- \r
- txt_Set(TEXT_COLOUR, WHITE);\r
-\r
- draw_hw1(HW_STATUS_OK);\r
- draw_hw2(HW_STATUS_OK);\r
- draw_hw3(HW_STATUS_OK);\r
- draw_hw4(HW_STATUS_OK);\r
- draw_hw5(HW_STATUS_OK);\r
- draw_hw6(HW_STATUS_OK);\r
- return 0;\r
-endfunc\r
-\r
-//-------------------------------------------------------------------------------------------------\r
-\r
-func set_actuators(var id)\r
- var len,idx;\r
- \r
- out_msg_buff[0] := MSG_START;\r
- out_msg_buff[1] := MSG_ACTUATORS;\r
- out_msg_buff[2] := id;\r
- out_msg_buff[3] := MSG_TERM_LF;\r
-\r
- len := 4;\r
- idx := 0;\r
- \r
- repeat\r
- serout(out_msg_buff[idx]);\r
- idx++;\r
- until(idx==len)\r
-endfunc\r
-\r
-func robot_get_ready()\r
- var len,idx;\r
- \r
- out_msg_buff[0] := MSG_START;\r
- out_msg_buff[1] := MSG_GET_READY;\r
- out_msg_buff[2] := MSG_TERM_LF;\r
-\r
- len := 3;\r
- idx := 0;\r
- \r
- repeat\r
- serout(out_msg_buff[idx]);\r
- idx++;\r
- until(idx==len)\r
-endfunc\r
-\r
-func start()\r
- var len,idx;\r
- \r
- out_msg_buff[0] := MSG_START;\r
- out_msg_buff[1] := MSG_ROBOT_START;\r
- out_msg_buff[2] := MSG_TERM_LF;\r
-\r
- len := 3;\r
- idx := 0;\r
- \r
- repeat\r
- serout(out_msg_buff[idx]);\r
- idx++;\r
- until(idx==len)\r
-endfunc\r
-\r
-func switch_to_status()\r
- var len,idx;\r
- \r
- out_msg_buff[0] := MSG_START;\r
- out_msg_buff[1] := MSG_SWITCH_TO_STATUS;\r
- out_msg_buff[2] := MSG_TERM_LF;\r
-\r
- len := 3;\r
- idx := 0;\r
- \r
- repeat\r
- serout(out_msg_buff[idx]);\r
- idx++;\r
- until(idx==len)\r
-endfunc\r
-\r
-func switch_to_status_done()\r
- var len,idx;\r
- \r
- out_msg_buff[0] := MSG_START;\r
- out_msg_buff[1] := MSG_SWITCH_TO_STATUS_DONE;\r
- out_msg_buff[2] := MSG_TERM_LF;\r
-\r
- len := 3;\r
- idx := 0;\r
- \r
- repeat\r
- serout(out_msg_buff[idx]);\r
- idx++;\r
- until(idx==len)\r
-endfunc\r
-\r
-func switch_to_control()\r
- var len,idx;\r
- \r
- out_msg_buff[0] := MSG_START;\r
- out_msg_buff[1] := MSG_SWITCH_TO_CONTROL;\r
- out_msg_buff[2] := MSG_TERM_LF;\r
-\r
- len := 3;\r
- idx := 0;\r
- \r
- repeat\r
- serout(out_msg_buff[idx]);\r
- idx++;\r
- until(idx==len)\r
-endfunc\r
-\r
-func switch_to_control_done()\r
- var len,idx;\r
- \r
- out_msg_buff[0] := MSG_START;\r
- out_msg_buff[1] := MSG_SWITCH_TO_CONTROL_DONE;\r
- out_msg_buff[2] := MSG_TERM_LF;\r
-\r
- len := 3;\r
- idx := 0;\r
- \r
- repeat\r
- serout(out_msg_buff[idx]);\r
- idx++;\r
- until(idx==len)\r
-endfunc\r
-\r
-func move_carousel(var dir)\r
- var len,idx;\r
- \r
- out_msg_buff[0] := MSG_START;\r
- if(dir==CAR_LEFT)\r
- out_msg_buff[1] := MSG_CAR_LEFT;\r
- else\r
- if(dir==CAR_RIGHT)\r
- out_msg_buff[1] := MSG_CAR_RIGHT;\r
- endif\r
- endif\r
- out_msg_buff[2] := MSG_TERM_LF;\r
-\r
- len := 3;\r
- idx := 0;\r
- \r
- repeat\r
- serout(out_msg_buff[idx]);\r
- idx++;\r
- until(idx==len)\r
-endfunc\r
-\r
-func set_color(var des_col)\r
- var len,idx;\r
- \r
- out_msg_buff[0] := MSG_START;\r
- out_msg_buff[1] := MSG_SET_COLOR;\r
- out_msg_buff[2] := des_col;\r
- out_msg_buff[3] := MSG_TERM_LF;\r
-\r
- len := 4;\r
- idx := 0;\r
- \r
- repeat\r
- serout(out_msg_buff[idx]);\r
- idx++;\r
- until(idx==len)\r
-endfunc\r
-\r
-func draw_ctrl_titles()\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_Set(TEXT_COLOUR, RED);\r
-\r
- txt_MoveCursor(0, 8);\r
- putstr("SERVOS CONTROL");\r
- \r
- txt_MoveCursor(7, 8);\r
- putstr("DRIVES CONTROL");\r
- \r
- txt_MoveCursor(14, 9);\r
- putstr("ROBOT CONTROL");\r
-endfunc\r
-\r
-func draw_servos_buttons()\r
- bt_x[BT_X_0] := 0;\r
- bt_y[BT_S_ROW1_Y] := 18;\r
- bt_lbrush_servo(UP, BLUE);\r
- \r
- bt_x[BT_S_RBRUSH_X] := gfx_Get(2);\r
- bt_rbrush_servo(UP, BLUE);\r
- bt_y[BT_S_ROW2_Y] := gfx_Get(3);\r
-\r
-// SECOND ROW\r
- bt_fdoor_servo(UP, BLUE);\r
- bt_x[BT_S_BDOOR_X] := gfx_Get(2);\r
- bt_bdoor_servo(UP, BLUE);\r
- bt_y[BT_S_ROW2_END_Y] := gfx_Get(3);\r
-endfunc\r
-\r
-func draw_drives_buttons()\r
- bt_y[BT_D_ROW1_Y] := 100;\r
- bt_lbrush_drive(UP, BLUE);\r
- \r
- bt_x[BT_D_RBRUSH_X] := gfx_Get(2);\r
- bt_rbrush_drive(UP, BLUE);\r
- \r
- bt_y[BT_D_ROW2_Y] := gfx_Get(3);\r
-\r
-// SECOND ROW\r
- bt_x[BT_D_BAGR_X] := 0;\r
- bt_bagr_drive(UP, BLUE);\r
- \r
- bt_y[BT_D_ROW2_END_Y] := gfx_Get(3);\r
- bt_x[BT_D_BAGR_END_X] := gfx_Get(2);\r
-\r
- bt_y[BT_CAR_LEFT_Y] := bt_y[BT_D_ROW2_Y];\r
- bt_x[BT_CAR_LEFT_X] := bt_x[BT_D_BAGR_END_X];\r
- bt_carousel_left(UP, BLUE);\r
- bt_y[BT_CAR_LEFT_END_Y] := bt_y[BT_D_ROW2_END_Y];\r
- bt_x[BT_CAR_LEFT_END_X] := gfx_Get(2);\r
- \r
- bt_y[BT_CAR_RIGHT_Y] := bt_y[BT_D_ROW2_Y];\r
- bt_x[BT_CAR_RIGHT_X] := gfx_Get(2);\r
- bt_carousel_right(UP, BLUE);\r
- bt_y[BT_CAR_RIGHT_END_Y] := bt_y[BT_D_ROW2_END_Y];\r
- bt_x[BT_CAR_RIGHT_END_X] := gfx_Get(3);\r
-endfunc\r
-\r
-func draw_robot_control_buttons()\r
- bt_y[BT_GET_READY_Y] := bt_y[BT_D_ROW2_END_Y] + 25;\r
- bt_x[BT_GET_READY_X] := 30;\r
-\r
- bt_get_ready(UP, BLUE);\r
- \r
- bt_x[BT_GET_READY_END_X] := gfx_Get(2);\r
-\r
- bt_y[BT_START_Y] := gfx_Get(3);\r
- bt_x[BT_START_X] := 30;\r
- \r
- bt_start(UP, RED);\r
-\r
- bt_x[BT_START_END_X] := gfx_Get(2);\r
- bt_y[BT_START_END_Y] := gfx_Get(3);\r
- \r
- bt_x[BT_COLOR_X] := 30;\r
- bt_y[BT_COLOR_Y] := bt_y[BT_START_END_Y] + 5;\r
- \r
- bt_color(UP, BLUE);\r
- \r
- bt_x[BT_COLOR_END_X] := gfx_Get(2);\r
- bt_y[BT_COLOR_END_Y] := gfx_Get(3);\r
- \r
-endfunc\r
-\r
-func draw_status_button()\r
- bt_x[BT_STATUS_X] := 0;\r
- bt_y[BT_STATUS_Y] := 290;\r
- \r
- bt_status(UP, GRAY, TXT_BT_STATUS);\r
- \r
- bt_x[BT_STATUS_END_X] := gfx_Get(2);\r
- bt_y[BT_STATUS_END_Y] := gfx_Get(3);\r
-endfunc\r
-\r
-func draw_control_button()\r
- bt_x[BT_STATUS_X] := 0;\r
- bt_y[BT_STATUS_Y] := 290;\r
- \r
- bt_status(UP, GRAY, TXT_BT_CONTROL);\r
- \r
- bt_x[BT_STATUS_END_X] := gfx_Get(2);\r
- bt_y[BT_STATUS_END_Y] := gfx_Get(3);\r
-endfunc\r
-\r
-func draw_status() \r
- clear_screen();\r
- txt_Set(FONT_SIZE, FONT3);\r
- txt_MoveCursor(0, 12); // move the cursor to line 4, column 5\r
- txt_Set(TEXT_COLOUR, GRAY);\r
- \r
- putstr("VOLTAGE");\r
- draw_voltage33();\r
- draw_voltage50();\r
- draw_voltage80();\r
- draw_voltageBAT();\r
- \r
- fsm_state_len := 1;\r
- draw_fsm_state();\r
-\r
- draw_balls();\r
-// draw_carousel_pos(3, 2);\r
- draw_hw();\r
- draw_position();\r
- draw_control_button();\r
- return 0;\r
-endfunc\r
-\r
-func draw_control()\r
- clear_screen();\r
- draw_ctrl_titles();\r
- draw_servos_buttons();\r
- draw_drives_buttons();\r
- draw_robot_control_buttons();\r
- draw_status_button();\r
-endfunc\r
-\r
-func process_msg()\r
- var idx;\r
- if(msg_buff[0]==CHANGE_MODE_REP)\r
- if(msg_buff[1]==CHANGE_MODE_STATUS)\r
- draw_status();\r
- isControl:=0;\r
- isStatus:=1; \r
- switch_to_status_done();\r
- endif\r
- if(msg_buff[1]==CHANGE_MODE_CONTROL)\r
- draw_control();\r
- isStatus:=0;\r
- isControl:=1;\r
- switch_to_control_done();\r
- endif\r
- endif\r
- \r
- if((msg_buff[0]==MSG_VOLTAGE_STATUS)&&(isStatus==1))\r
- voltage_status[VOLTAGE33]:=msg_buff[1];\r
- voltage_status[VOLTAGE50]:=msg_buff[2];\r
- voltage_status[VOLTAGE80]:=msg_buff[3];\r
- voltage_status[VOLTAGE_BAT]:=msg_buff[4];\r
- endif\r
-\r
- if((msg_buff[0]==MSG_VOLTAGE)&&(isStatus==1))\r
- \r
- voltage33[0]:=msg_buff[1];\r
- voltage33[1]:=msg_buff[2];\r
- voltage33[2]:=msg_buff[3];\r
- voltage33[3]:=msg_buff[4];\r
- \r
- voltage50[0]:=msg_buff[5];\r
- voltage50[1]:=msg_buff[6];\r
- voltage50[2]:=msg_buff[7];\r
- voltage50[3]:=msg_buff[8];\r
- \r
- voltage80[0]:=msg_buff[9];\r
- voltage80[1]:=msg_buff[10];\r
- voltage80[2]:=msg_buff[11];\r
- voltage80[3]:=msg_buff[12];\r
- \r
- voltageBAT[0]:=msg_buff[13];\r
- voltageBAT[1]:=msg_buff[14];\r
- voltageBAT[2]:=msg_buff[15];\r
- voltageBAT[3]:=msg_buff[16];\r
- voltageBAT[4]:=msg_buff[17];\r
- \r
- draw_voltage33();\r
- draw_voltage50();\r
- draw_voltage80();\r
- draw_voltageBAT();\r
- endif\r
- if((msg_buff[0]==MSG_POSITION)&&(isStatus==1))\r
- idx:=1;\r
- repeat\r
- position[idx-1] := msg_buff[idx];\r
- idx++;\r
- until (msg_buff[idx]==MSG_TERM)\r
- draw_position();\r
- endif\r
- if((msg_buff[0]==MSG_FSM_STATE)&&(isStatus==1))\r
- idx:=1;\r
- repeat\r
- fsm_state[idx-1] := msg_buff[idx];\r
- idx++;\r
- until(msg_buff[idx]==MSG_TERM)\r
- fsm_state_len := idx-1;\r
- update_fsm_state();\r
- endif\r
- if((msg_buff[0]==MSG_MOVE_FSM_STATE)&&(isStatus==1))\r
- idx:=1;\r
- repeat\r
- move_fsm_state[idx-1] := msg_buff[idx];\r
- idx++;\r
- until(msg_buff[idx]==MSG_TERM)\r
- move_fsm_state_len := idx-1;\r
- update_move_fsm_state();\r
- endif\r
- if((msg_buff[0]==MSG_COLOR)&&(isStatus==1))\r
- if(msg_buff[1]==1)\r
- game_color := RED;\r
- else\r
- game_color := BLUE;\r
- endif\r
- endif\r
- if((msg_buff[0]==MSG_SET_COLOR))\r
- if(msg_buff[1]==COLOR_BLUE)\r
- current_color:=COLOR_BLUE;\r
- if(isControl==1)\r
- bt_color(UP, BLUE);\r
- endif\r
- endif\r
- if(msg_buff[1]==COLOR_RED)\r
- current_color:=COLOR_RED;\r
- if(isControl==1)\r
- bt_color(DOWN, RED);\r
- endif\r
- endif\r
- endif\r
- if((msg_buff[0]==MSG_BALLS)&&(isStatus==1))\r
- balls_state[0]:=msg_buff[1];\r
- balls_state[1]:=msg_buff[2];\r
- balls_state[2]:=msg_buff[3];\r
- balls_state[3]:=msg_buff[4];\r
- balls_state[4]:=msg_buff[5];\r
- ball_up:=msg_buff[6];\r
- ball_down:=msg_buff[7];\r
- update_balls();\r
- endif\r
- if((msg_buff[0]==MSG_HW_STATUS)&&(isStatus==1))\r
-// if(msg_buff[1]==HW1)\r
- draw_hw1(msg_buff[1]);\r
-// endif\r
-// if(msg_buff[1]==HW2)\r
- draw_hw2(msg_buff[2]);\r
-// endif\r
-// if(msg_buff[1]==HW3)\r
- draw_hw3(msg_buff[3]);\r
-// endif\r
-// if(msg_buff[1]==HW4)\r
- draw_hw4(msg_buff[4]);\r
-// endif\r
-// if(msg_buff[1]==HW5)\r
-// draw_hw5(msg_buff[5]);\r
-// endif\r
-// if(msg_buff[1]==HW6)\r
-// draw_hw6(msg_buff[6]);\r
-// endif\r
- endif\r
- return 0;\r
-endfunc\r
-\r
-func get_msg()\r
- var in, idx, bad;\r
-\r
- idx:=0;\r
- bad:=0;\r
-\r
- repeat\r
- in:=serin();\r
- if(in!=-1)\r
- msg_buff[idx] := in;\r
- idx++;\r
- else\r
- break;\r
- endif\r
- until((in==MSG_TERM)||(idx==MSG_BUFF_LEN))\r
- msg_len := idx;\r
-\r
- process_msg();\r
- return 0;\r
-endfunc\r
-\r
-func bt_pressed_s_row1(var x)\r
- if(x<bt_x[BT_S_RBRUSH_X])\r
- bt_lbrush_servo(DOWN, GREEN);\r
- set_actuators(MSG_LBRUSH_SERVO);\r
- else\r
- bt_rbrush_servo(DOWN, GREEN);\r
- set_actuators(MSG_RBRUSH_SERVO);\r
- endif\r
-endfunc\r
-\r
-func bt_pressed_s_row2(var x)\r
- if(x<bt_x[BT_S_BDOOR_X])\r
- bt_fdoor_servo(DOWN, GREEN);\r
- set_actuators(MSG_FDOOR_SERVO);\r
- else\r
- bt_bdoor_servo(DOWN, GREEN);\r
- set_actuators(MSG_BDOOR_SERVO);\r
- endif\r
-endfunc\r
-\r
-func bt_pressed_d_row1(var x)\r
- if(x<bt_x[BT_S_RBRUSH_X])\r
- bt_lbrush_drive(DOWN, GREEN);\r
- set_actuators(MSG_LBRUSH_DRIVE);\r
- else\r
- bt_rbrush_drive(DOWN, GREEN);\r
- set_actuators(MSG_RBRUSH_DRIVE);\r
- endif\r
-endfunc\r
-\r
-func bt_pressed_d_row2(var x)\r
- if((x>bt_x[BT_D_BAGR_X])&&(x<bt_x[BT_D_BAGR_END_X]))\r
- bt_bagr_drive(DOWN, GREEN);\r
- set_actuators(MSG_BAGR_DRIVE);\r
- endif\r
- if((x>bt_x[BT_CAR_LEFT_X])&&(x<bt_x[BT_CAR_LEFT_END_X]))\r
- bt_carousel_left(DOWN, GREEN);\r
- move_carousel(CAR_LEFT);\r
- endif\r
- if(x>bt_x[BT_CAR_RIGHT_X])\r
- bt_carousel_right(DOWN, GREEN);\r
- move_carousel(CAR_RIGHT);\r
- endif\r
-endfunc\r
-\r
-func bt_pressed_get_ready()\r
- bt_get_ready(DOWN, GREEN);\r
- robot_get_ready();\r
-endfunc\r
-\r
-func bt_pressed_start()\r
- bt_start(DOWN, GREEN);\r
- start();\r
-endfunc\r
-\r
-func bt_pressed_status()\r
- bt_status(DOWN, GREEN, TXT_BT_STATUS);\r
-endfunc\r
-\r
-func bt_pressed_control()\r
- bt_status(DOWN, GREEN, TXT_BT_CONTROL);\r
-endfunc\r
-\r
-func bt_pressed_color()\r
- if(current_color==COLOR_RED)\r
- bt_color(UP, BLUE);\r
- set_color(COLOR_BLUE);\r
- current_color := COLOR_BLUE;\r
- else\r
- if(current_color==COLOR_BLUE)\r
- bt_color(DOWN, RED);\r
- set_color(COLOR_RED);\r
- current_color := COLOR_RED;\r
- endif\r
- endif\r
-endfunc\r
-\r
-func bt_unpressed_s_row1(var x)\r
- if(x<bt_x[BT_S_RBRUSH_X])\r
- bt_lbrush_servo(UP, BLUE);\r
- else\r
- bt_rbrush_servo(UP, BLUE);\r
- endif\r
-endfunc\r
-\r
-func bt_unpressed_s_row2(var x)\r
- if(x<bt_x[BT_S_BDOOR_X])\r
- bt_fdoor_servo(UP, BLUE);\r
- else\r
- bt_bdoor_servo(UP, BLUE);\r
- endif\r
-endfunc\r
-\r
-func bt_unpressed_d_row1(var x)\r
- if(x<bt_x[BT_S_RBRUSH_X])\r
- bt_lbrush_drive(UP, BLUE);\r
- else\r
- bt_rbrush_drive(UP, BLUE);\r
- endif\r
-endfunc\r
-\r
-func bt_unpressed_d_row2(var x)\r
- if((x>bt_x[BT_D_BAGR_X])&&(x<bt_x[BT_D_BAGR_END_X]))\r
- bt_bagr_drive(UP, BLUE);\r
- endif\r
- if((x>bt_x[BT_CAR_LEFT_X])&&(x<bt_x[BT_CAR_LEFT_END_X]))\r
- bt_carousel_left(UP, BLUE);\r
- endif\r
- if(x>bt_x[BT_CAR_RIGHT_X])\r
- bt_carousel_right(UP, BLUE);\r
- endif\r
-endfunc\r
-\r
-func bt_unpressed_get_ready()\r
- bt_get_ready(UP, BLUE);\r
-endfunc\r
-\r
-func bt_unpressed_start()\r
- bt_start(UP, RED);\r
-endfunc\r
-\r
-func bt_unpressed_status()\r
- bt_status(UP, GRAY, TXT_BT_STATUS);\r
- switch_to_status();\r
-endfunc\r
-\r
-func bt_unpressed_control()\r
- bt_status(UP, GRAY, TXT_BT_CONTROL);\r
- switch_to_control();\r
-endfunc\r
-\r
-func touchscreen() \r
- var col, state, x, y;\r
- state := touch_Get(TOUCH_STATUS); // get touchscreen status\r
- \r
- if(state == NOTOUCH)\r
- return;\r
- endif\r
- //-----------------------------------------------------------------------------------------\r
- if(state == TOUCH_PRESS) // if there's a press\r
- x := touch_Get(TOUCH_GETX); \r
- y := touch_Get(TOUCH_GETY);\r
- \r
- if(isControl)\r
- if((y > bt_y[BT_S_ROW1_Y])&&(y<bt_y[BT_S_ROW2_Y]))\r
- bt_pressed_s_row1(x); \r
- endif \r
-\r
- if((y > bt_y[BT_S_ROW2_Y])&&(y<bt_y[BT_S_ROW2_END_Y]))\r
- bt_pressed_s_row2(x); \r
- endif \r
- \r
- if((y > bt_y[BT_D_ROW1_Y])&&(y<bt_y[BT_D_ROW2_Y]))\r
- bt_pressed_d_row1(x); \r
- endif \r
-\r
- if((y > bt_y[BT_D_ROW2_Y])&&(y<bt_y[BT_D_ROW2_END_Y]))\r
- bt_pressed_d_row2(x); \r
- endif \r
-\r
- if((y > bt_y[BT_GET_READY_Y])&&(y<bt_y[BT_START_Y])&&(x>bt_x[BT_GET_READY_X])&&(x<bt_x[BT_GET_READY_END_X]))\r
- bt_pressed_get_ready();\r
- endif\r
-\r
- if((y > bt_y[BT_START_Y])&&(y<bt_y[BT_START_END_Y])&&(x>bt_x[BT_START_X])&&(x<bt_x[BT_START_END_X]))\r
- bt_pressed_start();\r
- endif\r
- \r
- if((y > bt_y[BT_COLOR_Y])&&(y<bt_y[BT_COLOR_END_Y])&&(x>bt_x[BT_COLOR_X])&&(x<bt_x[BT_COLOR_END_X]))\r
- bt_pressed_color();\r
- endif\r
-\r
- if(y > bt_y[BT_STATUS_Y])\r
- bt_pressed_status();\r
- endif\r
- \r
- endif //isControl\r
- \r
- if(isStatus)\r
-\r
- if(y > bt_y[BT_STATUS_Y])\r
- bt_pressed_control();\r
- endif\r
- \r
- endif //isStatus\r
- endif\r
- \r
- //-----------------------------------------------------------------------------------------\r
- if(state == TOUCH_RELEASE) // if there's a release\r
-\r
- if(isControl)\r
-\r
- if((y > bt_y[BT_S_ROW1_Y])&&(y<bt_y[BT_S_ROW2_Y]))\r
- bt_unpressed_s_row1(x); \r
- endif \r
- \r
- if((y > bt_y[BT_S_ROW2_Y])&&(y<bt_y[BT_S_ROW2_END_Y]))\r
- bt_unpressed_s_row2(x); \r
- endif \r
-\r
- if((y > bt_y[BT_D_ROW1_Y])&&(y<bt_y[BT_D_ROW2_Y]))\r
- bt_unpressed_d_row1(x); \r
- endif \r
- \r
- if((y > bt_y[BT_D_ROW2_Y])&&(y<bt_y[BT_D_ROW2_END_Y]))\r
- bt_unpressed_d_row2(x); \r
- endif \r
- \r
- if((y > bt_y[BT_GET_READY_Y])&&(y<bt_y[BT_START_Y])&&(x>bt_x[BT_GET_READY_X])&&(x<bt_x[BT_GET_READY_END_X]))\r
- bt_unpressed_get_ready();\r
- endif\r
-\r
- if((y > bt_y[BT_START_Y])&&(y<bt_y[BT_START_END_Y])&&(x>bt_x[BT_START_X])&&(x<bt_x[BT_START_END_X]))\r
- bt_unpressed_start();\r
- endif \r
- \r
- if(y > bt_y[BT_STATUS_Y])\r
- bt_unpressed_status();\r
- endif\r
-\r
- endif //isControl\r
-\r
- if(isStatus==1)\r
- \r
- if(y > bt_y[BT_STATUS_Y])\r
- bt_unpressed_control();\r
- endif\r
- \r
- endif //isStatus\r
-\r
- endif\r
- \r
-endfunc\r
-\r
-func main()\r
- var ch;\r
- setbaud(BAUD_2400); \r
- touch_Set(TOUCH_ENABLE);\r
- touch_Set(2); \r
- isStatus := 1;\r
- isControl := 0;\r
- current_color := COLOR_BLUE;\r
- draw_status();\r
-// draw_control();\r
-\r
- repeat\r
- touchscreen();\r
- ch:=serin();\r
- if(ch==MSG_START)\r
- get_msg();\r
- \r
- endif\r
- forever\r
-endfunc\r
-\r
-\r
-\r
-\r
-\r