版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
管理信息化物联网基于WindowsCE的智能家居模拟系统61目录摘要41.系统方案设计51.1.项目背景与需求分析51.2.系统概述51.3.系统功能与指标51.4.方案比较与选择61.4.1.处理器比较61.4.2.硬件系统通信方案比较61.4.3.操作系统比较71.4.4.WindwosCE平台软件开发语言比较71.4.5.WindwosCE平台Web服务方案比较71.5.系统架构82.系统实现原理92.1.基于WindowsCE嵌入式Web服务器(用户接口层)91.4.6.服务器软件概览91.4.7.主控模块101.4.8.Web服务模块131.4.9.短信查询与控制服务151.4.10.状态监视服务172.2.命令数据交换器(软交换层)182.2.1.命令数据交换器软件流程图说明192.2.2.命令数据交换器硬件电路说明192.2.3.协议帧1说明212.2.4.协议帧2说明232.2.5.RS485总线网设计方案252.3.执行机构实现原理(命令执行层)272.3.1.软件流程272.3.2.硬件电路283.系统测试313.1.本地用户接口测试313.2.Web服务测试333.2.1.PC端测试333.2.2.手机远程访问Web服务器测试363.3.手机短信控制测试373.4.系统实际工作效果图394.特色405.原创性声明406.附录416.1附录1Abstract416.2附录2查新报告426.3附录3参考文献436.4附录4关键程序源代码446.4.1.软交换层与命令执行层软件代码446.4.2.用户接口层程序代码526.5附录5系统实物图596.6附录6TQ2440开发平台60摘要人性化。WebWebWeb站点,通过网页操作方式对家居中上述构件进行操作和状态查询,在此基础上,本系统还提供了手机短息查询与控制功能。具有较强的灵活性和较高的可靠性。关键词:智能家居状态监控Web服务手机短信控制1.系统方案设计1.1.项目背景与需求分析随着现代家居中电气化程度的逐渐提高,对家中的各种电器进行统一调控,户提供网页管理与控制的接口。较强的方案,并扩展了短信功能,介绍如下:1.2.系统概述窗帘和门禁5个部分,并在本系统中对其进行模型化,进而控制。则按照一个完整的智能家居控制系统的需求来进行系统规划与编码实现。1.3.系统功能与指标本模拟系统旨在为用户提供一个对家居住房里基本设施的工作状态进行监测和控制的平台,如图1所示,包括以下几个部分:(1)提供两种远程控制方式和一个图形化的本地控制界面,远程控制方式有:Web网页的方式和用手机短信方式。(2)(开或关)当前住房大厅图像;(3)系统实时检测每个基本设施状态,并实时在Web网页上反馈给用户;(4)式告知用户。图1整体功能架构1.4.方案比较与选择1.4.1.处理器比较STM32处理器与ARM9处理器。以下分别概述。STM32处理器:代表型号为:stm32f103rbt6,此处理器基于ARM7TDMI架构,片上资源丰富,具有体积小、功耗低的特点,且容易使用(可视作32位单片机使ARM9处理器:代表型号为:s3c2440,此处理器基于ARM920T架构,具有丰富的扩展接口,由于具有MMU虽然STM32(最高只有72MHzARM9处理器加操作系统的方案,本次使用的开发板为广州天嵌科技有限公司提供的TQ2440开发平台(见附录61.4.2.硬件系统通信方案比较有:RS-232方案RS-485方案、RS-422方案。以下分点阐述。RS-232间的短距离通信,通信码率较低(1200bps~115200bps能力都较差,RS-422干扰能力与较远的通信距离,已成为工业通信标准之一。RS-485泛的工业通信标准。RS-232RS-422通信需要较多线材(5RS-485通信方案1.4.3.操作系统比较Linux方案或WindowsCE方案,分述如下。嵌入式Linux:优点:完全开源,不需要授权,且有较多开源驱动或库函数可以调用。缺点:开发环境较差,只支持C语言开发。WindowsCEWindowsCE6.0支持良好,开发环境(VisualStudio、PlatformBuilder编写。度。选择WindowsCE作为系统平台。1.4.4.WindwosCE平台软件开发语言比较WindowsCE下应用软件开发可以有以下两种选择:基于.NetCompactFrameworkManagedCode.NetCF发;基于C++本地代码(NativeCode)的开发。以下分别阐述。基于.NetCF托管代码的软件开发:.优点:NetCF是Windows平台下.NetFramework(以下简称.Net)的一个子集,由于它对常用的系统API进行WindowsC#基于.Net或.NetCF的应用程序不发布时不直接成汇编指令,直到执行前一刻才借助目标机器上的.Net或.NetCF服务程序翻译成本机指令。因此,程序可以在任何带有.Net或.NetCFC#或无法直接调用C或C++编写的程序;启动时会消耗一定的系统资源;无法直接进行系统驱动开发。基于C++本地代码的开发:优点:在WindowsCE平台下C++程序具有较高的由于直接生成基于CPU的汇编指令,因此若CPU类型发生变化,即使系统相同,程序也必须重新编译。考虑到本项目存在用户接口以及人机界面开发的工作量远远大于驱动的情C#语言开发,摄像头驱动则用C++封装成动态链接库(DLLC#调用。1.4.5.WindwosCE平台Web服务方案比较在WindowsCE上实现Web服务有以下两种方案:1、直接使用WindowsCE系统内核自带的HTTPD组件实现Web服务。2、移植一套PC机中的HTTP协议到服务器端软件中。对于方案1,依赖WindowsCE系统内核组件,因此存在对运行环境依赖性强的缺点,且HTTPD组件只能用C或C++开发,与本项目选定的开发语言(C#)不符。对于方案2HTTP可以根据需求灵活控制;由于HTTP协议并不复杂,且有开源实现代码(如kayak,lightweightC#webserverandframework案。1.5.系统架构模拟系统的总体架构如图2所示,可以分为3个层次,分别如下:(1)第一层:用户接口层,是基于WindwosCE的嵌入式Web服务器;(2)第二层:软交换层,命令数据交换器;(3)第三层:命令执行层,执行机构(包括摄像头和GPRS短息模块等部件)。图2系统总体架构图这3个层次的内容和作用如下表1所示。表1:系统个层次内容功能一览表名称内容作用用户接口层1、基于S3C2440ARM1、当用户使用手机等移动终端或电脑终端访问该服务器是为用户提供基于Web网2、WinCE嵌入式操作页的查询、控制服务;系统;23、用C#编程语言自令编码后交给软交换层,如果是用户需要行设计的Web服务器获取当前房屋的图像时就直接控制摄像头软件。模块;3、将用户操作结果反馈给用户(刷新Web页面,在新Web4常状况时(如小偷破门而入)发生报警并将信息通过短信方式告知用户。软交换层1、具有2个异步串1、接收来自用户接口层的命令帧并进行行口的单片机最小系解析;统和RS485电路2、根据解析命令帧的结果分别给各个控2、自行设计的通信制机构发送专门的命令帧;协议程序。3、收集各个执行机构返回的结果并反馈给Web服务器;4、当出现门被非法打开时向服务器报警。命令执行层1、监测和控制家居1、各个执行机构接收交换器发来的命令各种受控元素(灯光、帧;空调、窗帘、水阀、2、各个执行机构根据命令帧内容监控各门禁等)的硬件控制个受控元素的状态;电路及其软件程序、3、把执行结果反馈给交换器;执行机构;4、2、摄像头模块和实时性,并没有连接入RS485总线网,二GPRS短信模块控制软是直接与交换器相连接。件。2.系统实现原理S3C2440ARMHTTP协议就是从上位机中的HTTP协议根据嵌入式WinCE平台的特点移植而来的。也就是嵌入式技术。键软、硬件模块的实现方法。着重阐述以下3个部分:(1)基于WindowsCE嵌入式Web服务器实现原理;(2)命令数据交换器实现原理;(3)一般执行机构实现原理。2.1.基于WindowsCE嵌入式Web服务器(用户接口层)1.4.6.服务器软件概览图3服务器总体功能架构服务器功能架构见图3,它是整个系统的用户接口与底层服务的核心。实现以下功能:为用户提供图形化的人机界面、与底层交换器通信、驱动CMOS摄像Web共66项功能会被同时开启。因此在软件设计上,须使用多线程的设块实现的功能与实现原理。1.4.7.主控模块功能概述与控制,并为用户提供一个图形化的用户界面。实现原理主控模块架构见图4图4主控模块架构图C#在开发环境中画出即可。由“服务器软件概览中所述,本次需要使用多线程的设计方法。多线程的实现可以使用.Thread.系统中的主控串口、GSM模块、摄像头这些资源都无法接受多线程并发控制给主控模块中的核心业务线程管理。若其他服务(例如:Web远程访问)需要调行统一调配。摄像头驱动程序在本项目中则是通过移植SMDK2410WindowsCEBSP中的ov9650驱动程序,并进行封装得到。通用数据处理模块是一个全局性数据处理方法的封装。底层交换器与WindowsCE进行通信时使用的是RS-232串口,因此,底层交换器通信模块实质上是一个经过派生的串口通信模块,继承于..短消息查询与控制服务向用户报警并记录。图5主控模块工作流程图1.4.8.Web服务模块功能概述Web服务模块作为系统远程控制接口的一部分,目的是让用户可以利用任何可以上网的计算机配合支持HTTP协议的浏览器(例如:InternetExplore对家中情况的远程掌控。实现原理以下先对Web服务及其相关概念进行阐述广义上的Web服务是指一系列互联并可以通过互联网访问的超文本(Hypertext)内容组成的系统。其中信息传输协议为超文本传输协议(HypertextTransferProtocolHTTP协议。在进行多媒体信息传输时超文本则扩充为超媒体(Hypermedia)HTTP客户端间进行请求与应答的协议。也是Web服务的最基本通信协议。WebHTTPHTTP协议位于互联网体系结构的应用层。由位于传输层的传输控制(TCP)协议提供通信保障。从传输层上看,基于HTTP协议的请求与应答本质上是基于TCP协议的数据通信过程。图6Web服务模块内部架构根据以上原理设计的Web服务模块架构如图6所示。其中,TCP/IP通信模块则负责按照TCP负责数据通信,在实现上,可以直接使用.TcpListener.HTTP协议解析模块则按照HTTP协议规范对收到的数据报文进行解析,以从控模块协作,从而实现远程访问与控制的功能。Web服务控制线程则为主模块提供对整个WebWeb服务控制接口Web服务模块详细流程图见图7图7Web服务模块工作流程图1.4.9.短信查询与控制服务功能概述以利用在远程尤其是无法使用互联网的时候利用手机短信实现对家中情况的远程掌控。实现原理在嵌入式系统中实现短信收发,往往借助于GSM(GlobalSystemforMobile)GSM模块是以RS-232AT指令作为控制指令。因此在系统中利用串口实现对GSM模块的控制即可实现本部分功能。图8短信查询与控制服务模块架构图短信查询与控制模块架构如图8始化串口收发的功能。在实现上,可直接使用...PDU编解码模块实现将GSM模块收到的信息进行解码和将需要发送的信息进UCS2(中英文混合内容)或者UCS2-7GSM模块收到的是包含短信内容与发送方信息的PDUPDU由于GSM进行UCS2PDU字符串。GSM模块控制线程为主控模块提供对短消息查询控制服务模块的控制接与通信接口(见图8工作状态进行监控,以实现短信侦听与发送。短信查询与控制模块工作流程图见图9图9短信查询与控制模块工作流程图1.4.10.状态监视服务功能概述状态监视服务模块在启动后将定时向主控模块申请查询智能家居中各个受向用户发出警报信息。实现原理状态监视服务模块架构见图10图10状态监视服务模块架构图(见图10状态进行监控,以状态监控与报告。定时器则实现对受控量的定时采集。状态监视服务模块工作流程图见图11态监视服务模块工作流程图2.2.命令数据交换器(软交换层)(帧)器之间的通信,所以共有两个协议帧。(门禁除外)UARTMAX232芯片转为RS232电平进行通信,而交换器与各个执行机构之间则是用MAX485芯片TTL电平转换为RS485电平进行通行,构成RS485总线网。接下来,将从以下5个方面进行说明:(1)软件流程说明;(2)硬件电路图说明;(3)协议帧1说明——用于交换器与服务器之间;(4)协议帧2说明——用于交换器和各个执行机构之间;(5)RS485总线网说明。2.2.1.命令数据交换器软件流程图说明交换器的软件流程图如图12所示。图12命令数据交换器程序流程图从图12中,我们可以看到,在初始化后程序就进入对服务器命令帧的侦听作:提取帧类型和各个字段的命令参数;根据帧类型和对应某个执行机构的字段参数,给该执行机构发送命令,如果在定时器超时时间(500毫秒)之内接收到执行机构的执行反馈帧,情况告诉服务器;继续侦听服务器是否发来命令。如果没有接收到服务器的命令帧,则顺序执行以下操作:判断用户是否开启门禁(注意门禁开启关闭与门的开启关闭是不同的)令帧。2.2.2.命令数据交换器硬件电路说明命令数据交换器的硬件电路图如图13是带有2个全双工异步串行口UART的宏晶STC12C5A60S21通过MAX232芯片与服务器通信,串口2通过MAX485芯片与各个执行机构通信。图13命令数据交换器硬件电路图2.2.3.协议帧1说明用于交换器与服务器之间的帧格式如图14所示,各个字段参数如表2所示。图14交换器与服务器通信帧格式表2:交换器与服务器通信协议帧说明表名称字节参数类型备注数帧头2“##”2个’#’号帧尾20x0D0x0A回车键分隔符1‘;’分号帧类型1#defineFT_Control'C'所有帧类型鸿定义//控制类#defineFT_Query'Q'//查询类#defineFT_Reply_Ctrl'R'//控制应答类#defineFT_Reply_Query'K'//查询应答类#defineFT_Emergency'E'//紧急、突发情况#defineFT_Reply_Emergency'T'//紧急、突发情//况回复#defineFT_HandShake'H'//握手帧灯光参5服务器命令:5个参数分别对应5颗数#defineOT_Open'O'灯,”OT”//打开是的#defineOT_Close'C'简写,表示操作类//关闭型,”RT”#defineOT_Undo'U'是”ResultType”的简//不操作写,表示结果类型交换器应答:#defineRT_ON'0'//打开状态#defineRT_Off'1'//关闭状态#defineRT_Unknow'2'//不可控状态#defineRT_Timeout'3'//超时类型空调窗4#defineOT_Default'D'//默认,不改4个字节中第一是空调帘参数变,专门用//于空调温度设定;光参数值相同;第四字第二、三字节是设定空调或当前室内温度,参数值比较特殊,对于设定空调温度时,可以是不改变OT_Default(不是OT_Undo)或”0”~”9”,反馈时时当前室内温度,参数值为”0”~”9”水阀参1与灯光参数值类型相同数门禁参1服务器命令:注意门禁开启关闭与门数#defineGuard_On'0'的打开关闭状态时不同//门禁开启的概念#defineGuard_Off'1'//门禁关闭交换器应答:#defineRT_ON'0'//打开状态#defineRT_Off‘1'//关闭状态2.2.4.协议帧2说明用于交换器和执行结构之间通信的协议帧格式比较简单,如图15所示,各个字段参数说明如表3所示。图15交换器与执行机构通信帧格式表3:交换器与执行机构通信帧说明表名称字节数参数类型备注帧头2“##”2个’#’号帧尾20x0D0x0A回车键分隔符1‘;’分号帧类型1#defineFT_Control'C'//控制类只有4种#defineFT_Query'Q'//查询类#defineFT_Reply_Ctrl'R'//控制应答类#defineFT_Reply_Query'K'//查询应答类目的地1交换器命令;由于门禁是由交址#defineLightAddr0x03换器直接控制的,//灯光模块地址所以没有设计地#defineConditionAddr0x07址//空调窗帘模块地址#defineWaterAddr0x0f//水控制节点地址执行机构应答#defineServerAddr0x7e//服务器地址源地址1交换器命令:由于门禁是由交#defineServerAddr0x7e换器直接控制的,//服务器地址所以没有设计地执行机构应答:址#defineLightAddr0x03//灯光模块地址#defineConditionAddr0x07//空调窗帘模块地址#defineWaterAddr0x0f//水控制节点地址参数长1度都是可知的。#defineLightDataNum0x05//灯光,5个#defineConditionDataNum0x04//空调窗帘,4个#defineWaterDataNum0x01//水阀,1个#defineDoorDataNum0x01//门(禁),1个参数1交换器命令:#defineOT_Open'O'//打开#defineOT_Close'C'//关闭#defineOT_Undo'U'//不操作#defineOT_Default'D'////执行机构应答:#defineRT_ON'0'//打开状态#defineRT_Off'1'//关闭状态#defineRT_Unknow'2'//不可控状态2.2.5.RS485总线网设计方案之间是通过RS485进行通信的,它们分别作为主机或从机接入RS485总线网中,RS485总线网是半双工的,状态,其他状态下都是出于接收状态,不允许从机主动给主机发送信息。都设计一个RS-485MAX485引RS-485接口电路如图16RXD线接单片机RXD引脚,TXD接单片机TXD引脚,LineA接RS485总线网A线,LineB接RS485总线网B线,DIR是接收和发送状态切换引脚,当DIR为低电平时出于接收状态,为高电平时出于发送状态。其中MAX485芯片引脚图如图17所示,引脚功能说明(英文)如图18所示。图16UART转RS485电路图17MAX485芯片引脚图(原技术文档截图)图18MAX485芯片引脚说明(原技术文档截图)2.3.执行机构实现原理(命令执行层)起进行说明。2.3.1.软件流程首先是软件流程,几个执行机构的软件流程都如图19所示。从图中可以看到执行机构上电后,顺序执行以下步骤:(1)初始化完成后开始不断侦听交换器是否发来命令帧;(2)与本机地址一致,即表明该帧是发送给本机的,那么就执行第(3)步,否则丢弃命令帧并返回第(1)步继续监听;(3)同操作,即执行第(4)步;(4)给交换器,然后返回监听命令状态。需要说明的关于控制对象开关状态的检测是用ADC读取控制对象供电电压来判断是否工作的。图19执行机构软件流程图2.3.2.硬件电路采用STC12C5A60S2UART转RS485通信电路就省略,下面仅给出控制对象的接口电路并简单说明。1)灯光控制电路(用LED模拟)图20灯光控制接口电路2)空调控制、检测电路本次设计中,模型化的空调是一个半导体制冷片,额定工作电压12V,电流6A,制情况,本次将直接对220V交流电的通断,进而实现对制冷片的控制。如图21所示,用单片机P01口控制光耦MOC3021耦驱动双向晶闸管BT139,由于光耦和BT139都是双向的,所以能保证交流电正负半周都正确通过,从而使开关电源与制冷片正常工作。图21空调控制电路分压电阻将制冷片的12V供电电压降压后送入单片机AD通道,从而读出制冷片的供电电压值。进而判断空调是否正常工作。3)窗帘控制电路图224条信号线通过R11-R15限流然后再通过4通道的光耦PC847ULN2003驱动芯片把电流放大到500mA序就能控制步进电机正反转,进而完成对窗帘的控制图22窗帘控制电路4)电磁阀控制电路电磁阀的控制电路见图23,由于该电磁阀需要的工作电流为1A,所以本电路采用了大功率开关管130051N4007关管13005则用光耦PC817与单片机隔离,以避免强电对弱电的干扰。图23电磁阀控制电路3.系统测试3.1.本地用户接口测试图24系统启动并开启Web服务器图25系统启动后与GSM模块通信成功图26本地查询、设置界面图27摄像头测试界面3.2.Web服务测试3.2.1.PC端测试在PC端使用InternetExplorePC机器连入同一子网或者确保PC机能用ping命令能够成功探测本系统嵌入式Web服务器的IP地址。测试结果如下:图28从PC机访问嵌入式Web服务器进行查询图29门状态查询图30Web控制图31通过Web远程采集图像图32通过Web查询门禁报警记录3.2.2.手机远程访问Web服务器测试本次测试中使用三星SGH-I8000手机配合PocketIE浏览器对系统Web服务功能段。即可进行测试,结果如下:图33手机通过浏览器查询家中状态图34提交请求进行控制图35通过手机获取图像3.3.手机短信控制测试开始测试前应先确保本系统的GSM模块已插入SIM软件即可进行测试。结果如下:图36获取IP地址图37通过短信查询状态的结果图38门禁警报短信图39状态改变报警短信3.4.系统实际工作效果图图40系统工作时实效果4.特色1、Web网页查询与控制,2、短信查询、控制,34、图形化用户界面。因此本项目组认为本设计具有较强的实用性和推广价值。5.原创性声明点:基于S3C2440ARM芯片的嵌入式开发板使用的是广州天嵌科技有限公司的产品——tq2440开发板(包括摄像头扩展模块)。用于给空调(模拟)和水阀供电的两个开关电源是从广州岗顶新赛格电子城购买现有产品。使用的WinCE5.0嵌入式操作系统是本团队使用PlatformBuilder基于SMDK2410BSP裁剪编译生成的。摄像头模块使用的驱动程序是由本团队从三星公司开源的SMDK2410BSP包中的驱动程序移植得到的。使用的HTTP协议由本团队从上位机上使用的HTTP协议移植得到的。除了以上5个方面,其他一切软硬件均有本团队自行设计和制作。6.附录6.1附录1AbstractAbstract:IntelligentHometechnologyisaimedatusingadvancedtechniquestoimprovetheconvenientlevelofhome-living.Basedonthisconcept,thisarticleprovidesasolutionformonitoringandcontrollingthestatusofahousethroughbothInternetWebServiceandMobilePhoneShortMessageService.KeyWords:IntelligentHomeStatusMonitoringWebServiceSMSControlling6.2附录2查新报告经过网上搜索,与本方案特色(能提供Web篇:ZigBee的智能家居远程控制系统》Web服务器的智能家居主控系统》第一篇论文所采用的嵌入式系统为嵌入式Linux,与本方案相比,没能实现图像采集与Web显示。第二篇论文采用的嵌入式系统与本方案相同,但其Web服务基于WindowsCE系统的可选组件——HTTPD组件,其软件对系统的依赖性比本设计所采用的方案(完全移植一套上位机HTTPWeb显示。6.3附录3参考文献【1】HTTP协议详解.netarchive47.aspx【2】ThreadinginWindowsFormsthreads/【3】DevelopingMultithreadedApplicationsforthe.NETCompactFramework.library/aa446528.aspx【4】Embedded.NETHTTPServerIP/【5】CreateyourownWebServerusingC#IP/【6】SampleHTTPServerSkeletoninC#IP/【7】WebServer(HTTPD)ApplicationDevelopment.library/ms900424.aspx【8】PutalATCommandv1.1【9】RS232、RS485、RS422区别.87.【10】宏晶科技提供STC12C5A60S2单片机使用手册,2008年11月22日更新【11】Maxin公司提供MAX485E芯片使用手册【12】《例说51C语言版)张义和等编著,2008年4月第1版,人民邮电出版社6.4附录4关键程序源代码由于源代码程序多而复杂,在此仅列出关键程序并加以简单说明。6.4.1.软交换层与命令执行层软件代码1)protocol.h和protocol.c交换器和各个执行机构之间通信帧拆分与构造的程序“protocol.h”和文件。这两个文件在交换器和各个执行机构都需要用到,在不同换器模块中这两个文件的具体内容。protocol.h文件:#ifndef__PROTOCOL_H_#define__PROTOCOL_H_#include"STC12C5A60S2.h"#include"intrins.h"#include"mon.h"#include"ctrl485.h"#include"uart2.h"/***************公共部分******************//*帧类型,FT代表FrameType*/#defineFT_Control'C'//控制类#defineFT_Query'Q'//查询类#defineFT_Reply_Ctrl'R'//控制应答类#defineFT_Reply_Query'K'//查询应答类//以下帧类型只用于交换器和服务器#defineFT_Emergency'E'//紧急、突发情况#defineFT_Reply_Emergency'T'//紧急、突发情况回复/*控制帧操作码类型参数,OT代表OperationType*/#defineOT_Open'O'//开#defineOT_Close'C'//关#defineOT_Undo'U'//不改变#defineOT_Default'D'//默认/*查询帧操作码类型参数,*///说明:查询帧暂时不设定操作码部分,所以参数未定义(设计)/*结果类型,RT代表ResultType(操作码字段参数)*/#defineRT_ON'0'//打开状态#defineRT_Off'1'//关闭状态#defineRT_Unknow'2'//不可控状态#defineRT_Timeout'3'////该类型目前仅用于交换器(本地)与上一层(嵌入式控制系统)/*帧符号(掺杂在帧中,用于帧检测、提取、构造等的ASCII码字符(串))*/#defineHeaderString"##"//帧头,用于帧检测#defineHeaderChar'#'#defineTerminatorChar10x0A//帧结束字符1,位置在于帧的最后一个字节#defineTerminatorChar20x0D//帧结束字符1,位置在于帧的倒数第二个字节#defineSeparatorChar';'//帧的分割字符,用于对接收帧的分割和构造帧/****************本地部分*****************/#defineLocalFrameLen30//本地够造控制/查询帧的最大长度,最后一个字节应为'\0'#defineLocalDataLen10//本地预设的命令数据段长度。用于分割接收到从节点发来//的应答帧时提取操作码部分。/***************服务器部分****************/#defineServerAddr0x7e//本地地址,也就是服务器地址/**************灯光控制部分***************/#defineLightAddr0x03//灯光控制节点地址#defineLightDataNum0x05//5个/**************空调控制部分***************///说明:包含窗帘控制#defineConditionAddr0x07//空调控制节点地址#defineConditionDataNum0x04//1+2+1个/***************水控制部分****************/#defineWaterAddr0x0f//水控制节点地址#defineWaterDataNum0x01//1个/***************门禁检测部分****************///门禁检测比较特殊,由交换器直接控制,不是从机#defineDoorDataNum0x01/*命令分割函数,主要作用是将已经去掉帧头和帧尾的命令帧*//*进行分割,得到帧类型、目的地址、源地址、数据长度和数*//*据(操作码)5个部分的参数。*/voidCommand_Split(char*ptr);/*检查收到帧中目的地址和源地址是否与本地规定的一致*/intCommand_CheckLegal(charAddrSelf,charAddrObj);/*命令帧构造及发送函数*/voidCommand_FormatAndSend(ucharTYPE,ucharDADDR,\ucharSADDR,ucharDLen,uchar*DATA);#endif2)protocol.c文件:#include"protocol.h"/*以下5和数据,即操作码(或反馈信息)的全局变量*/ucharType_CmdRec=0;//帧类型ucharDAddr_CmdRec=0;//目的地址ucharSAddr_CmdRec=0;//源地址ucharDLen_CmdRec=0;//数据长度ucharData_CmdRec[LocalDataLen]={'\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'};//注意此处要多留一个位置,并且用‘\0’填充/*****************************************************//*命令分割函数,主要作用是将已经去掉帧头和帧尾的命令帧*//*进行分割,得到帧类型、目的地址、源地址、数据长度和数*//*据(操作码)5个部分的参数。*//*****************************************************/voidCommand_Split(char*ptr){intsegment=0;inti=0;while(*ptr){if(';'==*ptr){/*提取帧类型*/if(0==segment){ptr++;Type_CmdRec=*ptr;segment++;ptr++;}/*提取目的地址*/elseif(1==segment){ptr++;DAddr_CmdRec=*ptr;segment++;ptr++;}/*提取源地址*/elseif(2==segment){ptr++;SAddr_CmdRec=*ptr;segment++;ptr++;}/*提取数据段(操作码)长度*/elseif(3==segment){ptr++;DLen_CmdRec=*ptr;segment++;ptr++;}/*提取数据(操作码)*/elseif(4==segment){for(i=0;i<DLen_CmdRec;i++){ptr++;Data_CmdRec[i]=*ptr;}segment++;ptr++;}elsebreak;}elseptr++;}}/*****************************************************//*目的地址匹配检测函数,匹配返回1,不匹配返回0。*//*****************************************************/intCommand_CheckLegal(charAddrSelf,charAddrObj){inti;/*如果接收到的帧中目的地址与本地地址相同,并且接收到的帧中源地址与当前通信节点方地址相同时,返回1,否则返回0.*/if((AddrSelf==DAddr_CmdRec)&&(AddrObj==SAddr_CmdRec))return1;else{//清零暂存器,并返回0Type_CmdRec=0;DAddr_CmdRec=0;SAddr_CmdRec=0;for(i=0;i<LocalDataLen;i++)Data_CmdRec[i]='\0';return0;}}/*****************************************************//*命令帧构造及发送函数,主要功能是构造一个命令帧,并通*//*过串口发送出去。*//*****************************************************/voidCommand_FormatAndSend(ucharTYPE,ucharDADDR,ucharSADDR,\ucharDLen,uchar*DATA){intcounter=0;//两用,注意切换时重新清零idataucharframe[LocalFrameLen];//清空帧内容for(counter=0;counter<LocalFrameLen;counter++)frame[counter]='\0';counter=0;//计数器清0frame[counter++]=HeaderChar;frame[counter++]=HeaderChar;//帧头2个#号,表示一帧的开始frame[counter++]=SeparatorChar;//分隔符frame[counter++]=TYPE;//帧类型frame[counter++]=SeparatorChar;//分隔符frame[counter++]=DADDR;//目的地址frame[counter++]=SeparatorChar;//分隔符frame[counter++]=SADDR;//源地址frame[counter++]=SeparatorChar;//分隔符frame[counter++]=DLen;//数据(操作码或反馈信息)长度frame[counter++]=SeparatorChar;//分隔符//接下来是操作码或反馈信息,需要DATA指向数组//的最后一个字节为'\0'.while('\0'!=*DATA){frame[counter++]=*DATA;DATA++;}/*最后是帧尾,TerminatorChar1和TerminatorChar2在protocol.h中定义.*/frame[counter++]=TerminatorChar2;//0x0Dframe[counter++]=TerminatorChar1;//0x0A/*添加空字符,控制发送结束(send1_string()函数中的判断条件)*/frame[counter++]='\0';/*串口发送命令帧*/Set_SendMod();//切换485为发送状态send2_string(frame);//发送构造好的帧Set_RecieveMod();//恢复485为接收状态}3)light.h和light.clight.h和light.c文件是用于灯光控制的,其具体内容如下。light.h文件:#ifndef__LIGHT_H_#define__LIGHT_H_#include"STC12C5A60S2.h"#include"intrins.h"/*定义灯的序号,参数LightNum的值*/#defineLight00#defineLight11#defineLight22#defineLight33#defineLight44/*定义每个灯与单片机的接口*/sbitL0=P2^7;sbitL1=P2^6;sbitL2=P2^5;sbitL3=P2^4;sbitL4=P2^3;/*定义灯的开关值,Excution的值*/#defineON0#defineOFF1/*****************************************************//*灯控制函数,主要功能是控制一个灯的开关状态。*//*****************************************************/voidLight_Excute(intExcution,intLightNum);#endiflight.c文件:#include"light.h"/*****************************************************//*灯控制函数,主要功能是控制一个灯的开关状态。*//*****************************************************/voidLight_Excute(intExcution,intLightNum){if(ON==Excution)//开灯{switch(LightNum)//选择那颗灯{caseLight0:L0=ON;break;caseLight1:L1=ON;break;caseLight2:L2=ON;break;caseLight3:L3=ON;break;caseLight4:L4=ON;break;}}elseif(OFF==Excution)//关灯{switch(LightNum)//选择那颗灯{caseLight0:L0=OFF;break;caseLight1:L1=OFF;break;caseLight2:L2=OFF;break;caseLight3:L3=OFF;break;caseLight4:L4=OFF;break;}}else_nop_();}4)curtain.ccurtain.c文件定义的是与窗帘电机控制相关的函数。curtain.c文件:#include"curtain.h"/*******步进电机转动的编码数组*************/ucharcodeforward[]={0xfe,0xfd,0xfb,0xf7};//正转编码数组ucharcodeback[]={0xf7,0xfb,0xfd,0xfe};//反转编码数组/*****************************************************//*窗帘控制函数,主要功能是控制窗帘(电机)的开关状态*//*入口参数为0时打开窗帘,为1时关闭窗帘。*//*****************************************************/voidMoter_Ctr(uintn){uintm,num;switch(n){case1://入口参数为1的时候反转{for(m=800;m>0;m--){for(num=0;num<4;num++){P2=back[num];Delay1ms(3);//延时3毫秒}}}break;case0://入口参数为0的时候正转{for(m=800;m>0;m--){for(num=0;num<4;num++){P2=forward[num];Delay1ms(3);//延时3毫秒}}}break;}5)空调(模拟)和水阀的控制程序6.4.2.用户接口层程序代码说明和接口定义。详细代码请参考附件中的工程文件。说明:状态监控实现代码///监视状态参照表publicMonitorForm;///状态监视线程privateThreadStatusMonitorThread;///状态监视函数privatevoidThreadFunction()///构造函数publicStatusMonitor()///开始监视publicvoidStart()///停止服务publicvoidStopService()作用:获取或设置目标系统的屏幕参数///使程序全屏显示publicstaticvoidShowFullScreen(.objForm)///显示任务栏publicstaticvoidShowHHTaskBar()///隐藏任务栏publicstaticvoidHideHHTaskBar()///获取设备的屏幕宽度publicstaticintWidth///获取设备的屏幕高度publicstaticintHeight作用:实现HTTP请求的解析与HTTP响应报文的生成与回复///用来接受客户端的链接请求privateTcpClientclient;///当前HTTP报文解析状态privateRStateParserState;///HTTP请求报文解析结构体privateHTTPRequestStructHTTPRequest;///HTTP答复报文构造结构体privateHTTPResponseStructHTTPResponse;///TCP协议字符串缓冲区byte[]myReadBuffer;/////验证用户名和密码publicboolVerifyUser(StringName,StringPassword)///HTTP请求、响应报文解析与发送模块publicvoidProcess()作用:实现对整个HTTP服务的控制。///默认TCP侦听端口号privateintportNum=8080;///TCP请求侦听器privateTcpListenerlistener;///服务线程private.Thread2Thread;///开始进行TCP通信侦听publicvoidListen()///开始服务publicvoidStart()///结束服务publicvoidStop()///挂起(暂停)服务publicvoidSuspend()作用:封装全局通用的数据处理方法//指示当前Web页面是否正在读写publicstaticboolWebPageReadable=true;//指示当前用户状态publicstaticUserStatusEnumUserStatus=;///判断字符串是否为数字publicstaticintIsNumeric(stringstr)///生成查询字符串publicstaticstringToQueryString()///生成紧急应答字符串///</summary>publicstaticstringToEmergencyReply()///生成控制信令publicstaticStringToCtrlString(MyWebFormWebForm)///生成短信回复文本publicstaticStringToSMSContent(MyWebFormWebForm)///比较并找出不同的项publicstaticStringCompareWebForms(MyWebFormNow,MyWebFormOld)///从HTTP请求中提取信息(填表)publicstaticboolFillWebFormSturct(refMyWebFormSubmitForm,StringRecdMessage,intPosition)///修改Html中的单选框或复选框publicstaticboolChangeFieldValue(refstringHtmlContent,stringField,boolChecked)///修改Html中的需要显示数值的部分publicstaticboolChangeFieldValue(refstringHtmlContent,stringField,stringValue)///改写主WEB页publicstaticboolReWriteHtml(MyWebFormDisplayForm)///写门禁记录Web页publicstaticboolWriteGateRecord(stringContent)1)OV9650.cs作用:控制OV9650CMOS摄像头///用新线程从摄像头异步获取图像publicvoidCapture()///从摄像头同步获取图像publicstaticboolGetOV9650Pic(boollocal)///将图像转移到Web目录publicstaticvoidMovePicToWebFolder()略代码作用:串口通信实现代码//初始化函数publicSerialPort(StringPortName,intbRate)//打开串口publicboolOpenPort()///关闭当前工作的串口publicvoidClosePort()//从缓冲区中读取一行字符数据publicstringReadLine()///发送一个字节publicvoidSendByte(byteb)///发送一行字符串(用于GPRS0x0D换行publicvoidGPRSSendLine(StringContent)///发送一行字符串,并以0x0d0x0a换行publicvoidSendLine(StringContent)///串口接收事件privatevoidSerialPort_DataReceived(objectsender,.e)2)SMS_作用:短信编解码算法///短信内容编码publicstaticstringsmsPDUEncoded(stringsrvContent)///短信中心号编码publicstaticstringsmsEncodedCenterNumber(stringsrvCenterNumber)///接收短信手机号编码publicstaticstringsmsEncodedNumber(stringsrvNumber)///整个短信的编码publicstaticstringsmsEncodedsms(stringstrCenterNumber,stringstrNumber,stringstrSMScontent)///判断接受的短信编码类型publicstaticboolIsUCS2(stringSMS)///短信内容提取publicstaticstring[]GetEverySMS(stringSMS)///提取短信的发送人电话号码publicsta
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GA/T 2347-2025信息安全技术网络安全等级保护云计算测评指引
- 注册会计师税法中个人所得税法应纳税所得额专项扣除专项附加扣除的计算方法
- 浙教版小学信息科技四年级下册每课教学反思
- 2026河北保定交通发展集团有限公司招聘27人备考题库及答案详解【名师系列】
- 2026陕西西安临潼博仁医院招聘11人备考题库及参考答案详解(综合题)
- 2026黎明职业大学招聘编制内博士研究生学历学位教师24人备考题库(福建)附参考答案详解ab卷
- 2026湖南永州市江永县城乡农贸市场服务有限公司招聘5人备考题库(第二次)附参考答案详解(a卷)
- 2026广西百色市平果市气象局城镇公益性岗位人员招聘1人备考题库附参考答案详解(夺分金卷)
- 2026中共北京市丰台区委党校面向应届毕业生招聘2人备考题库附参考答案详解(夺分金卷)
- 2026陕西西安交通大学教务处文员招聘1人备考题库附参考答案详解(a卷)
- 儿童发热全程管理专家共识2026
- 2026年天津市和平区高三下学期一模语文试卷和答案
- 2026年冀教版(新版)三年级下册数学全册教案(完整版)教学设计含教学-新版
- 2025-2030档案管理行业现状调研与发展方向研究报告
- 妇产科面试题目及答案
- 2026年1月浙江省高考(首考)历史试题(含答案)
- 鞋厂介绍教学课件
- 雀斑激光治疗课件
- 铁死亡课件教学课件
- 剑突下纵隔肿瘤切除术
- 补钙补维生素课件
评论
0/150
提交评论