智能家居系统方案设计.docx

上传人:b****8 文档编号:28347693 上传时间:2023-07-10 格式:DOCX 页数:61 大小:391.83KB
下载 相关 举报
智能家居系统方案设计.docx_第1页
第1页 / 共61页
智能家居系统方案设计.docx_第2页
第2页 / 共61页
智能家居系统方案设计.docx_第3页
第3页 / 共61页
智能家居系统方案设计.docx_第4页
第4页 / 共61页
智能家居系统方案设计.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

智能家居系统方案设计.docx

《智能家居系统方案设计.docx》由会员分享,可在线阅读,更多相关《智能家居系统方案设计.docx(61页珍藏版)》请在冰豆网上搜索。

智能家居系统方案设计.docx

智能家居系统方案设计

 

智能家居系统

方案设计文档

0.文档介绍

0.1文档目的

本文档旨在详细说明智能家居系统中门禁系统和linux下的模块程序开发过程,通过此文档的描述,希望可以达到具有同等技术的开发人员按此介绍可以完全重现此技术。

0.2文档范围

智能控制系统,嵌入式linux系统等。

0.3读者对象

嵌入式系统开发人员

0.4参考文献

0.5术语与缩写解释

缩写、术语

解释

CPLD

CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。

其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。

Wiegand

Wiegand协议是国际上统一的标准,有很多格式,标准的26-bit应该是最常用的格式

zigbee

紫蜂技术

1.模块命名规则

本文档模块名称与具体实现的功能函数采取一致的表示方法。

2.模块汇总

设备管理,策略管理,人员管理,定时管理,设备底层操作,串口设备层操作,串口底层操作库,配置文件解析,以及UI通讯等模块。

同时包括门禁控制系统模块,家居控制模块和环境探测模块以及人机交互界面设计模块。

2.1模块汇总表

设备管理(dev.c)

模块名称

功能简述

init_dev

初始化设备根节点

add_dev

添加入网设备

del_dev

删除链表中设备

init_dev_policy_table

按照设备类新初始化策略表

update_dev_policy_table

按照各个设备类型,更新链表中的各个设备策略表

get_dev_policy_table_size

按照设备节点的类型返回对应设备类型的策略表大小

策略管理(policy.c)

模块名称

功能简述

tempmon_policy_table_init

初始化温度计类型设备的策略表。

tempmon_policy_table_set_warn

根据参数传过来的状态设置设备报警状态。

tempmon_policy_table_update

调用底层设备控制取得当前设备状态更新对应设备的策略表。

设备底层操作接口(devctl.c)

tempmon_get_dev_stat

取得温度计设备状态

tempmon_get_cur_temp

取得温度计设备温度

tempmon_set_hi_level

设置温度计最高报警温度

tempmon_set_low_levl

设置温度计最低报警温度

用户认证(auth.c)

auth_user

根据传来的用户名和密码,返回验证结果

change_pass

根据传来的用户名和密码,更改密码文件里对应项目。

del_pass

根据传来的用户名,删除密码文件中的对应用户行

add_user

根据传来的参数,在密码文件中加入对应用户行

配置文件处理(parm.c)

load_parm

解析器的前端,根据解析器的结果,抛出对应得错误。

do_paser

根据传进来的文件描述符,将文件中相应的参数解析到参数结构体。

save_parm

将参数结构体按照对应格式写入配置文件。

getnline

从文件中取得最大长度为n一行,并将回车翻译为字符串结尾符

trim

刨去传入字符串开头和结尾的空格和tab

配置文件参数处理(parm_handler.c)

temp_hi_level

设置参数结构体的temp_hi_level参数

temp_low_level

设置参数结构体的temp_low_level参数

带头节点的双向链表(list.c)移植自linux内核

list_add_node

插入节点

list_del_node

删除节点

is_empty_list

判断链表是否为空

is_last_node

判断是否为最后一个节点

offsetof宏

取得结构体元素相对于结构体开始的偏移量

container_of宏

通过结构体元素的指针取得结构体的指针

循环缓冲区(loop_buf.c)移植自linux内核

min宏

返回两个数中的最小值

init_loop_buf

初始化循环缓冲区

release_loop_buf

