主页(http://www.pttcn.net):基于嵌入式Web服务器的智能家居主控制系统设计(2) 图5中,HTTPD服务器由main()函数开始,首先配置文件,设置用户ID函数和组ID函数,通过getopt(argc,argv,"s:f:p:u:g:")函数获取配置选项,读取配置。其中:s为standalone服务器运行方式;f为config_fie即配置文件;p为端口号,HTTPD默认端口号为80;u为用户ID即uid;g为组ID,即gid。 然后判断是否工作在standalone.服务器运行方式上,如果是则运行standalone_main()函数,如果不是则访问process request()函数。 如果服务器工作在standalone模式中,依据图5的工作流程,首先客户端与服务器建立链接,建立socket套接字。监听链接,设置uid和gid,如果服务器没接收到请求信息,继续监听;如果接收到请求信息,则创建子线程。子线程调用process_request()处理客户端请求,服务器继续监听链接,如果客户端请求信息,再创建子线程,调用process_request()处理客户端请求,如此多线程并发处理客户端请求。 在process_request()函数中,首先初始化当前时间,然后读取并处理HTTP请求消息的方法Method字段,读取HTTP请求消息的URL字段。主要通过strcpy_nocrlf(),getparents(),translate_name()这3个函数对HTIP请求消息的URL字段进行解析,依据宏LDGGING决定是否打开日志。最后调用send_note()发送请求的文件给客户端。
2.3 Web服务器通信方案设计 CSP方案就是将C语言编写的网络和串口通信程序嵌入到HTML当中,这也是嵌入式网络开发常用的方案。具体流程如下: (1)在定制内核的过程中需要将HTTPD服务器添加到Platform builder中,遵守HTTP的请求-应答规则。 (2)编写CSP通信程序,通过PC机访问Windows CE的Web服务器,打开串口,执行串口控制或网络通信。直接将C语言嵌入到HTML/XML等模板文件中。CSP文件中HTML界面如实验结果所示。通信程序主要函数为建立链接函数SetupConnection()用于建立链接设置DCB初始参数;打开串口函数open_serial()判断是否打开设备串口、设置超时数值、缓冲区大小、创建监视线程等;读数据命令read_respond()用于异步读取缓冲区数据并显示;发送命令send command()用于给设备指令。控制指令powcontrol_command()用于控制电源开关;微调函数adjcontrol_command()用于小幅调节设备功能,如光线明暗,温度高低等;串口监控API函数WINAPICommWatchProc()用于串口缓冲区监控等。 (3)编写好CSP通信文件后,用eyBuild开发包提供的CSP2BIN工具将CSP源文件生成C程序的源文件,再链接上eyBuild提供的CGI运行库,在VC6.0中编译就可生成在Windows CE平台运行的CGI程序。该系统生成的CGI为Intelligenthome.cgi。 (4)将在\website\cgi-bin生成的Intelligenthome.cgi文件拷贝到Windows CE系统的\windows\www\文件夹下面,连接PC机便可从PC机访问Windows CE系统,进而了解传感器信号,控制家电。 该系统使用的数据库为SQLite。SQLite数据库存放家电的基本信息、参数值、状态信息以及传感器当前状态等,这些信息不但反映各种参数的历史状态,而且也是管理、决策的重要信息来源。
3实验结果
4结束语 (中国集群通信网 | 责任编辑:陈晓亮) |