管理信息化物联网基于S3C2440的智能家居监控系统设计_第1页
管理信息化物联网基于S3C2440的智能家居监控系统设计_第2页
管理信息化物联网基于S3C2440的智能家居监控系统设计_第3页
管理信息化物联网基于S3C2440的智能家居监控系统设计_第4页
管理信息化物联网基于S3C2440的智能家居监控系统设计_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

管理信息化物联网基于S3C2440的智能家居监控系统设计基于S3C2440的智能家居监控系统设计摘要WebS3C2440LinuxWebWebBoa,CGIHTML光控制等家居监控功能。关键词智能家居/Web技术Linux系BASEDONS3C2440INTELLIGENTHOUSEHOLDMONITORINGSYSTEMDESIGNABSTRACTSmarthomeisalsoknownasthedigitalhome,generallyreferstotheputerinterfaceandnetworktechnology,basedonavarietyofdigitaldevicestoorganicbinationasoneoftheonlynetworkhomedigitaldevices,includingphones,puters,digitalhomeappliancesandsecuritymonitoringequipment,etc,th-roughwiredorwirelesswaytoconnectthesedevicesforhomeuserstoprovidesimple,safe,reliable,intelligentsubjectbasedontheWebtechnology,bas-edS3C2440microprocessorandembeddedLinuxoperatingsystemsoftwareandhardwareplatformtobuildaWebserverandvideoserver,WebserverusingtheBoa,thevideoservertoadoptMjpg-streamer,binedwithCGItechnologytohandleHTMLform,pletetheuserauthentication,temperatureandhumidityadjustment,infraredMonitoring,lightingcontrolandhomecontrolfunction.KeywordSmarthome,Webtechnology,S3C2440,Linuxsystem目录摘 要IABSTRACTII11物联网概念的起源2智能家居系统概述2研究目的及意义3系统设计主要任务45系统方案论证5555系统总体设计和分析66778硬件电路设计9硬件资源和模块介绍9CPU-S3C24409GPRS11温湿度传感器(SHT10)的介绍1315516软件平台17linux17Boa18Boa18Boa18CGI19CGI19CGI19Qt20AT21AT21GPRS22GPRS23boa24boa24boa25boa26HTML26什么是HTML26HTML27HTML27HTML27HTML27HTMLCGI28CGI29mjpg-streamer29mjpg-streamer29mjpg-streamer30GPRS31系统制作与调试32系统硬件调试32软件及联机调试3232GPRS32boa33CGI35总 结36致 谢37参考文献38附 录139附 录244PAGEPAGE10绪论课题背景年814313化的发展趋势。功能包括通信、设备自动控制、安全防范三个方面。极大方便。级,大大提高了代码利用率,缩短开发周期。因为嵌入式技术是伴随着Internet来中国家庭智能化技术主流发展方向。潮流发展的最新方向!物联网概念的起源1995·1998(MIT)KevinAshton,把非接触式EPC,还有我们1999EPCglobalAuto-IDinternet2008IBM码、射频、传感器包含了进来。监控、管理,构建成为一个庞大的网络体系。智能家居系统概述随着社会信息化的加快,人们的工作、生活和通讯、信息的关系日益紧密。家居智能化技术起源于美国,它是以家为平台进行设计的。制系统。和集成技术建🖂一个由家庭到小区乃至整个城市的综合信息服务和管理系统,以此来提高住宅高新技术的含量和居民居住环境水平。大型的智能家居控制系统通常由系统服务器、家庭控制器(各种模块)、CMTS、交换机、通讯器、控制器、组成。研究目的及意义能源费用节约资金。能家居控制系统简单、功能灵活,扩展容易而被人们广泛接受和应用。居装饰潮流发展的最新方向!系统设计主要任务LinuxPC控制软件的编写与调试。硬件部分:变化,电源部分则为各个部分提供工作电源。软件部分:软件设计部分主要由五大部分构成:即BoaQtCGI方案论证系统方案论证控制部分比较论证:方法一、显示部分方案一:采用数码管显示。文,而加显示的美观性与直观性。最重要的是提供了友好的人机界面。服务器部分TCPUDP同时它只为对嵌入式系统来说至关重要。系统总体设计和分析远程控制button,boacgi(2.1~2.2)2.1(登录界面)2.2(系统设置平台)本地控制QTUI,并完成对住宅内设备信息的读取及控制等操作,从而完成对住宅的管理。总体分析型。选择检测元件,在确定总体方案时,必须首先选择好的被测参数的测量元件,它是影响控制系统精度的重要因素之一。选择执行机构,执行机构是选择时应考虑以下几个问题:被控对象参数的数量;各输入/输出通道是串行操作还是并行操作;各通道数据的传递速率;各通道数据的字长及选择位数;对显示、打印有何要求。系统框图32ARM2.3红外传感模组红外传感模组LED显示模组温湿传感模组CPU2.3(系统框图)硬件电路设计硬件资源和模块介绍CPU-S3C2440ARM920T特点:PLL533M。1.2V400M,1.3V533M。存储器支持1.8V、2.5V、3.0V、3.3V。I/O3.3Vs3c2440具有电源管理功能,可以使系统以普通方式、慢速方式、空闲方式和掉电方式工作,降低产品功耗。内核结构:ARM920T16KBCache、16KBCache管理单元MMU,指令高速存储缓冲器(I-Cache,数据高速存储缓冲器(D-cache)提高指令执行效率及数据存储效率,减少主存带宽和响应性带内部高级微控制总线(AMBA)体系结构(AMB2.0,AHB/APB。存储器控制器特性:S3C2440S3C24403)27328号等。48bank(bank0—bank7bank0bank564、128MB1GB。bank0ROM,其数据线宽只能是1632816325)8bank:bank0--bank5:SRAM、ROM。、ROMSDRAM。6)s3c2440运行。NANDFLASH4Ksram,NANDFLASHSDRAMSDRAM7)SunplusS3C2440BoardV2.03.13.1(S3C2440)GPRSTCP/IPUARTUART该模组具有以下特性:EGSM900MDCS1800MPCS1900MGSMPhase2/2+。PAPPPPTCP/IP支持包交换广播控制通道(PBCCH。无限制的辅助服务数据支持(USSD。MCURS232PC相连接。GPRSJ4(PWRKEY)GPRS3.2GPRSGPRSON/OFF2GPRS3.2(GPRS)GPRS3.33.3(GPRSGPRSATUART语音的通信功能;GPRSSIM3003.43.4(SIM300)3.5:3.5(GPRS)GPRSJ15(GPRS)接口上,注意顺序(实验箱的12VVCC,IOB0PWRKEY……,GNDGND)插接,且不可插反或错位;断开JP7、JP8的所有跳线;断开手柄接口与手柄的连接;配置GPRS;如连接耳麦和天线。3.6(GPRS)温湿度传感器(SHT10)的介绍SHT1xSHT10,SHT11SHT15Sensirion14A/DOTPSHT1x:3.7:3.7(sht103.8:引脚名称描述1GND地2DATE串行数据3SCK串行时钟,输入口4VDD电源NCNC必须为空3.8(接口定义图)3.9:3.9(SHT10)I2CI2CSCKDATA引脚为三态结构,用于读取传感器数据。当向传感器发送命令时,DATASCKSCK红外传感器的介绍红外技术在现代科技、国防和工农业等领域获得了广泛的应用。红外传感系统是用红外线为介质的测量系统,按照功能能够分成五类:辐射计,用于辐射和光谱测量;搜索和跟踪系统,用于搜索和跟踪红外目标,确定其空间位置并对它的运动进行跟踪;热成像系统,可产生整个目标红外辐射的分布图像;红外测距和通信系统;混合系统,是指以上各类系统中的两个或者多个的组合。和热探测器(基于热效应。红外传感器图3.10:红外模块实物图3.11图3.10(红外传感器实物图)3.11(红外模块实物)1随后恢复到低电平。3.252.5A,故外加的稳压器件必须达到足以提供12V到5V的转换,必须特别注意的是,如图3.13由s3c2440芯片完成开关电源转换需要大功率的电感(100uH)和电容,以提高储能的能力,达到单元电路的耗电需求。s3c24405.0V3A3.13(5V)软件平台linuxLinux是一套Unix-like的操作系统,是Unix的一种,它控制整个系统基本服务的核心程序(kernelLinusLinux」这的原始程序,换句话说,LinuxLinuxLinuxLinuxLinuxLinuxGPL有实用性,Linux系统中常用的系统程序大部份是美国自由软件基金会(FreeSoftwareFoundation)开发出来的软件,而且也有不少机构或个人为LinuxLinux么多「种」的原因。PCLinuxKDE、Gimp、GnomeX作环境和应用软件。这是一群完整的软件,包含安装程序、核心、应用软件、X、驱动程序等的Internet以成功地安装妥当,接口亲和力不足和硬件支持不良是最大的障碍。BoaBoaBoaHTTPWeb当有连接请求到来时,它并不为每个连接单独创建进程,也不通过复制自身进程来处理多链接,而是通过建🖂HTTPHTTP同时它只为CGI程序创建新的进程,这样就在最大程度上节省了系统资源,这对嵌入式系统来说至关重要.同时它还具有自动生成目录、自动解压文件等功能,因此,BoaHTTP具有很高的应用价值。BoaBoaWeb求、响应请求、向客户端返回请求结果等任务.它的工作过程主要包括:WebTCP;当有客户端连接请求时,Web相关请求信息;在接收到客户端的连接请求之后,分析客户端请求,解析出请求的方法、URL理;WebTCPBoa服务器根据请求方法的不同,做出不同的响应.如果请求方法为HEADGET,则在返回响应首URLPOST,则将客户发送过来的表单信息传送给相应CGICGICGI理等来实现的。CGICGICGICommonGatewayInterfaceBBSCGICGIHTML(interfaceCGICGI义的一些东西就可以了。相应编译器,而且对大多数程序员而言都算得上很熟悉,因此,CCGI编程的首选语言之一。CGICGI”(CommonGatewayInterface)HTTPCGIServerHtml页面的接口。CGICGI器产生相应的处理,并将相应的信息反馈给浏览器。CGICGI1)InternetCGI服务器把结果送回到用户。CGI出和环境变量。CGICGICGICCGIHTMLstdoutHTMLCGICGI:"Content-Type:text/"HTML本,而且可以输出图像,声音之类的东西,http要说明文件类型。两个重要的CGI环境变量:,URLCONTENT-LENGTH:POSTQtQtC++图形用户界面库,由挪威TrollTech1995年底出品。Trolltech公司在1994年成🖂,但是在1992年,成🖂TrolltechQt,Qt19952008131NokiaTrollTechQtNokia用户开发来说是非常方便的。Qtsignals/slotscallback,这使得各个元件之间的协同工作变得十分简单。丰富2D/3DOpenGL(开放图形语言、大量的开发文档、XMLWebkit本地界面与Web内容的无缝集成,但是真正使得Qt在自由软件界的众多Widgets(Lesstif,Gtk,EZWGL,Xforms,fltkQtKDE(桌面环境。ATATAT即AttentionATTE(TerminalEquipment)DTE(DataTerminalEquipment)向TA(TerminalAdapter)或MS(MobileStation)GSM用户可以通过AT命令进行呼叫、短信、电话本、数据业务、补充业务、传真等方面的控制。SIM300ATGSM07.05、GSM07.07、ITU-TAT命令,除此之外,SIM300还支持SIM公司扩展的AT命令。被省略。SIM300常用的AT命令表1.1。详细的AT命令说明请参考《SIM300ATCommandSet1.1AT命令命令格式功能描述ATAT测试连接是否正常。AT+CMIC=?AT+CMIC=<channel>,<gain>MICAT+CMGF=?AT+CMGF=[<mode>]设置短消息格式。AT+CHFA=?AT+CHFA=<stat>切换声音通道。AT+CLVL=?AT+CLVL=<level>喇叭音量调节。AT+CSCS=?AT+CSCS=[<chset>]TEATDATD[<n>][<mgsm>][;]ATHATH[0]呼叫挂起。ATAATA呼叫应答。AT+VTS=?AT+VTS=<tone>DTMFAT+CMGS=?

AT+CMGS=<da>[,<toda>]AT+CMGS=<length>

发送短消息。AT+CMGR=? AT+CMGR=<index>[,<mode>] 读取短消息。GPRS上电115200;测试ATOK(成功)ERROR(失败。设置麦克风设置MIC:AT+CMIC=0,150,1,01逗号后即音量大小是对方听到你的声音大小。设置耳机设置耳机:AT+CHFA=1(0/1;sim300设置音量设置音量:AT+CLVL=100范围是0~100,数值越小,则音量越轻。拨打电话ATD:ATD112;挂机:ATH二次拔号电话中拨号:AT+VTS=??为要拨的号码AT+VTS=1接电话响应:RING响应:OK命令:ATH响应:NOCARRIER电话已切断来电显示开来电显示:AT+CLIP=1+CLIP:"",161,"",,"",0关来电显示:AT+CLIP=0GPRS设置短消息模式AT+CMGF=nn=1OK。一般选择文本格式。设置短消息编码方式AT+CSCS=<string>可选:"GSM"或"UCS2"或"IRA"GSM:只支持英文编码UICODE:支持任意文字编码可根据实际情况选择,但一般选择UCS2码。设置短消息中心号码AT+CSCA=<string>,OK。一般不设置。发送短信(AT+CMGS)UICODEAT+CSCS="GSM",ASCII送短消息:目的手机号码"AT+CMGS=""UICODE码,收信息时UICODE码要转成国标码AT+CMGS=""2>输入短信内容发送电话号码后超级终端显示">"提示输入短信正文。>输入完毕后,按ctrl+z发送正文。发送信息标志注:MCU"\032"列举短消息:AT+CMGL="RECUNREAD"列举未读消息"RECREAD"接受已读存储未发送"STOSENT"存储已发送"ALL"所有消息阅读短消息该命令后模块返回:+CMGR:0,0,24:OK:ERROR。删除短消息OK;ERROR。boaboa(1)rgboa-0.94.13-.gz(2)tarzxvfboa-0.94.13-.gz(3)cdboa-0.94.13-src(4)cd./src(5)./configuremakecleanmake(注:makedefines.h将:CC=gccCPP=gcc-E改为:CC=arm-linux-gccCPP=arm-linux-gcc-Eboa建🖂/Smart_homeboa_conf目录,并复制到该目录。修改访问权限:UsernobodyUser0GroupnogroupGroup0设定日志目录:修改文件;ErrorLogSmart_homelog/error_logAccessLogSmart_homelog/access_log设置文件目录:DocumentRootSmart_homewww设置默认索引文件(主页):DirectoryIndexScriptAliasSmart_home根据3、4、6步的设置建🖂相关文件夹并放入文件。boa(1)的存放目录:默认是在目录的,boa运行时会自动去找目录。这个设定是在defines.h文件中定义的,因此必须在编译之前进行修改在编译之前进行修改#defineSERVER_ROOT"etc/boa_conf"为#defineSERVER_ROOT“Smart_homeboa_conflog如:ErrorLogSmart_homelog/error_logAccessLogSmart_homelog/access_log如:DocumentRootSmart_homewww如:ScriptAliasSmart_home存放目录:拷贝文件到开发板/Smart_home/boa件中修改如:MimeTypesSmart_home若不使用则改为:MimeTypesnullmakeclean;make运行boa程序,打开网址并观察现象。HTMLHTMLHTMLHTML(HyperTextMarkupLanguage。HTML(MarkupLanguage。标记语言是一套标记标签(markuptag)。HTMLHTMLHTMLHTML标签中的第一个标签是开始标签,第二个标签是结束标签。开始和结束标签也被成为开放标签和闭合标签。HTMLHTML,HTMLHTMLHTMLHTML;webHTMLHTML签来解释页面的内容。HTML文本图像超链接,超链接是网站的灵魂,是从一个网站指向另一个目的端的链接。表格,表格是网页排版的灵魂,通过表格可以精确地控制各网页元素在网页中的位置。表单,表单是用来搜集站点访问者的域集。站点访问者填写表单的方的表单处理程序,以各种不同的方式进行处理。GIF是太多动画让人眼花潦乱,无心细看。Flash框架,框架是网页的一种组织形式,将相互关联的多个网页的内容组织在一个浏览器窗口中显示。网页中除了这些最基本的元素,还包括横幅广告、字幕、悬停按钮、日戳、计数器、音频、视频等。HTML<><head></head><body></body></>分。头部起于<head>止于</head>,<head></head>之间是描述网页的头元素;头元素包含关于文档的概要信息,头元素内的元素不会被浏览器显示出来;根据HTML标准,仅有几个标签在HTML的头部分是合法的;它们是:<base>,<basefont>,<title>,<link>,<meta>,<style>和<script>。主体起于<body>止于</body>,<body></body>之间是可见的页面内容HTMLCGIGET<><head><TITLE>CGI1:helloCGI</TITLE></head></body><FORMACTION="demo1.cgi"><P>CGI<br><P>m:<br><INPUTNAME="m"SIZE="5"><P>n:<br><INPUTNAME="n"SIZE="5"><BR><INPUTTYPE="SUBMIT"VALUE="确定"></FORM></body></>POST<><head><TITLE>CGI1:helloCGI</TITLE></head></body><FORMACTION="demo1.cgi"METHOD="POST"><P>CGI<br><P>name:<br><INPUTNAME="name"><P>password:<br><INPUTTYPE="password"NAME="password"><INPUTTYPE="SUBMIT"VALUE="确定"></FORM></body></>POSTGETPOST的方法。CGICGIled一下是login.c的部分函数程序:intmain(void){*/char*str_len=NULL;intlen=0;charbuf[100]="";charlogin_user[20]="";charpasswd[20]="";intexit=0;printf("%s\r\n\r\n","Content-Type:text/");登录结果</TITLE><br>\n");str_len=getenv("CONTENT_LENGTH");mjpg-streamermjpg-streamer"mjpg-streamer",是用于从摄像头采集图像的视频服务器,它把图像量的计算效率(这件事交给硬件了。mjpg-streamer重新配置内核使内核支持所用的摄像头,用makemenuconfig,如图12(3)Mjpg-stream(4)安装浏览器播放视频流所需要的插件J2SERuntimeEnviroment5.0Update22频流。GPRSATGPRSvoidGprs::GPRS_SendString(char*cmd){do{write(fd_uart,cmd,strlen(cmd));GPRS_Recv_String();}while(strncmp(RecvBuf,"\r\nOK",4)==0);}系统制作与调试系统硬件调试GPRS选项。10MCURS232PCGPRSSIMJ5JP1GPRSMCUPC软件及联机调试主控程序调试pc🖂好连接,以便互相传输数据和文件;然nfssamba务器将对后来的设计提供更多的方便。给开发板烧写操作系统(bootloader,kernelboaGPRSGPRSGPRS_init()GPRSATGPRSGprs::Gprs(){初始化手机模组printf("GPRS..\n");gprsGPRS_SendString("AT\r\n");printf("串口正常\n");GPRS_SendString("AT+CMIC=0,15\r\n");printf("设置麦克\n");GPRS_SendString("AT+CMGF=1\r\n");printf("设置短信\n");GPRS_SendString("AT+CHFA=1\r\n");//使用耳机printf("耳机设置\n");GPRS_SendString("AT+CLVL=100\r\n");//设置最大音量printf("设置音量\n");USC2printf("GSM\n");GPRS_SendString("AT+CLIP=1\r\n");//开启来电显示功能printf("来电显示设置\n");}程序详细设计参见附录,此处遇到问题是如何提取出短信内容以便以后unicode内容,经反复调试成功读取短信内容,为后面使用提供方便。boatarzxvfboa-0.94.13-.gz./configureMakefile,make5.1,要理清楚配置文件中的设置的目的与相应文件的位置,否则在以后的运行中会出现错误或服务器无法运行等;5.1(配置文件)调试过程中更要注意和两个文件的作用,前一个是出错日志记录文件,🖂的时候如果不把他们设置为可写的当你在运boa5.2;5.2(编写脚本程序)CGICGI附录!总结BoaCGIHTMLLcdQtgprsAT位的远程控制和安全报警等。虽然本设计基本上实现了任务的大部分功能但是还有一些功能不能很望的智能控制家居就能走进普通家庭,让我们更好的享受生活。致谢支持。困难的信心,所以我还非常的感谢我的大学给予我的这个锻炼的机会。参考文献秦勃,王琳,邵峰晶等.无线嵌入式智能家居环境网关[J].计算机应用研究,2006,(06).InternetWeb[J].仪表技术与传感器,2002,(08).[3]BorkoH,BernierC.L.Indexingconceptsandmethods[M].NewYork:AcademicPr.,1978,167-168.杨叔子,史铁林,李东晓.分布式监测诊断系统的开发与设计[J].振动、测试与诊断,1997,(01).王文利,段宝岩,刘宏.基于网络的机械设备远程监测与故障诊断[J].制造业自动化,1999,21(4):32-35周洪,胡文山,张🖂明等.智能家居控制系统[M].中国电力出版社,2006,(01).陶波,丁汉,熊有伦.基于嵌入式Internet的工业控制[J].测控技术,2001,(08).吴仲城,戈瑜,虞承端等.传感器的发展方向——网络化智能传感器[J].电子技术应用,2001(02).杨士元.“智能家居”系列讲座之一掀开智能家居的面纱[J].中国计算机用户,2002,(33).卢伟国,杨本强.嵌入式WEB传感器的网络化接口设计[J].电子技术应用,2004,(02).李宏宇.基于嵌入式平台远程空调控制系统的研究[M].东北:东北农业大学.2009.[12]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社.2008.大学出版社.2010.[14]EdwardA.inComputers.2002,(56).1GPRSgprs.h#ifndefGPRS_H#defineGPRS_H#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<fcntl.h>#include<termios.h>#include<sys/types.h>#include<unistd.h>#include<fcntl.h>#include<sys/stat.h>#include<sys/ipc.h>#include<string.h>#include<time.h>classGprs{public:Gprs();发送短信voidTel_Call(char*Tel_Num);//打电话intTel_Hear();private:intfd_uart;//定义一个串口charRecvBuf[100];voidGPRS_SendString(char*cmd);voidGPRS_Recv_String();intUart_Init(intnum);voidTel_Ans();voidTel_Hang();};#endif//GPRS_H以下是程序:#include"gprs.h"#include<QMessageBox>Gprs::Gprs(){初始化手机模组printf("GPRS..\n");gprsGPRS_SendString("AT\r\n");printf("串口正常\n");GPRS_SendString("AT+CMIC=0,15\r\n");printf("设置麦克\n");TEXT:1,PDU:0printf("设置短信\n");GPRS_SendString("AT+CHFA=1\r\n");//使用耳机printf("耳机设置\n");设置最大音量printf("设置音量\n");USC2printf("GSM\n");GPRS_SendString("AT+CLIP=1\r\n");//开启来电显示功能printf("来电显示设置\n");}voidGprs::GPRS_SendString(char*cmd){do{write(fd_uart,cmd,strlen(cmd));GPRS_Recv_String();}while(strncmp(RecvBuf,"\r\nOK",4)==0);}voidGprs::GPRS_Recv_String(){memset(RecvBuf,0,sizeof(RecvBuf));read(fd_uart,RecvBuf,sizeof(RecvBuf));}intGprs::Uart_Init(intnum){structtermiosoptions;char*uart[3]={"s3c2410_serial0","s3c2410_serial1","s3c2410_serial2"};fd_uart=open(uart[num],O_RDWR);if(fd_uart<0){printf("open%serror \n",uart[num]);returnfd_uart;}tcgetattr(fd_uart,&options);cfsetispeed(&options,B115200);cfsetospeed(&options,B115200);options.c_iflag&=~(IGNBRK|BRKINT|PARMRK|ISTRIP|IGNCR|ICRNL|IXON);options.c_cflag&=~PARENB;//无奇偶校验位options.c_cflag&=~CSTOPB;//1options.c_cflag&=~CSIZE;options.c_cflag|=CS8;//8options.c_lflag&=~(ICANON|ECHO|ECHOE|ISIG);tcsetattr(fd_uart,TCSANOW,&options);}voidGprs::mobile_message(char*Tel_Num,char*message){usleep(200*1000);GPRS_SendString("AT+CMGS=\"");GPRS_SendString(Tel_Num);GPRS_SendString("\"\n");GPRS_SendString(message);GPRS_SendString("\032");GPRS_Recv_String();}intGprs::Tel_Hear(){while(1){GPRS_Recv_String();#if1if(strncmp(RecvBuf,"\r\nOK",4)==0){printf("Waitingplease!!!!!!!!!!\n");//QMessageBox::information(0,"提示","电话拨通中");}#endifif(strncmp(RecvBuf,"\r\nBUSY",6)==0)//对方忙碌{printf("TheTel_NumberBusy\n");提示","对方忙碌");return1;}if(strncmp(RecvBuf,"\r\nNOANSWER",11)==0)//无人接听{printf("NoAnswer\n");提示","无人接听");return2;}if(strncmp(RecvBuf,"\r\nNOCARRIER",12)==0)//对方已关机{printf("nocarrier\n");提示","对方已挂机");return3;}if(strncmp(RecvBuf,"\r\n+CMEERROR:27",16)==0)//取消呼叫{printf("callover\n");提示","取消呼叫");return4;}}}voidGprs::Tel_Call(char*Tel_Num){GPRS_SendString("ATD");GPRS_SendString(Tel_Num);GPRS_SendString(";\r\n");printf("Callingnow!!!!!!!!!!!!!\n");}voidGprs::Tel_Ans(){GPRS_SendString("ATA\r\n");}voidGprs::Tel_Hang(){GPRS_SendString("ATH\r\n");usleep(20000);}2CGIlogin.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include"sqlite3.h"intmain(void){*/char*str_len=NULL;intlen=0;charbuf[100]="";charlogin_user[20]="";charpasswd[20]="";intexit=0;printf("%s\r\n\r\n","Content-Type:text/");printf("<>\n<TITLE>CGI3:登录结果</TITLE><br>\n");str_len=getenv("CONTENT_LENGTH");if((str_len==NULL)||(sscanf(str_len,"%d",&len)!=1)||(len>80))printf("sorry!error!");fgets(buf,len+1,stdin);if(strstr(buf,"imgbtn3")!=0){memset(buf,0,sizeof(buf));printf("<metacontent=\"0;URL=/\"http-equiv=\"refresh\">");return0;}if(strstr(buf,"imgbtn1")!=0){exit=1;}sscanf(buf,"textfield22=%[^&]&textfield2=%[^&]",login_user,passwd);/*********************************************/sqlite3*db=NULL;,resultcharsql[80]="";sqlite3_stmt*stmt;//结果集constchar*tail;result=sqlite3_open("smart_",&db);if(result!=SQLITE_OK){fprintf(stderr,"can'topendatabase:%s",sqlite3_errmsg(db));return-1;}if(exit==1){strcpy(sql,"updateuserlistsetOnline='0'");result=sqlite3_prepare(db,sql,(int)strlen(sql),&stmt,&tail);if(result!=SQLITE_OK){fprintf(stderr,"database:%s",sqlite3_errmsg(db));return-1;}result=sqlite3_step(stmt);成功退出登录,谢谢您的使用");return0;}sprintf(sql,"select*fromuserlistwhereName='%s'",login_user);result=sqlite3_prepare(db,sql,(int)strlen(sql),&stmt,&tail);if(result!=SQLITE_OK){fprintf(stderr,"database:%s",sqlite3_errmsg(db));return-1;}result=sqlite3_step(stmt);ncols=sqlite3_column_count(stmt);if(result==SQLITE_ROW){if(strcmp(passwd,(char*)sqlite3_column_text(stmt,1))==0){if((char*)sqlite3_column_text(stmt,2)==NULL){sprintf(sql,"updateuserlistsetOnline='1'whereName='%s'",login_user);result=sqlite3_prepare(db,sql,(int)strlen(sql),&stmt,&tail);result=sqlite3_step(stmt);sqlite3_finalize(stmt);printf("<metacontent=\"0;URL=/\"http-equiv=\"refresh\">");}else{if((strcmp("0",(char*)sqlite3_column_text(stmt,2))==0)||((char*)sqlite3_column_text(stmt,2)==NULL)){sprintf(sql,"updateuserlistsetOnline='1'whereName='%s'",login_user);result=sqlite3_prepare(db,sql,(int)strlen(sql),&stmt,&tail);result=sqlite3_step(stmt);sqlite3_finalize(stmt);printf("<metacontent=\"0;URL=/\"http-equiv=\"refresh\">");}elseprintf("<p>用户已在线,请返回重新输入<ahref=\"/\">返回登录</a>");}}else密码错误,请返回重新输入<ahref=\"/\">返回登录</a>");result=sqlite3_step(stmt);}else用户名或密码错误,请返回重新输入<ahref=\"/\">返回登录</a>");sqlite3_finalize(stmt);sqlite3_close(db);return0;}setled.c#include<stdio.h>#include<stdlib.h>//getenv()#include<string.h>#include<fcntl.h>//open()#include<unistd.h>//read(),write(),close()#include<sys/ioctl.h>#defineSET_OUTPUT0x01#defineSET_LOW0x10#defineSET_HIGH0x11#defineGPIO_SET_MULTI_PIN_OUT6intled=-1;intmain(void){led=open("gpgdriver",O_RDWR);ioctl(led,GPIO_SET_MULTI_PIN_OUT,0x07);intdata;LEDread(led,&data,1);printf("Content-Type:text/\r\n");printf("\r\n");//获取控制命令char*query=getenv("QUERY_STRING");if((query!=NULL)&&(strlen(query)>0)){LED//inton_off;intlight,on_off;//分析控制命令if(sscanf(query,"led%d=%d",&light,&on_off)==2){if(on_off){data|=(1<<light);write(led,&data,1);}else{data&=~(1<<light);write(led,&data,1);}}}printf("OK");close(led);return0;}set_temperature.c#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<fcntl.h>#include<string.h>voidget_tem_set(char*tem_info);intmain(intargc,char*argv[]){intfd=-1;intfifo_fd;char*data=NULL;chartem_info[200];char*str;printf("%s\r\n\r\n","Content-Type:text/");data=getenv("QUERY_STRING");printf("%s",data);if((fd=open("test",O_RDWR|O_CREAT,0666))<0){perror("open");exit(1);}if(data!=NULL){fd=open("",O_RDWR|O_CREAT,0666);write(fd,data,sizeof(data));}return0;}voidget_tem_set(char*tem_info){inthighest_tem=0;intmoderate_tem=0;intlowest_tem=0;char*tem;intfd;chartemp[10]="";tem=strchr(tem_info,'=');tem[3]='\0';tem++;highest_tem=atoi(tem);tem=tem+3;tem=strchr(tem,'=');tem[3]='\0';tem++;moderate_tem=atoi(tem);tem=tem+3;tem=strchr(tem,'=');tem[3]='\0';tem++;lowest_tem=atoi(tem);if((fd=open("test",O_RDWR|O_CREAT,0666))<0){perror("open");exit(1);}memset(temp,0,sizeof(temp));sprintf(temp,"%d",lowest_tem);write(fd,temp,strlen(temp));}set_tem_hum.c#include<stdio.h>#include<stdlib.h>#include<fcntl.h>#include<unistd.h>#include<string.h>#include"sqlite3.h"/*函数声明*/intmain(void){char*data;charsave[6][4];char*name[6]={"最高温度","最高湿度","适中温度","适中湿度","最低温度","最低湿度"};inti=0;printf("%s\r\n\r\n","Content-Type:text/");data=getenv("QUERY_STRING");sscanf(data,"%*[^=]=%[^&]&%*[^=]=%[^&]&%*[^=]=%[^&]&%*[^=]=%[^&]&%*[^=]=%[^&]&%*[^=]=%[^&]&",save[0],save[1],save[2],save[3],save[4],save[5]);sqlite3*db=NULL;,resultcharsql[1024]="";sqlite3_stmt*stmt;//结果集constchar*tail;result=sqlite3_open("set_tem_",&db);for(i=0;i<6;i++){sprintf(sql,"updatesettemhumsetnum='%s'wherename='%s'",save[i],name[i]);result=sqlite3_prepare(db,sql,(int)strlen(sql),&stmt,&tail);result=sqlite3_step(stmt);sqlite3_finalize(stmt);}strncpy(sql,"select*fromsettemhum",strlen("select*fromsettemhum")+1);result=sqlite3_prepare(db,sql,(int)strlen(sql),&stmt,&tail);result=sqlite3_step(stmt);ncols=sqlite3_column_count(stmt);printf("<><head><title> 系 统 设 置隶书\">");printf("<fontsize=\"+1\"color=\"#FE0000\"face=\"隶书\">");while(result==SQLITE_ROW){printf("<br>%s\t%s</br>",sqlite3_column_text(stmt,0),sqlite3_column_text(stmt,1));result=sqlite3_step(stmt);}sqlite3_finalize(stmt);sqlite3_close(db);设置成功点击返回</a>");printf("</body></>");return0;}以下是manage_login.c程序:#include<stdio.h>#include<stdlib.h>#include<string.h>#include"sqlite3.h"intmain(void){*/char*str_len=NULL;intlen=0;charbuf[100]="";charlogin_user[20]="";charpasswd[20]="";printf("%s\r\n\r\n","Content-Type:text/");printf("<>\n<TITLE>CGI3:管理员登录</TITLE><br>\n");str_len=getenv("CONTENT_LENGTH");if((str_len==NULL)||(sscanf(str_len,"%d",&len)!=1)||(len>80))printf("sorry!error!");fgets(buf,len+1,stdin);printf("%s\n",buf);sscanf(buf,"textfield=%[^&]&textfield2=%[^&]",login_user,passwd);printf("%s,%s",login_user,passwd);/*********************************************/if(strcmp(login_user,"root\0")==0){sqlite3*db=NULL;,resultcharsql[80]="";sqlite3_stmt*stmt;//结果集constchar*tail;result=sqlite3_open("smart_",&db);if(result!=SQLITE_OK){fprintf(stderr,"can'topendatabase:%s",sqlite3_errmsg(db));return-1;}sprintf(sql,"select*fromuserlistwhereName='%s'","root");result=sqlite3_prepare(db,sql,(int)strlen(sql),&stmt,&tail);if(result!=SQLITE_OK){fprintf(stderr,"database:%s",sqlite3_errmsg(db));return-1;}result=sqlite3_step(stmt);ncols=sqlite3_column_count(stmt);if(result==SQLITE_ROW){if(strcmp(passwd,(char*)sqlite3_column_text(stmt,1))==0)printf("<metacontent=\"0;URL=/\"http-equiv=\"refresh\">");else密码错误,请返回重新输入<ahref=\"/manage_\">返回登录</a>");result=sqlite3_step(stmt);}sqlite3_finalize(stmt);sqlite3_close(db);}else用户名错误,请返回重新输入<ahref=\"/manage_\">返回登录</a>");return0;}以下是gprs_alarm_set.c程序:#include<stdio.h>#include<stdlib.h>#include<fcntl.h>#include<unistd.h>#include<string.h>#include"sqlite3.h"/*函数声明*/char*url_decode(constchar*url,char*output);voidjudge_type(charj_type[100]);chartype[100];//报警类型intmain(void){char*data;charphone[20]="";//手机号发送内容chartext[400];printf("%s\r\n\r\n","Content-Type:text/");data=getenv("QUERY_STRING");url_decode(data,text);sscanf(text,"phone=%[^&]&%[^&]&ment=%[^&]",phone,type,ment);judge_type(type);memset(text,0,sizeof(text));sprintf(text,"%s&%s&%s",phone,type,ment);sqlite3*db=NULL;,resultcharsql[1024]="";sqlite3_stmt*stmt;//结果集constchar*tail;result=sqlite3_open("",&db);sprintf(sql,"updatealarmsetphone='%s'wheretype='%s'",phone,type);result=sqlite3_prepare(db,sql,(int)strlen(sql),&stmt,&tail);result=sqlite3_step(stmt);sqlite3_finalize(stmt);sprintf(sql,"updatealarmsetment='%s'wheretype='%s'",ment,type);result=sqlite3_prepare(db,sql,(int)strlen(sql),&stmt,&tail);result=sqlite3_step(stmt);sqlite3_finalize(stmt);strncpy(sql,"select*fromalarm",strlen("select*fromalarm")+1);result=sqlite3_prepare(db,sql,(int)strlen(sql),&stmt,&tail);result=sqlite3_step(stmt);ncols=sqlite3_column_count(stmt);printf("<><head><title> 报 警 设 置隶书\">");printf("<br>报警类型\t\t</br>");printf("<fontsize=\"+1\"color=\"#FE0000\"face=\"隶书\">");while(result==SQLITE_ROW){printf("<br>%s\t%s\t%s</br>",sqlite3_column_text(stmt,0),sqlite3_column_text(stmt,1),sqlite3_column_text(stmt,2));result=sqlite3_step(stmt);}sqlite3_finalize(stmt);sqlite3_close(db);设置成功点击返回</a>");printf("</body></>");return0;}/*判断报警类型函数*/voidjudge_type(charj_type[100]){memset(type,0,sizeof(j_type));if(strcmp(j_type+5,"tem_low")==0

温馨提示

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

评论

0/150

提交评论