⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.c

📁 实现图片手工播放或者是自动播放的后台文件
💻 C
📖 第 1 页 / 共 2 页
字号:
	        write(fd, picfilename, strlen(picfilename));                close(fd);                printf("manual play succ!!\n");            }               /**回传成功播放信息***/            cmdmessage.cmdtype[0] = 0;            cmdmessage.cmdtype[1] = 0;            cmdmessage.cmdtype[2] = 0;            cmdmessage.cmdtype[3] = 3;            ret = write(sock, (unsigned char *)&cmdmessage, sizeof(struct cmd)) ;            if ( ret < 0 )            {                printf("Write socket Error! in 3004 !!\n");                sleep(5);                picplayinit();                /*****回到开机图片******/                pthread_exit(NULL);            }        }        else if (cmdmessage.cmdtype[0] == 8)             /***暂停播放****/        {            /*****告诉线程暂停播放******/            auto_play = 0;            auto_pause = 1;            auto_stop  = 0;            /**回传成功播放信息***/            cmdmessage.cmdtype[0] = 0;            cmdmessage.cmdtype[1] = 0;            cmdmessage.cmdtype[2] = 0;            cmdmessage.cmdtype[3] = 3;            ret = write(sock, (unsigned char *)&cmdmessage, sizeof(struct cmd)) ;            if ( ret < 0 )            {                printf("Write socket Error! in 3008 !!\n");                sleep(5);                picplayinit();                /*****回到开机图片******/                pthread_exit(NULL);            }        }        else if (cmdmessage.cmdtype[0] == 0x10)           /***停止播放****/        {            /*****告诉线程停止播放******/            auto_play = 0;            auto_pause = 0;            auto_stop  = 1;            play = 0;            thread_play = 0;             pic_no = 0;            /**回传成功播放信息***/            cmdmessage.cmdtype[0] = 0;            cmdmessage.cmdtype[1] = 0;            cmdmessage.cmdtype[2] = 0;            cmdmessage.cmdtype[3] = 3;            ret = write(sock, (unsigned char *)&cmdmessage, sizeof(struct cmd)) ;            if ( ret < 0 )            {                printf("Write socket Error! in 3008 !!\n");                sleep(5);                picplayinit();                /*****回到开机图片******/                pthread_exit(NULL);            }            sleep(5);            picplayinit();                    /*****回到开机图片******/            printf("stop play succ!!\n");            pthread_exit(NULL);            //exit(-1);        }        else if (cmdmessage.cmdtype[1] == 1)             /**上一幅图片***/        {            /****处理工程文件****/            if (prj == 0)            {                handleprj();            }            if ( prj != 1)            {                /***打开工程文件失败***/                cmdmessage.cmdtype[0] = 0x10;                cmdmessage.cmdtype[1] = 0;                cmdmessage.cmdtype[2] = 0;                cmdmessage.cmdtype[3] = 3;                ret = write(sock, (unsigned char *)&cmdmessage, sizeof(struct cmd)) ;                if ( ret < 0 )                {            	    printf("Write socket Error! in 3010 !!\n");                    sleep(5);                    picplayinit();                /*****回到开机图片******/                    pthread_exit(NULL);                }            	printf("Has no picproject!!\n");                sleep(5);                picplayinit();                /*****回到开机图片******/                pthread_exit(NULL);            }            if (playtype == 0)            {            	 printf("Playtype errot!!\n");                 pthread_exit(NULL);            }            /****检查是否已经下一幅播放过****/            manual_next_total  = j;            j--;            if (j < 0)            {                /****如果是上一幅播放图片序号小于 0 则到手工播放最后一幅*****/                j = manual_prio_temp-1;                           pic_no = manual_history[j];            }            else            {                  /*** manual_history数组保存了下一幅图片播放历史记录****/                 pic_no = manual_history[j];            }            /***查找需要播放图片的保存文件名称****/            sprintf(picfilename, "%s%d%s", str1, pic_no, str2);            printf("picfilename = [%s]\n", picfilename);            /***将文件名称写文件***/	    if((fd=open(filename, O_CREAT||O_TRUNC))==-1)	    {	        fprintf(stderr,"Open %s Error:%s\n",filename, strerror(errno));                sleep(5);                picplayinit();                /*****回到开机图片******/                pthread_exit(NULL);	    }	    write(fd, picfilename, strlen(picfilename));	    close(fd);            /**回传成功播放信息***/            cmdmessage.cmdtype[0] = 0;            cmdmessage.cmdtype[1] = 0;            cmdmessage.cmdtype[2] = 0;            cmdmessage.cmdtype[3] = 3;            ret = write(sock, (unsigned char *)&cmdmessage, sizeof(struct cmd)) ;            if ( ret < 0 )            {                printf("Write socket Error! in 3010 !!\n");                sleep(5);                picplayinit();                /*****回到开机图片******/                pthread_exit(NULL);            }            printf("the prio  pic play succ!!\n");        }        else if (cmdmessage.cmdtype[1] == 2)             /**下一幅图片***/        {            /****处理工程文件****/            if (prj == 0)            {                handleprj();            }            if ( prj != 1)            {                /***打开工程文件失败***/                cmdmessage.cmdtype[0] = 0x10;                cmdmessage.cmdtype[1] = 0;                cmdmessage.cmdtype[2] = 0;                cmdmessage.cmdtype[3] = 3;                ret = write(sock, (unsigned char *)&cmdmessage, sizeof(struct cmd)) ;                if ( ret < 0 )                {            	    printf("Write socket Error! in 3020 !!\n");                    sleep(5);                    picplayinit();                /*****回到开机图片******/                    pthread_exit(NULL);                }            	printf("Has no pic projectfile!!\n");                sleep(5);                picplayinit();                /*****回到开机图片******/                pthread_exit(NULL);            }            if (playtype == 0)            {            	printf("Playtype errot!!\n");                sleep(5);                picplayinit();                /*****回到开机图片******/                pthread_exit(NULL);            }            /****取得下一幅图片的播放序号****/            if (files[pic_no].nextpic == -1)            {                pic_no++;            }            else            {                pic_no = files[files[pic_no].nextpic].id;            }             /********如果是手工播放到最后一副则从头播放********/            if (pic_no >= pic_total)            {                pic_no = 0;            }            /*****保存手工下一幅图片播放的顺序****/            j = manual_next_total;            printf("in 3020 j = [%d]\n", j);            manual_history[j] =  files[pic_no].id;            manual_next_total++;            /*******保存暂时的图片总数*******/            manual_prio_temp = manual_next_total;            for( k=0; k< manual_next_total; k++)            {	        printf("manual_history[%d] = [%d]\n", k, manual_history[k]);            }    printf("manual_next_total = [%d]\n", manual_next_total);            /***查找需要播放图片的保存文件名称****/            sprintf(picfilename, "%s%d%s", str1, pic_no, str2);    printf("picfilename = [%s]\n", picfilename);                        /***将文件名称写文件***/	    if((fd=open(filename, O_CREAT||O_TRUNC))==-1)	    {	        fprintf(stderr,"Open %s Error:%s\n",filename, strerror(errno));                sleep(5);                picplayinit();                /*****回到开机图片******/                pthread_exit(NULL);	    }	    write(fd, picfilename, strlen(picfilename));	    close(fd);            /**回传成功播放信息***/            cmdmessage.cmdtype[0] = 0;            cmdmessage.cmdtype[1] = 0;            cmdmessage.cmdtype[2] = 0;            cmdmessage.cmdtype[3] = 3;            ret = write(sock, (unsigned char *)&cmdmessage, sizeof(struct cmd)) ;            if ( ret < 0 )            {                printf("Write socket Error! in 3020 !!\n");                sleep(5);                picplayinit();                /*****回到开机图片******/                pthread_exit(NULL);            }            printf("the next pic play succ!!\n");        }        else         {            /**回传未知错误***/            cmdmessage.cmdtype[0] = 2;            cmdmessage.cmdtype[1] = 0;            cmdmessage.cmdtype[2] = 0;            cmdmessage.cmdtype[3] = 3;            ret = write(sock, (unsigned char *)&cmdmessage, sizeof(struct cmd)) ;            if ( ret < 0 )            {                printf("Write socket Error!!!\n");                sleep(5);                picplayinit();                /*****回到开机图片******/                pthread_exit(NULL);            }            printf("unkown error!!\n");            /*****告诉线程停止播放******/            auto_play = 0;            auto_pause = 0;            auto_stop  = 1;            sleep(5);            picplayinit();                /*****回到开机图片******/        }    }    pthread_exit(NULL);}voidservicepic (int picno){    int  ret, fd;    int  play_pic;        play_pic = picno;    sprintf(filename, "%s", "test.txt");    while (1)    {        if ( auto_play == 1)                     /***自动播放***/        {            pic_no = play_pic;            printf("111 in servicepic pic_no = [%d]\n", pic_no);            sleep(files[pic_no].delaytime);            /***查找需要播放图片的保存文件名称****/            sprintf(picfilename, "%s%d%s", str1, pic_no, str2);            /****将要播放的图片名称写文件***/	    if((fd=open(filename, O_CREAT||O_TRUNC))==-1)	    {	        fprintf(stderr,"Open %s Error:%s\n",filename, strerror(errno));                pthread_exit(NULL);	    }	    write(fd, picfilename, strlen(picfilename));	    close(fd);            /****取得下一幅图片的播放序号****/            if (files[pic_no].nextpic == -1)            {                pic_no++;                play_pic = pic_no;             }            else            {                play_pic = files[files[pic_no].nextpic].id;            }            if (play_pic > pic_total)            {                 play_pic = 0;            }        }        if (auto_pause == 1)                     /***暂停播放***/        {            //sleep(files[pic_no].delaytime);            printf(" 232323 in servicepic pic_no = [%d]\n", pic_no);            play_pic = pic_no;     /*如果重新自动播放保存暂停播放图片序号*/            /******            if (files[pic_no].nextpic == -1)            {                play_pic++;             }            else            {                play_pic = files[files[pic_no].nextpic].id;            }            if (play_pic > pic_total)            {                 play_pic = 0;            }            ********/        }        if (auto_stop == 1)                      /***停止播放***/        {            pthread_exit(NULL);        }    }}voidhandleprj(){    int     i, fd;    int     retfgets;    FILE    *fdppj;    struct  cmd      cmdmessage;    struct  pichead  picheadmessage;    struct  pic      picmessage;    fdppj = fopen("temp.ppj", "r");    if(fdppj == NULL)    {        /***工程文件不存在***/         prj = 0;    }    else     {        /***工程文件存在***/        prj = 1;        /****播放时候设置播放序列****/        retfgets = fread((unsigned char*)&picheadmessage, 1, sizeof(struct pichead), fdppj);        /*************设置播放方式***********/        playtype  = picheadmessage.playtype;        /****取得图片文件总数*****/        pic_total = picheadmessage.piccount;        for (i=0; i<picheadmessage.piccount; i++)        {    	    /*****从工程文件中读取下个图片文件的信息 包括图片的大小******/    	    retfgets = fread((unsigned char*)&picmessage, 1, sizeof(struct pic), fdppj);	    /***下载时候图片名称已经重命名***/ 	    files[i].id = i;	    files[i].nextpic = picmessage.nextpic;	    files[i].delaytime = picmessage.delay;	    memset(files[i].file_title, 0, sizeof(char)*50);	    strcpy(files[i].file_title, picmessage.title);        }      }    close(fdppj);    /******自己测试用**分析工程文件***/    //for (i=0; i<pic_total; i++)    //{         //printf("\tid = [%d], nextpic = [%d]\n\tdelaytime = [%d] title = [%s]\n", files[i].id, files[i].nextpic, files[i].delaytime, files[i].file_title);    //}}voidpicplayinit(){    int  ret, fd;    int  play_pic;        sprintf(filename, "%s", "test.txt");    sprintf(picfilename, "home19.jpg");    /****将要播放的图片名称写文件****/    if((fd=open(filename, O_CREAT||O_TRUNC))==-1)    {        fprintf(stderr,"Open %s Error:%s\n",filename, strerror(errno));        exit(1);    }    write(fd, picfilename, strlen(picfilename));    close(fd);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -