智能家居系统方案设计.doc
《智能家居系统方案设计.doc》由会员分享,可在线阅读,更多相关《智能家居系统方案设计.doc(48页珍藏版)》请在咨信网上搜索。
项目名称,《模块设计报告》 智能家居系统 方案设计文档 目 录 0. 文档介绍 4 0.1 文档目的 4 0.2 文档范围 4 0.3 读者对象 4 0.4 参考文献 4 0.5 术语与缩写解释 4 1. 模块命名规则 5 2. 模块汇总 5 2.1 模块汇总表 5 2.2 模块关系图 5 3. 子系统A的模块设计 6 3.n 模块A-n 6 4. 子系统B的模块设计 6 4.n 模块B-n 6 5. 其他 6 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 功能描述 初始化设备根节点 接口与属性 void init_dev(void); 数据结构 与算法 struct dev { pthread_mutex_lock mutex; unsigned int nr_dev; struct list list; }; 补充说明 包含设备编号和链表的线程锁 模块名称 add_dev 功能描述 向设备链表中添加设备节点 接口与属性 int add_dev(char dev_type, char dev_no, char *ieee_addr); 数据结构 与算法 struct dev_node { char dev_type; char dev_no; char ieee_addr[8]; char alive; char failed; void *policy_table; struct list list; }; 补充说明 根据传来的设备类型设备号及IEEE地址,分配新的设备节点,并填写相应的项目然后调用 模块名称 del_dev 功能描述 从设备链表中删除设备节点 接口与属性 int del_dev(char dev_type, char dev_no); 数据结构 与算法 struct dev_node { char dev_type; char dev_no; char ieee_addr[8]; char alive; char failed; void *policy_table; struct list list; }; 补充说明 模块名称 init_dev_policy_table 功能描述 初始化设备策略表 接口与属性 void init_dev_policy_table(struct dev_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) 数据结构 与算法 struct dev_node { char dev_type; char dev_no; char ieee_addr[8]; char alive; char failed; void *policy_table; struct list list; }; 补充说明 模块名称 update_all_dev_policy_table 功能描述 更新所有设备策略表 接口与属性 void update_all_dev_policy_table(struct dev_node *node); 数据结构 与算法 同上 补充说明 模块名称 check_dev_type 功能描述 检查设备类型是否合法 接口与属性 int check_dev_type(unsigned char dev_type) 数据结构 与算法 同上 补充说明 模块名称 is_dev_exist 功能描述 检查设备是否存在 接口与属性 int is_dev_exist(unsigned char dev_type, unsigned char dev_no) 数据结构 与算法 同上 补充说明 模块名称 get_dev_node 功能描述 根据设备类型和设备号返回设备节点指针 接口与属性 struct dev_node *get_dev_node(unsigned char dev_type, unsigned char dev_no) 数据结构 与算法 同上 补充说明 4. 策略管理模块设计 模块名称 tempmon_policy_table_init 功能描述 温度计策略表初始化 接口与属性 void tempmon_policy_table_init(struct dev_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.设备底层操作接口模块设计 模块名称 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); 数据结构与算法 struct gen_frame { unsigned char head1; unsigned char head2; // always 0x55 0xAA unsigned char type; // frame type WARN unsigned char len; // frame len unsigned char dev_type; // device type unsigned char dev_no; // device no char status; }; 补充说明 按照协议,组装好设备的查询数据包,从串口发出,并等待串口回应。 模块名称 tempmon_set_hi_level 功能描述 设置当前温度计最高报警温度 接口与属性 char tempmon_set_hi_level(struct dev_node *node, char high_level); 数据结构与算法 struct con_frame { unsigned char head1; unsigned char head2; unsigned char type; unsigned char len; unsigned char dev_type; unsigned char dev_no; unsigned char con_cmd; char con_value; }; 补充说明 按照协议,组装好设备的控制数据包,从串口发出,并调用取得设备温度,刷新设备状态。 模块名称 tempmon_set_low_level 功能描述 设置当前温度计最低报警温度 接口与属性 char tempmon_set_low_level(struct dev_node *node, char high_level); 数据结构与算法 struct con_frame { unsigned char head1; unsigned char head2; unsigned char type; unsigned char len; unsigned char dev_type; unsigned char dev_no; unsigned char con_cmd; char con_value; }; 补充说明 按照协议,组装好设备的控制数据包,从串口发出,并调用取得设备温度,刷新设备状态。 其他设备以此类类推。 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.配置文件处理模块设计 模块名称 Load_parm 功能描述 解析器的前端,根据解析器的结果,抛出对应得错误 接口与属性 int load_parm(char *fname) 数据结构与算法 无 补充说明 无 模块名称 do_parser 功能描述 解析器主体,根据传进来的文件指针,将文件中相应的参数解析到全局参数表。 接口与属性 int do_parser(FILE *fp); 数据结构与算法 struct temp_parm { int temp_hi_level; int temp_low_level; }; union parm { struct temp_parm temp_parm; }; struct dev_parm { char dev_type; char dev_no; union parm parm; }; struct parm_table { unsigned int nr_parm; struct dev_parm dev_parm[NR_MAX_PARM]; }; struct parm_action { char name[MAX_PARM_NAME_LEN]; void (*func)(struct dev_parm*, char *); }; 示例: struct parm_action parm_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 功能描述 根据传进来的文件名,将全局参数表存储到配置文件中。 接口与属性 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.带头节点双向链表模块设计 模块名称 init_list 功能描述 初始化链表头节点 接口与属性 void init_list(struct list *list); 数据结构与算法 struct list { struct list *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 each_node_in_list(pos, head) \ for (pos = (head)->next; pos != (head); pos = pos->next) 补充说明 注意不要在循环中修改pos指针。 模块名称 each_owner_in_list宏 功能描述 使用pos指针遍历结构体,但是此pos的指针类型是链表宿主的,head节点类型是链表类型。 接口与属性 each_owner_in_list (pos, type, member); 数据结构与算法 #define each_owner_in_list(pos, head,member) \ for (pos = get_node_owner((head)->next, typeof(*pos), member); \ &pos->member != (head); \ pos = get_node_owner(pos->member.next, typeof(*pos), member)) 补充说明 同上。 8.循环缓冲区模块设计 模块名称 init_loop_buf 功能描述 初始化循环缓冲区。 接口与属性 int init_loop_buf(struct loop_buf *buf); 数据结构与算法 struct loop_buf { pthread_mutex_t mutex; unsigned char buffer[LOOP_BUF_LEN]; unsigned int in; unsigned int 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.串口操作层模块设计 模块名称 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.串口操作库模块设计 模块名称 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(in- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能家居 系统 方案设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文