void elu_print_camera_image(const el_camera_image*frame,el_uint32 n){ int X,Y,i; char *p; while(el_uart_is_sending(EL_UART_1)){ el_process_cooperate(); } el_uart_send_string(EL_UART_1,"<p>\n"); p = elu_stdio_buffer; p += elu_snprintf(p,16,"NUM: %lu\n",n); p += elu_snprintf(p,16,"DIM: %d,%d\n",EL_CAMERA_FRAME_DIM_X,EL_CAMERA_FRAME_DIM_Y); p += elu_snprintf(p,16,"LEN: %d,%d\n",frame->Width,frame->Height); while(el_uart_is_sending(EL_UART_1)){ el_process_cooperate(); } el_uart_send_string(EL_UART_1,elu_stdio_buffer); for(Y=0;Y<EL_CAMERA_FRAME_DIM_Y;Y++){ X = 0; while(X < EL_CAMERA_FRAME_DIM_X){ p = elu_stdio_buffer; for(i=0;i<10;i++){ p += elu_snprintf(p,16,"%4.4X",frame->Data[Y][X]); X++; } if(X==EL_CAMERA_FRAME_DIM_X){ *p++ = '\n'; } while(el_uart_is_sending(EL_UART_1)){ el_process_cooperate(); } el_uart_send_string(EL_UART_1,elu_stdio_buffer); } } while(el_uart_is_sending(EL_UART_1)){ el_process_cooperate(); } el_uart_send_string(EL_UART_1,"</p>\n"); }
EL_PROCESS Process_IRRC(void*data){ int k; int check,address,command; while(1){ el_ir_receiver_reset(); k = el_ir_receiver_get_check(); do{ el_process_cooperate(); check = el_ir_receiver_get_check(); }while(check==k);//wait until "check" being changed address = el_ir_receiver_get_address(); command = el_ir_receiver_get_data(); elu_println("[IRRC]\nCHECK\tADDRESS\tCOMMAND"); elu_println("%d\t%d\t%d",check,address,command); if(address==5){ el_led_set(4,EL_TOGGLE); } } }
void Process_LED_Control(void*arg){ char c; while(1){ // wait until something is received do{ /* * In a process, "el_process_cooperate" need to be called in any * polling loops. See the documentation of the Process module to * learn more details. */ el_process_cooperate(); }while(el_uart_get_char_counter(EL_UART_1)==0); c = el_uart_get_char(EL_UART_1); if(c=='f'){ el_led_set(EL_LED_FRONT,EL_TOGGLE); } } }
void Process_ConsoleLoop(void*arg){ char c; int i; elu_printf("EL_EXAMPLE_04\n"); // setup the task Task_ObjectFollowing_Setup(); el_process_wait(500);// wait for 500 ms el_uart_flush_char(EL_UART_1); while(1){ do{ el_process_cooperate(); }while(el_uart_get_char_counter(EL_UART_1)==0); c = el_uart_get_char(EL_UART_1); switch(c){ case 'f': el_led_set(EL_LED_FRONT,EL_TOGGLE); break; case 'r':// report ir proximity sensor outputs elu_println("<IR>"); el_ir_proximity_get(EL_IR_PROXIMITY_SENSOR_ALL,EL_IR_ALL_3V,(el_int16*)ProximitySensor); elu_printf("AMB:"); for(i=0;i<8;i++){ elu_printf("\t%d",ProximitySensor[i].Ambient); } elu_putchar('\n'); elu_printf("REF:"); for(i=0;i<8;i++){ elu_printf("\t%d",ProximitySensor[i].Reflection); } elu_putchar('\n'); break; case 'p':// report image processing result elu_println("<IMG>"); elu_println("MASS:\t%d\t%d\t%d",vision_mass_red,vision_mass_green,vision_mass_blue); elu_println("BIAS:\t%d\t%d\t%d",vision_bias_red,vision_bias_green,vision_bias_blue); elu_putchar('\n'); break; case '1': Task_ObjectColor = TASK_OBJECT_RED; elu_println("FOLLOW RED"); break; case '2': Task_ObjectColor = TASK_OBJECT_GREEN; elu_println("FOLLOW GREEN"); break; case '3': Task_ObjectColor = TASK_OBJECT_BLUE; elu_println("FOLLOW BLUE"); break; } } Task_ObjectFollowing_Clear(); }