释放循环缓冲区里的线程锁

get_loop_buf

从循环缓冲区中获取数据

put_loop_buf

向循环缓冲区中放置数据

lock_buf

循环缓冲区线程锁加锁

unlock_buf

循环缓冲区中线程锁解锁

loop_buf_reset

循环缓冲区指针复位

loop_buf_len

返回循环缓冲区剩余长度

串口设备层操作(uart.c)

init_uart

调用底层串口库初始化串口

com_monitor

串口监视线程,负责监视并接受串口上数据。

pre_frame_proces

对串口接受数据预处理,调用相应的操作函数

read_uart_one_frame

从串口读取完整一桢

read_uart_buf

从缓冲区读取数据,没有数据则休眠等待下次信号唤醒。

串口操作库(uart.c)

open_uart

打开相应串口设备文件

read_uart

读取串口数据。

write_uart

将数据写入串口

set_uart_speed

设置串口工作速度

set_uart_parity

设置串口的工作特性,例如停止位奇偶流控等。

read_uart_timeout

带有超时的串口读取操作处理。

UI通信(commui.c)

init_commui

初始化ui通信各个参数。

commui_monitor

套接字监视线程,监视套接字是否有命令数据到来。

get_cmd_line

从描述符中取得一行命令行

warn_ui

向ui发起报警

命令处理程序(cmd.c)

run_cmd

命令解析器,调用对应命令的处理程序。

error

根据错误码,将返回对应得错误信息。

命令处理程序handler(cmd_handler.c)

xxx_comand_handler

对应各个命令的处理程序。

门禁控制模块

ReadWiegand

读取用户卡信息

SendWiegand

发送用户卡信息

SendCmd

发送控制指令

家居控制系统和环境探测模块

GetTem

采集环境信息

SendTem

封包发送采集数据

RecTem

解析采集数据信息

SendLedData

发送led显示数据

GetTemFromCD

Led模块收取并解析温度数据

DisplayTem

发送并显示信息

OpenLamp

打开继电器

CloseLamp

关闭继电器

2.2模块关系图

 

3.设备管理系统的模块设计

模块名称

init_dev

功能描述

初始化设备根节点

接口与属性

voidinit_dev(void);

数据结构

与算法

structdev{

pthread_mutex_lockmutex;

unsignedintnr_dev;

structlistlist;

};

补充说明

包含设备编号和链表的线程锁

模块名称

add_dev

功能描述

向设备链表中添加设备节点

接口与属性

intadd_dev(chardev_type,chardev_no,char*ieee_addr);

数据结构

与算法

structdev_node{

chardev_type;

chardev_no;

charieee_addr[8];

charalive;

charfailed;

void*policy_table;

structlistlist;

};

补充说明

根据传来的设备类型设备号及IEEE地址,分配新的设备节点,并填写相应的项目然后调用

模块名称

del_dev

功能描述

从设备链表中删除设备节点

接口与属性

intdel_dev(chardev_type,chardev_no);

数据结构

与算法

structdev_node{

chardev_type;

chardev_no;

charieee_addr[8];

charalive;

charfailed;

void*policy_table;

structlistlist;

};

补充说明

 

模块名称

init_dev_policy_table

功能描述

初始化设备策略表

接口与属性

voidinit_dev_policy_table(structdev_node*node);

数据结构

与算法

同上

补充说明

模块名称

renew_dev_policy_table

功能描述

将全局参数表的参数对应节点的参数刷新到设备的策略表里

接口与属性

voidrenew_dev_policy_table(structdev_node*node)

数据结构

与算法

补充说明

模块名称

renew_all_dev_policy_table

功能描述

将全局参数表的参数刷新到所有设备的策略表里

接口与属性

voidrenew_all_dev_policy_table(structdev_node*node)

数据结构

与算法

补充说明

模块名称

update_dev_policy_table

功能描述

通过调用设备控制层相关方法,取得设备对应状态,更新相应策略表

接口与属性

voidupdate_dev_policy_table(structdev_node*node)

数据结构

与算法

structdev_node{

chardev_type;

chardev_no;

charieee_addr[8];

charalive;

charfailed;

void*policy_table;

structlistlist;

};

补充说明

模块名称

