int bitmap_play(char * filename) { char ch; if (fb_init()) { printf ("Unable to init framebuffer device\n"); return 2; } fb_pixel * bmp_buffer; if ((bmp_buffer = bitmap_load(filename)) == NULL) { fb_uninit(); printf ("Error while reading bitmap\n"); return 1; } fb_clear_screen(screen); bitmap_render(bmp_buffer); init_keyboard(); ch=0; while (1) { if (!kbhit()) { ch = readch(); if (ch == KEY_ESC) break; if (ch == KEY_UP && position_y >= JUMP_SIZE) position_y-=JUMP_SIZE; if (ch == KEY_DOWN && fb_yres <= (bmp_info.bi_height-position_y-JUMP_SIZE)) position_y+=JUMP_SIZE; if (ch == KEY_LEFT && position_x >= JUMP_SIZE) position_x-=JUMP_SIZE; if (ch == KEY_RIGHT && fb_xres <= (bmp_info.bi_width-position_x-JUMP_SIZE)) position_x+=JUMP_SIZE; ch = 0; bitmap_render(bmp_buffer); } } close_keyboard(); fflush(stdin); fb_clear_screen(screen); bitmap_free(bmp_buffer); fb_uninit(); return 0; }
int main(int argc, char **argv) { struct fb fb; struct pt p; struct sigaction sa; sa.sa_handler = &sighandler; sigaction(SIGINT, &sa, NULL); srand(time(NULL)); fb_init(&fb); int w = fb.vinfo.xres; int h = fb.vinfo.yres; int min_r = 5; int max_r = 200; while (running) { set_color(&fb, rand()); p.x = rand() % w; p.y = rand() % h; double radius = rand() % (max_r - min_r) + min_r; if (p.x - radius < 0 || p.x + radius >= w || p.y - radius < 0 || p.y + radius >= h) { continue; } fill_circle(&fb, p, radius); buffer_swap(&fb); refresh(&fb); usleep(100); } fb_uninit(&fb); return 0; }
int main(int argc,char **argv) { int ret; pthread_t view_id; pid_t view_pid=0,audio_pid=0; // LCD 初始化 fb_init(); // 触摸屏初始化 ts_init(); // 显示一张启动logo show_jpglogo("./image/welcome.jpg"); sleep(3); // 显示控制主界面菜单 show_menu(); ret = pthread_create(&view_id, NULL,picview_thread, NULL); if(ret == -1) goto pthread_create_err; while(1) { // 等待获取坐标 pthread_mutex_lock(&mutex); printf(" main get lock!\n"); m = get_motion(); printf(" main put lock!\n"); pthread_mutex_unlock(&mutex); usleep(1000); switch(m) { case button1: printf("button1 Prev\n"); if(audio_pid != 0) kill(audio_pid,SIGKILL); audio_pid = start_audio(BACKWARD); //kill(view_pid,SIGUSR1); break; case button2: printf("button2 Next\n"); if(audio_pid != 0) kill(audio_pid,SIGKILL); audio_pid = start_audio(FORWARD); //kill(view_pid,SIGUSR2); break; case button3: printf("button3 Stop\n"); kill(audio_pid,SIGSTOP); //kill(view_pid,SIGSTOP); break; case button4: printf("button4 Continue\n"); kill(audio_pid,SIGCONT); //kill(view_pid,SIGCONT); break; case button5: printf("button5 Load\n"); traverse_file_dir("/photo/dir"); //view_pid = start_picview(); signal(SIGCHLD,waitp); break; } } fb_uninit(); ts_uninit(); return 0; pthread_create_err: printf(" pthread_create err!\n"); return -1; }