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

胶南网站建设公司简洁网站模板素材

胶南网站建设公司,简洁网站模板素材,手机助手,网站建站查询目录 一、智能家居项目框架设计草图 二、框架代码文件工程建立 三、添加声音识别模块的串口读取功能 一、智能家居项目框架设计草图 代码思路讲解#xff1a; 1、一个指令工厂#xff0c;一个控制工厂#xff0c;实际上就是通过链表链起来的数据。具体怎么链接起来…目录 一、智能家居项目框架设计草图 二、框架代码文件工程建立 三、添加声音识别模块的串口读取功能 一、智能家居项目框架设计草图 代码思路讲解 1、一个指令工厂一个控制工厂实际上就是通过链表链起来的数据。具体怎么链接起来就是基于简单工厂模式的类与对象的概念上一篇文章有学习记录。 2、主函数语音指令程序和tcp指令程序各起一个线程然后通过指令名字找到对应的控制程序实现对应的模块的功能。 二、框架代码文件工程建立 1、在桌面新建一个项目文件夹smartHose,然后在文件夹中创建如下文件 2、把上述的所有文件都加载到Source lnsight工具中如下图代表加载完毕 3、创建inputCommand.h头文件 //面向指令工厂的头文件 #include wiringPi.h #include stdlib.hstruct InputCommander{char commandName[128]; //名字char command[32]; //指令int (*Init)(char *name,char *ipAdress,char *port); //操作函数 int (*getCommand)(char *cmd); //获取数据函数char log[1024]; //log日志获取struct InputCommander *next; };4、创建contrlDevices.h头文件 //设备头文件 #include wiringPi.hstruct Devices{char deviceName[128]; //名字int status; //状态int pinNum; //引脚int (*open)(int pinNum); //打开int (*close)(int pinNum); //关闭int (*deviceInit)(int pinNum); //设备初始化int (*readStatus)(); //火灾int (*changeStatus)(int status);struct Devices *next; };struct Devices* addBathroomLightToDeviceLink(struct Devices *phead); struct Devices* addUpstairLightToDeviceLink(struct Devices *phead); struct Devices* addLivingRoomLightToDeviceLink(struct Devices *phead); struct Devices* addRestaurantLightToDeviceLink(struct Devices *phead); struct Devices* addFireToDeviceLink(struct Devices *phead); 5、创建bathroomLight.c文件 //浴室的灯 #include contrlDevices.h #includestdlib.hint bathroomLightOpen(int pinNum){digitalWrite(pinNum,LOW); } int bathroomLightClose(int pinNum){digitalWrite(pinNum,HIGH); } int bathroomLightCloseInit(int pinNum){pinMode(pinNum,OUTPUT);digitalWrite(pinNum,HIGH); } int bathroomLightCloseStatus(int status){} struct Devices bathroomLight{.deviceName bathroomLight,.pinNum 26,.open bathroomLightOpen,.close bathroomLightClose,.deviceInit bathroomLightCloseInit,.changeStatus bathroomLightCloseStatus}; struct Devices* addBathroomLightToDeviceLink(struct Devices *phead){if(phead NULL){ return bathroomLight;}else{bathroomLight.next phead;phead bathroomLight;} }; 6、创建livingroomLight.c文件 #include contrlDevices.h #includestdlib.hint livingroomLightOpen(int pinNum){digitalWrite(pinNum,LOW); } int livingroomLightClose(int pinNum){digitalWrite(pinNum,HIGH); } int livingroomLightCloseInit(int pinNum){pinMode(pinNum,OUTPUT);digitalWrite(pinNum,HIGH); } int livingroomLightCloseStatus(int status){} struct Devices livingroomLight{.deviceName livingroomLight,.pinNum 27,.open livingroomLightOpen,.close livingroomLightClose,.deviceInit livingroomLightCloseInit,.changeStatus livingroomLightCloseStatus}; struct Devices* addLivingRoomLightToDeviceLink(struct Devices *phead){if(phead NULL){ return livingroomLight;}else{livingroomLight.next phead;phead livingroomLight;} }; 7、创建restaurantLight.c文件 #include contrlDevices.h #includestdlib.hint restaurantLightOpen(int pinNum){digitalWrite(pinNum,LOW); } int restaurantLightClose(int pinNum){digitalWrite(pinNum,HIGH); } int restaurantLightCloseInit(int pinNum){pinMode(pinNum,OUTPUT);digitalWrite(pinNum,HIGH); } int restaurantLightCloseStatus(int status){} struct Devices restaurantLight{.deviceName restaurantLight,.pinNum 28,.open restaurantLightOpen,.close restaurantLightClose,.deviceInit restaurantLightCloseInit,.changeStatus restaurantLightCloseStatus }; struct Devices* addRestaurantLightToDeviceLink(struct Devices *phead){if(phead NULL){ return restaurantLight;}else{restaurantLight.next phead;phead restaurantLight;} }; 8、创建upstairLight.c文件 //二楼灯 #include contrlDevices.h #includestdlib.hint upstairLightOpen(int pinNum){digitalWrite(pinNum,LOW); } int upstairLightClose(int pinNum){digitalWrite(pinNum,HIGH); } int upstairLightCloseInit(int pinNum){pinMode(pinNum,OUTPUT);digitalWrite(pinNum,HIGH); } int upstairLightCloseStatus(int status){} struct Devices upstairLight{.deviceName upstairLight,.pinNum 29,.open upstairLightOpen,.close upstairLightClose,.deviceInit upstairLightCloseInit,.changeStatus upstairLightCloseStatus }; struct Devices* addUpstairLightToDeviceLink(struct Devices *phead){if(phead NULL){ return upstairLight;}else{upstairLight.next phead;phead upstairLight;} }; 9、创建fire.c文件 //火灾报警 #include contrlDevices.h #includestdlib.hint fireIfOrNotInit(int pinNum){pinMode(pinNum,INPUT);digitalWrite(pinNum,HIGH); } int fireStatusRead(int pinNum){return digitalRead(pinNum); } struct Devices fireIfOrNot{.deviceName fireIfOrNot,.pinNum 25,.deviceInit fireIfOrNotInit,.readStatus fireStatusRead}; struct Devices* addFireToDeviceLink(struct Devices *phead){if(phead NULL){ return fireIfOrNot;}else{fireIfOrNot.next phead;phead fireIfOrNot;} }; 10、创建mainPro.c主函数文件 #include stdio.h #include contrlDevices.h #include string.h #include inputCommand.hstruct Devices* findDeviceByName(char* name,struct Devices* phead){struct Devices *tmp phead;if(phead NULL){return NULL;}else{while(tmp ! NULL){if(strcmp(tmp-deviceName,name) 0){return tmp;}tmp tmp-next;}return NULL;} };int main(){char name [128];struct Devices *tmp NULL;if(-1 wiringPiSetup()){return -1;}struct Devices *pdeviceHead NULL;pdeviceHead addBathroomLightToDeviceLink(pdeviceHead);pdeviceHead addUpstairLightToDeviceLink(pdeviceHead);pdeviceHead addLivingRoomLightToDeviceLink(pdeviceHead);pdeviceHead addRestaurantLightToDeviceLink(pdeviceHead);pdeviceHead addFireToDeviceLink(pdeviceHead);while(1){printf(Input:\n);scanf(%s,name);tmp findDeviceByName(name,pdeviceHead);if(tmp ! NULL){tmp-deviceInit(tmp-pinNum);tmp-open(tmp-pinNum);}}//1、指令工厂初始化//2、设备控制工厂初始化//3、线程池建立//3.1、语音线程//3.2、socket线程//3.3、摄像头线程//3.4、火灾线程 } 把上述的代码传到树莓派的终端用FileZilla传即可然后执行结果 gcc mainPro.c upstairLight.c bathroomLight.c livingroomLight.c restaurantLight.c -lwiringPi -o test1 效果演示虽然没有装到实际的智能家居里但是小灯亮了说明程序是可以正常用的 三、添加声音识别模块的串口读取功能 这里主要通过主控芯片树莓派的串口跟语音模块连接。 树莓派的T接语音模块的R 树莓派的R接语音模块的T 然后就是供电 我们先把语音模块的代码整合到指令链表当中去1.语音控制设备voiceContrl.c #include inputCommand.h #include stdlib.h #include wiringPi.h #include stdio.h #include wiringSerial.h #include unistd.h//串口int voiceInit(struct InputCommander *voicer,char *ipAdress,char *port){ //声音初始化int fd;if((fd serialOpen(voicer-deviceName,9600)) -1){ //初始化串口波特率9600exit(-1);}voicer-fd fd;return fd; } int voiceGetCommand(struct InputCommander *voicer){int nread 0;nread (voicer-fd,voicer-command,sizeof(voicer-command));if(nread 0){printf(usart for voice read over time\n);}else{return nread;} } struct InputCommander voiceContrl {.commandName voice, .deviceName dev/ttyAMA0,.command {\0},.Init voiceInit,.getCommand voiceGetCommand,.log {\0},.next NULL,}; struct InputCommander* addvoiceContrlToInputCommandLink(struct InputCommander *phead){if(phead NULL){return voiceContrl;}else{voiceContrl.next phead;phead voiceContrl;} }; 2.控制设备的头文件inputCommand.h //面向指令工厂的头文件 #include wiringPi.h #include stdlib.hstruct InputCommander{char commandName[128]; //声音的名字char command[32]; char deviceName[128]; //串口的名字int (*Init)(struct InputCommander *voicer,char *ipAdress,char *port); int (*getCommand)(struct InputCommander *voicer);char log[1024];int fd;struct InputCommander *next;}; struct InputCommander* addvoiceContrlToInputCommandLink(struct InputCommander *phead); 3.在mainPro.c主函数中添加语音模块的函数 #include stdio.h #include contrlDevices.h #include string.h #include inputCommand.hstruct Devices* findDeviceByName(char* name,struct Devices* phead){struct Devices *tmp phead;if(phead NULL){return NULL;}else{while(tmp ! NULL){if(strcmp(tmp-deviceName,name) 0){return tmp;}tmp tmp-next;}return NULL;} }; int main(){char name [128];struct Devices *tmp NULL;if(-1 wiringPiSetup()){return -1;}struct Devices *pdeviceHead NULL; //设备工厂struct InputCommander *pCommandHead NULL; //指令工厂pdeviceHead addBathroomLightToDeviceLink(pdeviceHead);pdeviceHead addUpstairLightToDeviceLink(pdeviceHead);pdeviceHead addLivingRoomLightToDeviceLink(pdeviceHead);pdeviceHead addRestaurantLightToDeviceLink(pdeviceHead);pdeviceHead addFireToDeviceLink(pdeviceHead); //火灾pCommandHead addvoiceContrlToInputCommandLink(pCommandHead); //串口while(1){printf(Input:\n);scanf(%s,name);tmp findDeviceByName(name,pdeviceHead);if(tmp ! NULL){tmp-deviceInit(tmp-pinNum);tmp-open(tmp-pinNum);}} } 4.把上述的代码传到树莓派的终端用FileZilla传即可然后执行结果 gcc mainPro.c upstairLight.c bathroomLight.c fire.c livingroomLight.c restaurantLight.c voiceContrl.c -lwiringPi -o test1
http://www.yayakq.cn/news/1780/