update_all_dev_policy_table

功能描述

更新所有设备策略表

接口与属性

voidupdate_all_dev_policy_table(structdev_node*node);

数据结构

与算法

同上

补充说明

模块名称

check_dev_type

功能描述

检查设备类型是否合法

接口与属性

intcheck_dev_type(unsignedchardev_type)

数据结构

与算法

同上

补充说明

模块名称

is_dev_exist

功能描述

检查设备是否存在

接口与属性

intis_dev_exist(unsignedchardev_type,unsignedchardev_no)

数据结构

与算法

同上

补充说明

模块名称

get_dev_node

功能描述

根据设备类型和设备号返回设备节点指针

接口与属性

structdev_node*get_dev_node(unsignedchardev_type,unsignedchardev_no)

数据结构

与算法

同上

补充说明

4.策略管理模块设计

模块名称

tempmon_policy_table_init

功能描述

温度计策略表初始化

接口与属性

voidtempmon_policy_table_init(structdev_node*node);

数据结构与算法

struct__dev_table{

unsignedchardev_type;

void(*policy_table_init)(structdev_node*);

void(*policy_table_load_parm)(structdev_node*);

void(*policy_table_update)(structdev_node*);

void(*policy_table_warn)(structdev_node*,char);

void(*parm_table_save)(structdev_parm*,FILE*fp);

};

structtempmon_policy{

charhi_level;

charlow_level;

charcur_temp;

chartemp_warn;

};

补充说明

为设备节点钟的策略表指针分配内存,并使用参数表中的值初始化对应得设备。

模块名称

tempmon_policy_table_update

功能描述

调用设备层温度计操作函数,更新温度计温度策略表

接口与属性

voidtempmon_policy_table_update(structdev_node*node);

数据结构与算法

同上

补充说明

模块名称

tempmon_policy_table_set_warn

功能描述

根据传来的参数,设置对应温度计设备的报警状态

接口与属性

voidtempmon_policy_table_set_warn(structdev_node*node,charstat);

数据结构与算法

同上

补充说明

模块名称

tempmon_policy_table_load_parm

功能描述

将温度计参数表中的值填入策略表里

接口与属性

voidtempmon_policy_table_load_parm(structdev_node*node)

数据结构与算法

同上

补充说明

模块名称

tempmon_policy_table_load_default_parm

功能描述

将温度计默认的参数填入策略表里

接口与属性

voidtempmon_policy_table_load_parm(structdev_node*node)

数据结构与算法

同上

补充说明

5.设备底层操作接口模块设计

模块名称

tempmon_get_dev_stat

功能描述

取得温度计设备状态

接口与属性

chartempmon_get_dev_stat(structdev_node*node);

数据结构与算法

补充说明

调用取得温度计温度判断是否有返回值,判断设备是否仍然有响应,如果设备没有响应,则将设备节点中的设备状态标记为设备已死并调用failed_dev_ctl使设备节点操作失败次数加1(考虑到网络延迟等情况,采用设备操作失败计数,当累计到操作失败到指定次数,则会调用del_dev将设备从设备链表中删除。

而任何一次成功的设备操作则判定设备再次有响应,失败计数被清零)。

模块名称

tempmon_get_dev_stat

功能描述

取得温度计当前温度

接口与属性

chartempmon_get_cur_temp(structdev_node*node);

数据结构与算法

structgen_frame{

unsignedcharhead1;

unsignedcharhead2;//always0x550xAA

unsignedchartype;//frametypeWARN

unsignedcharlen;//framelen

unsignedchardev_type;//devicetype

unsignedchardev_no;//deviceno

charstatus;

};

补充说明

按照协议,组装好设备的查询数据包,从串口发出,并等待串口回应。

模块名称

tempmon_set_hi_level

功能描述

设置当前温度计最高报警温度

接口与属性

chartempmon_set_hi_level(structdev_node*node,charhigh_level);

数据结构与算法

structcon_frame{

unsignedcharhead1;

unsignedcharhead2;

unsignedchartype;

unsignedcharlen;

unsignedchardev_type;

unsignedchardev_no;

unsignedcharcon_cmd;

charcon_value;

};

补充说明

