当前位置: 首页 > news >正文

优化网站网站静态页面

优化网站,网站静态页面,淘宝优惠券网站用什么软件做,宣传片拍摄方案范本封装语音线程#xff08;语音通过串口和主控设备进行交流#xff09;实现对智能家居中各种灯光的控制 mainPro.c(主函数) #include stdio.h #include controlDevice.h #include inputCommand.h #include pthread.hstruct Devices …封装语音线程语音通过串口和主控设备进行交流实现对智能家居中各种灯光的控制 mainPro.c(主函数) #include stdio.h #include controlDevice.h #include inputCommand.h #include pthread.hstruct Devices *pdeviceHead NULL; //设备工厂链表头 struct InputCommander *pcommandHead NULL; //指令工厂链表头struct Devices* findDeviceByName(struct Devices *phead,char *name) //在设备链表中查找设备语音和socket均可使用 {struct Devices *tmp phead;if(tmp NULL){printf(The devicesLink is NULL);return NULL;}else{while(tmp ! NULL){if(strcmp(tmp-deviceName,name) 0){return tmp;}tmp tmp-next;}return NULL; }}struct InputCommander* findCommanderByName(struct InputCommander *phead,char *name) //在控制链表中查找相关控制 {struct InputCommander *tmp phead;if(tmp NULL){printf(The commanderLink is NULL);return NULL;}else{while(tmp ! NULL){if(strcmp(tmp-commandName,name) 0){return tmp;}tmp tmp-next;}return NULL; }}void doCommand(struct InputCommander *cmd) //根据传入的命令控制相关设备 {struct Devices *tmp NULL;if(strstr(cmd-command,START)){ //初始化所有设备tmp findDeviceByName(pdeviceHead,bathroomLight);if(tmp ! NULL) tmp-deviceInit(tmp-pinNum);tmp findDeviceByName(pdeviceHead,bedroomLight);if(tmp ! NULL) tmp-deviceInit(tmp-pinNum);tmp findDeviceByName(pdeviceHead,livingroomLight);if(tmp ! NULL) tmp-deviceInit(tmp-pinNum);tmp findDeviceByName(pdeviceHead,restaurantLight);if(tmp ! NULL) tmp-deviceInit(tmp-pinNum);printf(The devices all init success\n);}else if(strstr(cmd-command,OL1)){ //打开卫生间灯tmp findDeviceByName(pdeviceHead,bathroomLight);if(tmp ! NULL) tmp-open(tmp-pinNum);printf(The bathroomLight already open\n);}else if(strstr(cmd-command,CL1)){ //关闭卫生间灯tmp findDeviceByName(pdeviceHead,bathroomLight);if(tmp ! NULL) tmp-close(tmp-pinNum);printf(The bathroomLight already close\n);}else if(strstr(cmd-command,OL2)){ //打开卧室灯tmp findDeviceByName(pdeviceHead,bedroomLight);if(tmp ! NULL) tmp-open(tmp-pinNum);printf(The bedroomLight already open\n);}else if(strstr(cmd-command,CL2)){ //关闭卧室灯tmp findDeviceByName(pdeviceHead,bedroomLight);if(tmp ! NULL) tmp-close(tmp-pinNum);printf(The bedroomLight already close\n);}else if(strstr(cmd-command,OL3)){ //打开客厅灯tmp findDeviceByName(pdeviceHead,livingroomLight);if(tmp ! NULL) tmp-open(tmp-pinNum);printf(The livingroomLight already open\n);}else if(strstr(cmd-command,CL3)){ //关闭客厅灯tmp findDeviceByName(pdeviceHead,livingroomLight);if(tmp ! NULL) tmp-close(tmp-pinNum);printf(The livingroomLight already close\n);}else if(strstr(cmd-command,OL4)){ //打开餐厅灯tmp findDeviceByName(pdeviceHead,restaurantLight);if(tmp ! NULL) tmp-open(tmp-pinNum);printf(The restaurantLight already open\n);}else if(strstr(cmd-command,CL4)){ //关闭餐厅灯tmp findDeviceByName(pdeviceHead,restaurantLight);if(tmp ! NULL) tmp-close(tmp-pinNum);printf(The restaurantLight already close\n);}else if(strstr(cmd-command,ALL1)){ //打开所有的灯tmp findDeviceByName(pdeviceHead,bathroomLight);if(tmp ! NULL) tmp-open(tmp-pinNum);tmp findDeviceByName(pdeviceHead,bedroomLight);if(tmp ! NULL) tmp-open(tmp-pinNum);tmp findDeviceByName(pdeviceHead,livingroomLight);if(tmp ! NULL) tmp-open(tmp-pinNum);tmp findDeviceByName(pdeviceHead,restaurantLight);if(tmp ! NULL) tmp-open(tmp-pinNum);printf(The Light all open success\n);}else if(strstr(cmd-command,ALL0)){ //关闭所有的灯tmp findDeviceByName(pdeviceHead,bathroomLight);if(tmp ! NULL) tmp-close(tmp-pinNum);tmp findDeviceByName(pdeviceHead,bedroomLight);if(tmp ! NULL) tmp-close(tmp-pinNum);tmp findDeviceByName(pdeviceHead,livingroomLight);if(tmp ! NULL) tmp-close(tmp-pinNum);tmp findDeviceByName(pdeviceHead,restaurantLight);if(tmp ! NULL) tmp-close(tmp-pinNum);printf(The Light all close success\n);}}void* voice_pthread(void *data) //语音识别串口通信处理线程函数 {struct InputCommander *voiceHandler;int n_read;voiceHandler findCommanderByName(pcommandHead,voice);if(voiceHandler NULL){printf(find voice error\n);pthread_exit(NULL);}else{if(voiceHandler-Init(voiceHandler) 0 ){printf(%s init error\n,voiceHandler-commandName);pthread_exit(NULL);}elseprintf(%s init success\n,voiceHandler-commandName);while(1){n_read voiceHandler-getCommand(voiceHandler);if(n_read 0){printf(no command from voice\n);}else{//根据指令进行控制printf(read %d message--:%s,n_read,voiceHandler-command);doCommand(voiceHandler); //执行命令}}}}int main() {pthread_t voice_pth;if(wiringPiSetup()0){//初始化wiringPi外设库printf(wiringPi Init failed\n);return -1;}//1.指令工厂初始化pcommandHead addVoiceToCommandLink(pcommandHead); //将语音控制加入命令控制链表//2.设备控制工厂初始化pdeviceHead addBathroomLightToDeviceLink(pdeviceHead); //将卫生灯加入设备链表pdeviceHead addbedroomLightToDeviceLink(pdeviceHead); //将卧室灯加入设备链表pdeviceHead addRestaurantLightToDeviceLink(pdeviceHead); //将餐厅灯加入设备链表pdeviceHead addLivingroomLightToDeviceLink(pdeviceHead); //将客厅灯加入设备链表pdeviceHead addFireToDeviceLink(pdeviceHead); //将火灾检测加入设备链表pdeviceHead addBeepToDeviceLink(pdeviceHead); //将蜂鸣器加入设备链表//3.线程池建立//3.1语音线程int ret pthread_create(voice_pth,NULL,voice_pthread,NULL);if (ret ! 0) {printf(Failed to create voicethread.\n);return -1;}//等待线程退出pthread_join(voice_pth,NULL);return 0; } inputCommand.h(控制类) #include wiringPi.h #include stddef.h #include wiringSerial.h #include stdio.h #include unistd.h #include sys/types.h #include sys/socket.h #include stdlib.h #include arpa/inet.h #include netinet/in.h #include string.hstruct InputCommander {char commandName[128]; //命令名字char command[32]; //具体命令char deviceName[128]; //打开的设备名比如串口char port[12]; //端口号char ipAddress[32]; //ip地址int (*Init)(struct InputCommander *commder);int (*getCommand)(struct InputCommander *commder);int fd; //文件描述符int baud; //波特率int s_fd; //socket服务端文件描述符int c_fd; //客户端文件描述符char log[1024]; //日志struct InputCommander *next; };struct InputCommander *addVoiceToCommandLink(struct InputCommander *phead); //语音控制加入命令控制链表voiceControl.c(语音) #include inputCommand.hint voiceInit(struct InputCommander *voiceMes) {int fd;fd serialOpen(voiceMes-deviceName,voiceMes-baud);//打开串口if(fd0){printf(open serial fail!\r\n);//判断串口打开是否成功return -1;}elsevoiceMes-fd fd;//传回串口文件描述符return fd;}int voiceGetCommand(struct InputCommander *voiceMes){int nread 0;memset(voiceMes-command,0,sizeof(voiceMes-command));nread read(voiceMes-fd,voiceMes-command,sizeof(voiceMes-command));return nread;}struct InputCommander voiceControl {.commandName voice,.command {\0},.deviceName /dev/ttyAMA0,.baud 9600,.Init voiceInit,.getCommand voiceGetCommand,.log {\0},.next NULL,};struct InputCommander *addVoiceToCommandLink(struct InputCommander *phead) {if(phead NULL){return voiceControl;}else{voiceControl.nextphead;phead voiceControl;return phead;} }
http://www.sadfv.cn/news/321821/

