单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:1858|回复:1

基于S5P6818芯片智能家居程序

[复制链接]
ID:997724发表于 2022-5-8 17:32|显示全部楼层
当用户进入到系统主界面之后,能够使用触摸屏来实现智能家居功能模块的切换以及选择,控制家庭娱乐相册的显示切换上下图像,切换音频播放,切换视频播放。整个项目综合运用了目前主流的嵌入式开发技术,包括linux驱动,音视频开发等等。

#include< stdio.h>//fopen
#include< errno.h>//perror
#include< stdlib.h>//exit
#include< sys/types.h>//open
#include< sys/stat.h>//open
#include< fcntl.h>//open
#include< sys/mman.h>//mmap
#include< linux/input.h>//struct input event
#include< stdlib.h>
#include< strings.h>

int  fd_event0 = 0;
char video_path[100]="/root/smart_home/video_file/1.avi";
char audio_path[100]="/root/smart_home/audio_file/1.mp3";
int  flag=0;

int  open_touch_screen(void);
int  close_touch_screen(void);
int  read_touch_screen_information(int  *x,   int  *y);
int  S5P6818_bmp_24_800_480(const char *path);
int  picture_system(void);
int  main_system(void);
int  pic_circular_spread_right(char *pathname);
int  video_system(void);
int  audio_system(void);
int  play(char *mp3path, int select);
int  stop(int select);
int  cont(int select);
int  quit(int select);
int  next(int select);
int  last(int select);
int  back(void);

int main(int argc, char *argv[])
{
       main_system();
       return 0;
}


int  main_system(void)
{
       int get_x=0, get_y=0;
       char bmp_path[100]="/root/smart_home/images/jiemian.bmp";
   S5P6818_bmp_24_800_480(bmp_path);
    
       open_touch_screen();
    
       while(1)
       {
           read_touch_screen_information(&get_x,& get_y);
           printf("(x,y):(%d,%d)\n", get_x, get_y);
          
           if(get_x>=640&&get_x<=760&&get_y>=35&&get_y<=130){

           picture_system();
             }
         else if(get_x>=640&&get_x<=760&&get_y>=195&&get_y<=295){

             video_system();
           }
         else if(get_x>=640&&get_x<=760&&get_y>=300&&get_y<=455)
           {

             audio_system();
           }
           else{
             printf("============\n");
             }
       }
    
       close_touch_screen();
}

int  picture_system(void)
{
       int get_x=0, get_y=0;
       char bmp_path[100]="/root/smart_home/images/001.bmp";
   S5P6818_bmp_24_800_480(bmp_path);
    
       open_touch_screen();
    
       while(1)
       {
           read_touch_screen_information(&get_x,& get_y);
           printf("(x,y):(%d,%d)\n", get_x, get_y);
           if(get_x>=0&&get_x<=310&&get_y>45&&get_y<=480){
                
           bmp_path[26]=bmp_path[26]-1;
             if(bmp_path[26]== '0'){
                   bmp_path[26]=  '9';
             }
             pic_circular_spread_right(bmp_path);
         }
         else if(get_x>=500&&get_x<=775&&get_y>45&&get_y<=480){
           bmp_path[26]=bmp_path[26]+1;
             if(bmp_path[26]=='9'){
                   bmp_path[26]='0';
             }
             pic_circular_spread_right(bmp_path);
           }
           else if(get_x>755&&get_x<=800&&get_y>=0&&get_y<=45){
                 back();
           }
         else
           {
             printf("=============\n");
           }
       }
    
       close_touch_screen();
}

int  video_system(void)
{
       int ts_x, ts_y;
       int get_x=0, get_y=0;
       char bmp_path[100]="/root/smart_home/images/video.bmp";
   S5P6818_bmp_24_800_480(bmp_path);
    
       open_touch_screen();
    
       while(1)
       {
           read_touch_screen_information(&get_x,& get_y);
           printf("(x,y):(%d,%d)\n", get_x, get_y);
          
           if(get_x>=290&&get_x<=480&&get_y>=300&&get_y<=480&&flag==0){
                 printf("====play======\n");
           play(video_path,1);
         }
         else if(get_x>=290&&get_x<=480&&get_y>=300&&get_y<=480&&flag==1){
                 printf("====stop======\n");
           stop(1);
           }
         else if(get_x>=290&&get_x<=480&&get_y>=300&&get_y<=480&&flag==2){
                 printf("====continue======\n");
           cont(1);
           }
           else if(get_x>=200&&get_x<290&&get_y>=300&&get_y<=480){
                 printf("====last======\n");
                 last(1);
           }
           else if(get_x>510&&get_x<=610&&get_y>=300&&get_y<=480){
                 printf("====next======\n");
                 next(1);
           }
           else if(get_x>700&&get_x<=780&&get_y>=390&&get_y<=480){
                 quit(1);
                 back();
           }
           else{
             printf("=============\n");
             }
       }
    
       close_touch_screen();
}

int  audio_system(void)
{
       int ts_x, ts_y;
       int get_x=0, get_y=0;
       char bmp_path[100]="/root/smart_home/images/music.bmp";
   S5P6818_bmp_24_800_480(bmp_path);
    
       open_touch_screen();
    
       while(1)
       {
           read_touch_screen_information(&get_x,& get_y);
           printf("(x,y):(%d,%d)\n", get_x, get_y);
          
           if(get_x>=370&&get_x<=440&&get_y>=390&&get_y<=480&&flag==0){
                 printf("====play======\n");
           play(audio_path,2);
         }
         else if(get_x>=370&&get_x<=440&&get_y>=390&&get_y<=480&&flag==1){
                 printf("====stop======\n");
           stop(2);
           }
         else if(get_x>=370&&get_x<=440&&get_y>=390&&get_y<=480&&flag==2){
                 printf("====continue======\n");
           cont(2);
           }
           else if(get_x>=290&&get_x<350&&get_y>=390&&get_y<=480){
                 printf("====last======\n");
                 last(2);
           }
           else if(get_x>460&&get_x<=520&&get_y>=390&&get_y<=480){
                 printf("====next======\n");
                 next(2);
           }
           else if(get_x>755&&get_x<=800&&get_y>=0&&get_y<=45){
                 quit(2);
                 back();
           }
           else{
             printf("================\n");
             }
       }
    
       close_touch_screen();
}

int back(void)
{
       flag=0;
       main_system();
       return 0;
}

int play(char *mp3path, int select)
{
       char cmd[100]={0};
       switch(select)
       {
           case  1:
                 sprintf(cmd," mplayer  %s -zoom -x 800 -y 385& ",video_path);
           break;
           case  2:
               sprintf(cmd," madplay  %s  &",audio_path);
           break;
           default:
           break;
       }
       printf("%s\n", cmd);
       system(cmd);
       flag=1;
       return 0;
}

int stop(int select)
{
       switch(select)
       {
           case  1:
                 system("killall -STOP mplayer");
           break;
           case  2:
               system("killall -STOP madplay");
           break;
           default:
           break;
       }

    
       flag=2;
       return 0;
}

int cont(int select)
{
       switch(select)
       {
           case  1:
                 system("killall -CONT mplayer");
           break;
           case  2:
               system("killall -CONT madplay");
           break;
           default:
           break;
       }
       flag=1;
       return 0;
}
ID:690781发表于 2022-11-30 08:44|显示全部楼层
不错,多谢分享

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网