按照协议,组装好设备的控制数据包,从串口发出,并调用取得设备温度,刷新设备状态。

模块名称

tempmon_set_low_level

功能描述

设置当前温度计最低报警温度

接口与属性

chartempmon_set_low_level(structdev_node*node,charhigh_level);

数据结构与算法

structcon_frame{

unsignedcharhead1;

unsignedcharhead2;

unsignedchartype;

unsignedcharlen;

unsignedchardev_type;

unsignedchardev_no;

unsignedcharcon_cmd;

charcon_value;

};

补充说明

按照协议,组装好设备的控制数据包,从串口发出,并调用取得设备温度,刷新设备状态。

其他设备以此类类推。

5.用户认证模块设计

模块名称

auth_user

功能描述

根据传来的用户名和密码返回验证结果

接口与属性

charauth_user(char*name,char*pass);

数据结构与算法

补充说明

模块名称

add_user

功能描述

根据传来的用户名和密码将用户添加到密码文件中

接口与属性

charadd_user(char*name,char*pass);

数据结构与算法

补充说明

模块名称

del_user

功能描述

根据传来的用户名将用户从密码文件中删除

接口与属性

chardel_user(char*name);

数据结构与算法

补充说明

注意此处仅作用户存在性检查不做用户检查,用户检查应该由UI发命令使用auth_user检查通过后再来调用此函数。

功能性模块尽可能在自己被调用时提供方法而不是策略。

模块名称

change_pass

功能描述

根据传来的用户名和密码将用户从密码文件中修改对应的记录

接口与属性

charchange_pass(char*name,char*pass);

数据结构与算法

补充说明

注意事项同上。

用户配置文件格式为用户名和密码定长不足定长使用空格补足,分隔符为:

防止频繁修改文件大小,加剧NandFland的读写。

6.配置文件处理模块设计

模块名称

Load_parm

功能描述

解析器的前端,根据解析器的结果,抛出对应得错误

接口与属性

intload_parm(char*fname)

数据结构与算法

补充说明

模块名称

do_parser

功能描述

解析器主体,根据传进来的文件指针,将文件中相应的参数解析到全局参数表。

接口与属性

intdo_parser(FILE*fp);

数据结构与算法

structtemp_parm{

inttemp_hi_level;

inttemp_low_level;

};

unionparm{

structtemp_parmtemp_parm;

};

structdev_parm{

chardev_type;

chardev_no;

unionparmparm;

};

structparm_table{

unsignedintnr_parm;

structdev_parmdev_parm[NR_MAX_PARM];

};

structparm_action{

charname[MAX_PARM_NAME_LEN];

void(*func)(structdev_parm*,char*);

};

示例:

structparm_actionparm_action[PARM_ACTION_LEN]={

{"dev_type",load_dev_type},

{"dev_no",load_dev_no},

{"temp_hi_level",load_temp_hi_level},

{"temp_low_level",load_temp_low_level},

};

补充说明

模块名称

save_parm

功能描述

根据传进来的文件名,将全局参数表存储到配置文件中。

接口与属性

intsave_parm(char*fname);

数据结构与算法

同上

补充说明

模块名称

get_dev_parm

功能描述

根据传来的设备类型和设备号,返回对应设备的参数指针

接口与属性

structdev_parm*get_dev_parm(chardev_type,chardev_no);

数据结构与算法

同上

补充说明

 

模块名称

getnline

功能描述

根据传进来的文件指针,从中取得一行,此行最大长度为count。

接口与属性

size_tgetnline(char*buf,size_tcount,FILE*fp);

数据结构与算法

补充说明

会将行尾的回车符替换为字符串结束的尾零,并且遇到EOF时停止。

返回值为实际取得的字符数(含尾零/回车)。

模块名称

trim

功能描述

将传进来的字符串头尾的空格以及制表符砍去,然后将结果复制到dst。

接口与属性

char*trim(char*dst,constchar*src);

数据结构与算法

补充说明

各个参数的handler:

模块名称

load_dev_type

功能描述

将设备类型填入到传入的dev_parm。

接口与属性

voidload_dev_type(structdev_parm*dev_parm,char*value);

数据结构与算法

补充说明

模块名称

load_dev_no

功能描述

将设备号填入到传

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1