相关文章:

  • 招牌做的好的网站vs做网站的书籍
  • 江苏 江苏省住房和城乡建设厅网站wordpress文章列表摘要
  • 唐山做网站的美食网站开发的原则
  • 可以用自己的电脑做网站吗网站建设概要设计
  • 网站安装教程产品互联网做推广做什么网站好
  • wordpress开启多站点功地推团队如何收费
  • 衡水做网站报价wordpress实现圈子功能
  • 邢台网站优化公司做搜狗手机网站优化点
  • 漳州网站开发制作wordpress菜单标题属性
  • 查询建设规范的网站射阳网站设计
  • 东莞中企动力做网站做网站廊坊
  • wordpress 点击图片跳转seo顾问服
  • ps网站首页设计网站域名服务器查询
  • 网站维护服务内容什么网站做简历免费下载
  • 营销型网站建设域名泰安有哪些景点
  • 六数字域名做网站好不好设计网站的三个要素
  • 网站建设团队分工android开发app
  • 动易医院网站管理系统企业网站建设方案有那些
  • 鹤壁做网站价格重庆消防网
  • flash个人网站首页模板wordpress和di
  • 如何分析网站功能上海专业网站建设案例
  • 网站开发与维护总结郑州app外包公司
  • 常州seo网站推广网站 费用
  • 网站开发下载功能如何实现做的好的学校网站
  • 营销型网站建站步骤是什么意思如何开wordpress网站
  • 网站建设 数据库连接服务号 wordpress
  • 如何建立自己的网站?wordpress自定义弹窗
  • 邢台企业网站制作公司网站建设微信商城多少钱
  • 网站降权原因网站推广怎么做 知乎
  • 网站后台和前台软件著作权