使用的是webs-2-5(goahead),相关的安装包和解压就不再描述了,下面主要介绍搭建过程
1.解压之后有如下几个目录,其中LINUX是我们需要用的,www目录是系统默认的网站根目录,wwwdemo是demo目录
2. 输入命令 cd LINUX/ 打开MakeFile文件,添加如下
CC = arm-hisiv400-linux-gcc
STRIP = arm-hisiv400-linux-strip
AR = arm-hisiv400-linux-ar
编译选项中加入宏定义 -DUSER_MANAGEMENT_SUPPORT -DASSERT,开启用户管理,这样系统才支持用户登录。
这一步主要是配置交叉编译工具,我们使用的是arm-hisiv400-linux-gcc。
3.找到main.c文件修改如下
/*
* Define the local Ip address, host name, default home page and the
* root web directory.
*/
/*if (gethostname(host, sizeof(host)) < 0) {
error(E_L, E_LOG, T("Can't get hostname"));
return -1;
}
if ((hp = gethostbyname(host)) == NULL) {
error(E_L, E_LOG, T("Can't get host address"));
return -1;
}
memcpy((char *) &intaddr, (char *) hp->h_addr_list[0],
(size_t) hp->h_length);*/
intaddr.s_addr = inet_addr(T("192.168.1.10"));
3. make编译
4.开启用户管理
在webs的执行目录下新建umconfig.txt,添加如下内容
TABLE=users
ROW=0
name=admin
password=KZF
group=admin
prot=0
disable=0
TABLE=groups
ROW=0
name=admin
priv=4
method=3
prot=0
disable=0
TABLE=access
ROW=0
name=/ //这个地方限制根目录访问需要权限
method=3 // method 为0表示不能访问,1表示不需要密码,2表示需要密码,3表示密码加密
secure=0
group=admin
这样访问网页的时候就需要登录密码
4.前后端使用ajax交互,在main.c中添加ajax定义
websUrlHandlerDefine(T("/ajax"), NULL, 0, websAjaxHandler, 0);
websUrlHandlerDefine(T("/goform"), NULL, 0, websFormHandler, 0);
websUrlHandlerDefine(T("/cgi-bin"), NULL, 0, websCgiHandler, 0);
定义ajax处理函数
websAjaxDefine(T("getHdmiInfo"), getHdmiInfo);
static void getHdmiInfo(webs_t wp, char_t *path, char_t *query);
前端请求如下:
if (IsValidate() == true) {
var hostip = window.location.host;
var used = $("#StreamSle").val();
var cbr_Bitrate = $("#BitrateTxt").val();
var vbr_MinQp = $("#MinQpTxt").val();
var vbr_MaxQp = $("#MaxQpTxt").val();
var vbr_MaxBitrate = $("#MaxBitrateTxt").val();
var method = $("#MethodSle").val();
var fps = $("#fpsTxt").val();
$.ajax({
type: "GET",
url: "http://" + hostip + "/ajax/setHdmiInfo?fps="+ fps +"&used="+used +"&cbr_Bitrate="+cbr_Bitrate+"&vbr_MinQp="+vbr_MinQp+ "&vbr_MaxQp="+ vbr_MaxQp+"&vbr_MaxBitrate="+ vbr_MaxBitrate+"&method="+method,
success: function(data) {
if (data == "succeed") {
alert('设置成功,请重启设备!');
} else {
alert('设置失败!');
}
}
});
}
后台会调用getHdmiInfo()函数,相应的处理代码在其中完成。