目录
一、智能家居项目框架设计草图
代码思路讲解:
1、一个指令工厂,一个控制工厂,实际上就是通过链表链起来的数据。具体怎么链接起来,就是基于简单工厂模式的类与对象的概念,上一篇文章有学习记录。
2、主函数语音指令程序和tcp指令程序各起一个线程,然后通过指令名字找到对应的控制程序,实现对应的模块的功能。
二、框架代码文件工程建立
1、在桌面新建一个项目文件夹smartHose,然后在文件夹中创建如下文件:
2、把上述的所有文件,都加载到Source lnsight工具中,如下图代表加载完毕
3、创建inputCommand.h头文件
//面向指令工厂的头文件
#include <wiringPi.h>
#include <stdlib.h>
struct 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.h>
struct 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"
#include<stdlib.h>
int bathroomLightOpen(int pinNum){
digitalWrite(pinNum,LOW);
}
int bathroomLightClose(int pinNum){
d