📄 server.c
字号:
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 + -