相关文章:

  • wordpress个人网站模板江苏网站建设方案
  • 怎么建设网站是什么网站报价方案范文
  • 手机网站电话漂浮代码深圳酒店网站建设
  • m版网站开发福州建设注册中心网站
  • 做自媒体那几个网站好点衡东网络推广公司
  • 如何把自己做的网站连上网安徽平台网站建设制作
  • 珠海公司网站设计多语种网站营销
  • 深圳网站建设网站推广的方法朝西村网站建设公司
  • 佛山快速建站哪家服务专业wordpress搬运小红书内容
  • 保定网站模板建站简述seo
  • 做侵权网站用哪里的服务器做定制网站怎么样
  • 昆山网站开发建设公司柳州网站建设推荐
  • 阜宁县网站建设前端微信小程序开发
  • 自助建站免费申请个人网页沧州网站制作教程
  • 苍溪网站建设制作安卓手机网站开发
  • 在凡科做网站编辑同城的网站建设
  • 哪些企业必须用网站网络优化关键词
  • 长沙网站建设网站wordpress theme 插件
  • 网站建设规划方案书网站开发项目可行性
  • 视频网站开发前景如何买网站服务器要多少钱一年
  • 建设银行浙江网站物流网络规划与设计
  • 移动端网站建设的方案唐山网站制作价格
  • ps个人网站的首页界面wordpress滑动插件
  • 深圳做网站(推荐乐云践新)wordpress网站商务通
  • 常见的静态网站开发技术甘肃建设银行网站
  • 云南网站建设天软科技网站开发量
  • 中科建建设发展有限公司网站湖南省工商注册登记网
  • 营销企业网站建设应遵守的原则重庆商城网站建设地址
  • 广州游戏网站建设南宁做网站哪家好
  • 手机网站排名优化江苏中南建设集团网站是多少