智能家居系统方案设计.doc_第1页
智能家居系统方案设计.doc_第2页
智能家居系统方案设计.doc_第3页
智能家居系统方案设计.doc_第4页
智能家居系统方案设计.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

智能家居系统 方案设计文档 目目目 录录录 0 0 文档介绍文档介绍 4 4 0 1 文档目的 4 0 2 文档范围 4 0 3 读者对象 4 0 4 参考文献 4 0 5 术语与缩写解释 4 1 1 模块命名规则模块命名规则 5 5 2 2 模块汇总模块汇总 5 5 2 1 模块汇总表 5 2 2 模块关系图 5 3 3 子系统子系统 A A 的模块设计的模块设计 6 6 3 N 模块 A N 6 4 4 子系统子系统 B B 的模块设计的模块设计 6 6 4 N 模块 B N 6 5 5 其他其他 6 6 0 0 文档介绍文档介绍 0 10 1 文档目的文档目的 本文档旨在详细说明智能家居系统中门禁系统和 linux 下的模块程序开发过程 通过此文档 的描述 希望可以达到具有同等技术的开发人员按此介绍可以完全 重现此技术 0 20 2 文档范围文档范围 智能控制系统 嵌入式 linux 系统等 0 30 3 读者对象读者对象 嵌入式系统开发人员 0 40 4 参考文献参考文献 无 0 50 5 术语与缩写解释术语与缩写解释 缩写 术语缩写 术语解解 释释 CPLD CPLD 是一种用户根据各自需要而自行构造逻辑功能的数字 集成电路 其基本设计方法是借助集成开发软件平台 用 原理图 硬件描述语言等方法 生成相应的目标文件 通 过下载电缆 在系统 编程 将代码传送到目标芯片中 实现设计的数字系统 Wiegand Wiegand 协议是国际上统一的标准 有很多格式 标准的 26 bit 应该是最常用的格式 zigbee 紫蜂技术 1 1 模块命名规则模块命名规则 本文档模块名称与具体实现的功能函数采取一致的表示方法 2 2 模块汇总模块汇总 设备管理 策略管理 人员管理 定时管理 设备底层操作 串口设备层操作 串口底层操作库 配置文件解析 以及 UI 通讯等模块 同时包括门禁控制系统 模块 家居控制模块和环境探测模块以及人机交互界面设计模块 2 12 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 22 2 模块关系图模块关系图 3 3 设备管理系统的模块设计设备管理系统的模块设计 模块名称 init dev 功能描述初始化设备根节点 接口与属性 void init dev void 数据结构 与算法 structstruct devdev pthread mutex lockpthread mutex lock mutex mutex unsignedunsigned intint nr dev nr dev structstruct listlist list list 补充说明包含设备编号和链表的线程锁 模块名称 add dev 功能描述向设备链表中添加设备节点 接口与属性 intint add dev charadd dev char dev type dev type charchar dev no dev no charchar ieee addr ieee addr 数据结构 与算法 structstruct dev nodedev node charchar dev type dev type charchar dev no dev no charchar ieee addr 8 ieee addr 8 charchar alive alive charchar failed failed voidvoid policy table policy table structstruct listlist list list 补充说明根据传来的设备类型设备号及 IEEE 地址 分配新的设备节点 并填写相应的项目然后调用 模块名称 del dev 功能描述从设备链表中删除设备节点 接口与属性 intint del dev chardel dev char dev type dev type charchar dev no dev no 数据结构 与算法 structstruct dev nodedev node charchar dev type dev type charchar dev no dev no charchar ieee addr 8 ieee addr 8 charchar alive alive charchar failed failed voidvoid policy table policy table structstruct listlist list list 补充说明 模块名称 init dev policy table 功能描述初始化设备策略表 接口与属性 voidvoid init dev policy table structinit dev policy table struct dev nodedev node node node 数据结构 与算法 同上同上 补充说明 模块名称 renew dev policy table 功能描述将全局参数表的参数对应节点的参数刷新到设备的策略表里 接口与属性 void renew dev policy table struct dev node node 数据结构 与算法 无无 补充说明 模块名称 renew all dev policy table 功能描述将全局参数表的参数刷新到所有设备的策略表里 接口与属性 void renew all dev policy table struct dev node node 数据结构 与算法 无无 补充说明 模块名称 update dev policy table 功能描述通过调用设备控制层相关方法 取得设备对应状态 更新相应策 略表 接口与属性 void update dev policy table struct dev node node 数据结构 与算法 structstruct dev nodedev node charchar dev type dev type charchar dev no dev no charchar ieee addr 8 ieee addr 8 charchar alive alive charchar failed failed voidvoid policy table policy table structstruct listlist list list 补充说明 模块名称 update all dev policy table 功能描述更新所有设备策略表 接口与属性 voidvoid update all dev policy table structupdate all dev policy table struct dev nodedev node node node 数据结构 与算法 同上同上 补充说明 模块名称 check dev type 功能描述检查设备类型是否合法 接口与属性 intint check dev type unsignedcheck dev type unsigned charchar dev type dev type 数据结构 与算法 同上同上 补充说明 模块名称 is dev exist 功能描述检查设备是否存在 接口与属性 intint is dev exist unsignedis dev exist unsigned charchar dev type dev type unsignedunsigned charchar dev no dev no 数据结构 与算法 同上同上 补充说明 模块名称 get dev node 功能描述根据设备类型和设备号返回设备节点指针 接口与属性 structstruct dev nodedev node get dev node unsigned get dev node unsigned charchar dev type dev type unsignedunsigned charchar dev no dev no 数据结构 与算法 同上同上 补充说明 4 4 策略管理模块设计策略管理模块设计 模块名称 tempmon policy table init 功能描述温度计策略表初始化 接口与属性 voidvoid tempmon policy table init structtempmon policy table init struct dev nodedev node node node 数据结构与算 法 struct dev table unsigned char dev type void policy table init struct dev node void policy table load parm struct dev node void policy table update struct dev node void policy table warn struct dev node char void parm table save struct dev parm FILE fp struct tempmon policy char hi level char low level char cur temp char temp warn 补充说明为设备节点钟的策略表指针分配内存 并使用参数表中的值初始 化对应得设备 模块名称 tempmon policy table update 功能描述调用设备层温度计操作函数 更新温度计温度策略表 接口与属性 void tempmon policy table update struct dev node node 数据结构与算 法 同上 补充说明 模块名称 tempmon policy table set warn 功能描述根据传来的参数 设置对应温度计设备的报警状态 接口与属性 void tempmon policy table set warn struct dev node node char stat 数据结构与算 法 同上同上 补充说明 模块名称 tempmon policy table load parm 功能描述将温度计参数表中的值填入策略表里 接口与属性 void tempmon policy table load parm struct dev node node 数据结构与算 法 同上同上 补充说明 模块名称 tempmon policy table load default parm 功能描述将温度计默认的参数填入策略表里 接口与属性 void tempmon policy table load parm struct dev node node 数据结构与算 法 同上同上 补充说明 5 5 设备底层操作接口模块设计设备底层操作接口模块设计 模块名称 tempmon get dev stat 功能描述取得温度计设备状态 接口与属性 char tempmon get dev stat struct dev node node 数据结构与算 法 无无 补充说明调用取得温度计温度判断是否有返回值 判断设备是否仍然有响 应 如果设备没有响应 则将设备节点中的设备状态标记为设备 已死并调用 failed dev ctl 使设备节点操作失败次数加 1 考虑 到网络延迟等情况 采用设备操作失败计数 当累计到操作失败 到指定次数 则会调用 del dev 将设备从设备链表中删除 而任 何一次成功的设备操作则判定设备再次有响应 失败计数被清零 模块名称 tempmon get dev stat 功能描述取得温度计当前温度 接口与属性 char tempmon get cur temp struct dev node node 数据结构与算 法 structstruct gen framegen frame unsignedunsigned charchar head1 head1 unsignedunsigned charchar head2 head2 alwaysalways 0 x550 x55 0 xAA0 xAA unsignedunsigned charchar type type frameframe typetype WARNWARN unsignedunsigned charchar len len frameframe lenlen unsignedunsigned charchar dev type dev type devicedevice typetype unsignedunsigned charchar dev no dev no devicedevice nono charchar status status 补充说明按照协议 组装好设备的查询数据包 从串口发出 并等待串口 回应 模块名称 tempmon set hi level 功能描述设置当前温度计最高报警温度 接口与属性 char tempmon set hi level struct dev node node char high level 数据结构与算 法 structstruct con framecon frame unsignedunsigned charchar head1 head1 unsignedunsigned charchar head2 head2 unsignedunsigned charchar type type unsignedunsigned charchar len len unsignedunsigned charchar dev type dev type unsignedunsigned charchar dev no dev no unsignedunsigned charchar con cmd con cmd charchar con value con value 补充说明按照协议 组装好设备的控制数据包 从串口发出 并调用取得 设备温度 刷新设备状态 模块名称 tempmon set low level 功能描述设置当前温度计最低报警温度 接口与属性 char tempmon set low level struct dev node node char high level 数据结构与算 法 structstruct con framecon frame unsignedunsigned charchar head1 head1 unsignedunsigned charchar head2 head2 unsignedunsigned charchar type type unsignedunsigned charchar len len unsignedunsigned charchar dev type dev type unsignedunsigned charchar dev no dev no unsignedunsigned charchar con cmd con cmd charchar con value con value 补充说明按照协议 组装好设备的控制数据包 从串口发出 并调用取得 设备温度 刷新设备状态 其他设备以此类类推 5 5 用户认证模块设计用户认证模块设计 模块名称 auth user 功能描述根据传来的用户名和密码返回验证结果 接口与属性 char auth user char name char pass 数据结构与算 法 无无 补充说明 模块名称 add user 功能描述根据传来的用户名和密码将用户添加到密码文件中 接口与属性 char add user char name char pass 数据结构与算 法 无无 补充说明 模块名称 del user 功能描述根据传来的用户名将用户从密码文件中删除 接口与属性 char del user char name 数据结构与算 法 无无 补充说明注意此处仅作用户存在性检查不做用户检查 用户检查应该由 UI 发命令使用 auth user 检查通过后再来调用此函数 功能性模块 尽可能在自己被调用时提供方法而不是策略 模块名称 change pass 功能描述根据传来的用户名和密码将用户从密码文件中修改对应的记录 接口与属性 char change pass char name char pass 数据结构与算无无 法 补充说明注意事项同上 用户配置文件格式为用户名和密码定长不足定长使用空格补足 分隔符为 防止 频繁修改文件大小 加剧 Nand Fland 的读写 6 6 配置文件处理模块设计配置文件处理模块设计 模块名称 Load parm 功能描述解析器的前端 根据解析器的结果 抛出对应得错误 接口与属性 int load parm char fname 数据结构与算 法 无无 补充说明无 模块名称 do parser 功能描述解析器主体 根据传进来的文件指针 将文件中相应的参数解析 到全局参数表 接口与属性 int do parser FILE fp 数据结构与算 法 structstruct temp parmtemp parm intint temp hi level temp hi level intint temp low level temp low level unionunion parmparm structstruct temp parmtemp parm temp parm temp parm structstruct dev parmdev parm charchar dev type dev type charchar dev no dev no unionunion parmparm parm parm structstruct parm tableparm table unsignedunsigned intint nr parm nr parm structstruct dev parmdev parm dev parm NR MAX PARM dev parm NR MAX PARM structstruct parm actionparm action charchar name MAX PARM NAME LEN name MAX PARM NAME LEN voidvoid func struct func struct dev parm dev parm charchar 示例 示例 structstruct parm actionparm action parm action PARM ACTION LEN parm action PARM ACTION LEN dev type load dev type dev type load dev type dev no load dev no dev no load dev no temp hi level load temp hi level temp hi level load temp hi level temp low level load temp low level temp low level load temp low level 补充说明 模块名称 save parm 功能描述根据传进来的文件名 将全局参数表存储到配置文件中 接口与属性 int save parm char fname 数据结构与算 法 同上同上 补充说明 模块名称 get dev parm 功能描述根据传来的设备类型和设备号 返回对应设备的参数指针 接口与属性 struct dev parm get dev parm char dev type char dev no 数据结构与算 法 同上同上 补充说明 模块名称 getnline 功能描述根据传进来的文件指针 从中取得一行 此行最大长度为 count 接口与属性 size t getnline char buf size t count FILE fp 数据结构与算 法 无无 补充说明会将行尾的回车符替换为字符串结束的尾零 并且遇到 EOF 时停 止 返回值为实际取得的字符数 含尾零 回车 模块名称 trim 功能描述将传进来的字符串头尾的空格以及制表符砍去 然后将结果复制 到 dst 接口与属性 char trim char dst const char src 数据结构与算 法 无无 补充说明 各个参数的 handler 模块名称 load dev type 功能描述将设备类型填入到传入的 dev parm 接口与属性 void load dev type struct dev parm dev parm char value 数据结构与算 法 无无 补充说明 模块名称 load dev no 功能描述将设备号填入到传入的 dev parm 接口与属性 void load dev type struct dev parm dev parm char value 数据结构与算 法 无无 补充说明 模块名称 load temp hi level 功能描述将温度计最高报警温度填入到传入的 dev parm 接口与属性 void load temp hi level struct dev parm dev parm char value 数据结构与算 法 无无 补充说明 模块名称 load temp low level 功能描述将温度计最低报警温度填入到传入的 dev parm 接口与属性 void load temp low level struct dev parm dev parm char value 数据结构与算 法 无无 补充说明 模块名称 temp parm save 功能描述将传入的温度计的 dev parm 按照格式写入到文件指针里 接口与属性 void temp parm save struct dev parm dev parm FILE fp 数据结构与算 法 无无 补充说明 7 7 带头节点双向链表模块设计带头节点双向链表模块设计 模块名称 init list 功能描述初始化链表头节点 接口与属性 void init list struct list list 数据结构与算 法 structstruct listlist structstruct listlist prev next prev next 补充说明 模块名称 list add node 功能描述将节点加入链表 接口与属性 void list add node struct list new struct list node int location 数据结构与算 法 同上同上 补充说明可以使用 location 标志指定插入 node 制定节点的左边还是右边 如果 node 指向头节点 那么左边及为链表尾部 右边是链表头 模块名称 list del node 功能描述将节点从量表中删除 接口与属性 void list del node struct list node 数据结构与算 法 无无 补充说明 模块名称 is last node 功能描述判断节点是否是链表的尾节点 接口与属性 int is last node struct list list struct list node 数据结构与算 法 无无 补充说明真为尾节点 模块名称 is empty list 功能描述返回链表是否为空链表 接口与属性 int is empty list struct list list 数据结构与算 法 无无 补充说明真为空链表 模块名称offsetof 宏 功能描述返回成员在结构体中的偏移 接口与属性offsetof TYPE MEMBER 数据结构与算 法 无无 补充说明TYPE 为对应结构体的类型 MEMBER 为成员在结构体中的名字 模块名称get node owner 宏 功能描述传入指向结构体中成员的指针 返回指向结构体的指针 接口与属性 get node owner ptr type member 数据结构与算 法 无无 补充说明type member 定义同 offsetof ptr 为指向结构体中成员的指针 模块名称each node in list 宏 功能描述使用 pos 指针遍历结构体 接口与属性 each node in list pos head 数据结构与算 法 define define each node in list pos each node in list pos head head forfor pos pos head next head next pospos head head pospos pos next pos next 补充说明注意不要在循环中修改 pos 指针 模块名称each owner in list 宏 功能描述使用 pos 指针遍历结构体 但是此 pos 的指针类型是链表宿主的 head 节点类型是链表类型 接口与属性 each owner in list pos type member 数据结构与算 法 define define each owner in list pos each owner in list pos head member head member forfor pos pos get node owner head next get node owner head next typeof pos typeof pos member member head pospos get node owner pos member next get node owner pos member next typeof pos typeof pos member member 补充说明同上 8 8 循环缓冲区模块设计循环缓冲区模块设计 模块名称 init loop buf 功能描述初始化循环缓冲区 接口与属性 int init loop buf struct loop buf buf 数据结构与算 法 structstruct loop bufloop buf pthread mutex tpthread mutex t mutex mutex unsignedunsigned charchar buffer LOOP BUF LEN buffer LOOP BUF LEN unsignedunsigned intint in in unsignedunsigned intint out out 补充说明注意缓冲区大小必须为 2 的平方 模块名称 release loop buf 功能描述释放循环缓冲区 接口与属性 void release loop buf struct loop buf buf 数据结构与算 法 同上同上 补充说明释放结构体中的线程锁 同时复位缓冲区 模块名称 put loop buf 功能描述将数据放入循环缓冲区 接口与属性 unsigned int put loop buf struct loop buf buf unsigned char buffer unsigned int len 数据结构与算 法 同上同上 补充说明空间不足则只放入能放入的 返回值为实际放入数据长度 模块名称 get loop buf 功能描述使用 pos 指针遍历结构体 但是此 pos 的指针类型是链表宿主的 head 节点类型是链表类型 接口与属性 unsigned int get loop buf struct loop buf buf unsigned char buffer unsigned int len 数据结构与算 法 同上同上 补充说明同上 模块名称 lock buf struct loop buf buf 功能描述锁定循环缓冲区 接口与属性 void lock buf struct loop buf buf 数据结构与算 法 无无 补充说明无 模块名称 unlock buf 功能描述解锁循环缓冲区 接口与属性 void unlock buf struct loop buf buf 数据结构与算 法 无无 补充说明无 模块名称 loop buf reset 功能描述循环缓冲区复位 接口与属性 void loop buf reset struct loop buf buf 数据结构与算 法 无无 补充说明无 模块名称 loop buf len 功能描述返回循环缓冲区长度 接口与属性 unsigned int loop buf len struct loop buf buf 数据结构与算 法 无无 补充说明无 9 9 串口操作层模块设计串口操作层模块设计 模块名称 init uart 功能描述按照本程序的需要调用串口库初始化串口 并开启监听线程 接口与属性 void init uart void 数据结构与算 法 无无 补充说明无 模块名称 com monitor 功能描述串口监听线程实例 接口与属性 void com monitor void arg 数据结构与算 法 无无 补充说明首先调用 read uart one frame 收到完整一桢 然后调用 process frame buf 处理由协调器主动发起的添加设备桢和报警 桢根据返回值判断是否已经处理 直接进入下一个循环还是放入 缓冲区 供发起查询的函数取得回应包 模块名称 read uart one frame 功能描述从串口中取得完整一桢 接口与属性 ssize t read uart one frame int fd unsigned char buf 数据结构与算 法 无无 补充说明调用 read uart timeout 取得完整桢头 然后进行一系列桢检查 非法桢直接丢弃返回 0 合法桢则放入 buf 模块名称 read uart buf 功能描述从缓冲区读取数据 没有数据则休眠等待下次信号唤醒 接口与属性 void unlock buf struct loop buf buf 数据结构与算 法 无无 补充说明无 10 10 串口操作库模块设计串口操作库模块设计 模块名称 open uart 功能描述打开串口 接口与属性 int open uart char fname 数据结构与算 法 无无 补充说明无 模块名称 set uart speed 功能描述设置串口速度 接口与属性 int set uart speed int fd int speed 数据结构与算无无 法 补充说明无 模块名称 set uart parity 功能描述设置串口各种工作属性 接口与属性 int set uart parity int fd int databits int stopbits int parity 数据结构与算 法 无无 补充说明无 模块名称 read uart timeout 功能描述在 timeout 规定的时间内读取指定的 count 字符个数 接口与属性 ssize t read uart timeout int fd void buf size t count int timeout 数据结构与算 法 无无 补充说明无 11 UI11 UI 通信模块设计通信模块设计 模块名称 init commui 功能描述创建与 UI 通信的线程初始化 working 信号量 接口与属性 void init commui void 数据结构与算 法 structstruct commui slotcommui slot pthread mutex tpthread mutex t working working intint link sd link sd FILEFILE link fp link fp 补充说明无 模块名称 commui monitor 功能描述负责与 UI 通信的线程 接口与属性 void commui monitor void arg 数据结构与算 法 无无 补充说明创建并初始化 unix 域套接字 监听套接字连接 收到连接后使 用 get cmd line 取得一行命令 将命令及套接字连接描述符 用 于命令处理 handler 返回执行结果 一同传给 run cmd 解析并运 行命令做出相应的查询 设置 模块名称 get cmd line 功能描述从文件指针取得一行命令 接口与属性 int get cmd line FILE fp char buf 数据结构与算 法 无无 补充说明将结束符转换为字符串结束符方便后面的处理 模块名称 warn ui 功能描述向 ui 报警 接口与属性 void warn ui char dev type char dev no char stat 数据结构与算 法 无无 补充说明如果槽里的连接描述符可以 则使用槽里面的连接描述符向 UI 发送报警返回结果 写连接描述符以前加锁 避免与命令返回值 相冲突 12 12 命令处理部分设计命令处理部分设计 模块名称 run cmd 功能描述运行传来的命令 使用提供的连接返回命令执行结果 接口与属性 int run cmd int fd char cmd 数据结构与算 法 structstruct cmd action tablecmd action table charchar name MAX CMD LEN name MAX CMD LEN voidvoid func FILE func FILE fp fp charchar sep sep 示例 示例 structstruct cmd action tablecmd action table cmd action table cmd action table GET do get GET do get SET do set SET do set USER do user USER do user SAVE do save SAVE do save 补充说明会复制新的描述符传给下面的 handler 所以 handler 中关闭描 述符生成的文件指针不会关闭当前连接 模块名称 error 功能描述根据传进来的错误号 将出错信息按照标准信息返回格式 返回 到描述符上 接口与属性void error FILE fp int errorno 数据结构与算 法 无无 补充说明不会关闭传入的文件指针 主 Handler 部分 模块名称 do get 功能描述解析 get 动词 接口与属性 void do get FILE fp char sep 数据结构与算 法 structstruct sub cmd action tablesub cmd action table charchar name MAX CMD LEN name MAX CMD LEN voidvoid get FILE get FILE fp fp charchar sep sep voidvoid set FILE set FILE fp fp charchar sep sep 示例 示例 structstruct sub cmd action tablesub cmd action table sub cmd action table sub cmd action table CONFIG cmd conf get cmd conf set CONFIG cmd conf get cmd conf set get get configconfig filefile namename TEMP cmd temp get cmd temp set TEMP cmd temp get cmd temp set 补充说明根据取得接下来的命令目标 将剩余拆解的字符串传给目 sub cmd action table 中对应目标的 get 函数指针所指向的函数 模块名称 do set 功能描述解析 set 动词 接口与属性 void do set FILE fp char sep 数据结构与算 法 同上同上 补充说明根据取得接下来的命令目标 将剩余拆解的字符串传给目 sub cmd action table 中对应目标的 set 函数指针所指向的函数 模块名称 do user 功能描述解析 user 动词 接口与属性 void do user FILE fp char sep 数据结构与算同上同上 法 补充说明根据接下来的命令动词 对用户认证的各个功能做出响应 然后 将返回的结果写入到传入的文件指针上 模块名称 do save 功能描述解析 save 动词 接口与属性 void do save FILE fp char sep 数据结构与算 法 同上同上 补充说明根据接下来的命令动词 将当前的全局参数表格存到对应的文件 里 如不指定文件名 则存储到默认的文件里 并将结果按照返 回格式返回到传入的文件指针 子 handler 模块名称 cmd conf get 功能描述解析到 GET CONFIG 后面的目标 遍历 CONFIG 文件夹 将其中的 配置文件名按照对应的格式 返回到传入的文件指针 接口与属性 void cmd conf get FILE fp char sep 数据结构与算 法 无无 补充说明 模块名称 cmd conf set 功能描述解析到 SET CONFIG 后面的目标 调用 load parm 解析对应的配 置文件 并 renew 策略表 将结果返回到传入的文件指针 接口与属性 void cmd conf get FILE fp char sep 数据结构与算 法 同上同上 补充说明 模块名称 cmd temp get 功能描述解析到 GET TEMP 后面的设备号 按照返回格式 返回温度计当

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论