发 帖  
[话题]

【EVB-335X-II试用体验】之基于boa+cgi在EVB-335X-II开发板上实现web服务

2016-7-31 23:37:05  8270
      
   
      
      
           
           
      
   
2. GET方式提取数据的led.cgi
客户端以GET方式提交表单数据时,在服务器端,提交的数据保存在QUERY_STRING的环境变量中,我们可以通过sscanf函数直接解析表单数据。对应命名的表单元素,我们也可以通过函数cgiFormStringNoNewlines获取表单元素的值。创建led.cgi.c文件,程序代码如下:#include     #include     #include     #include     #include "cgic.h"    #include     #include     #include     #include     #include        char mode[64];     void get_mode()    {            cgiFormStringNoNewlines("mode",mode, 64);    }       int cgiMain()    {                       int rnt = 0;         get_mode();                 if(strncmp(mode,"led_off",7) == 0)        {            rnt = 1;                       system("echo 0 > /sys/class/leds/user-led:red/brightness");        }        else if(strncmp(mode,"led_on",6) == 0)        {            rnt = 2;         system("echo 1 > /sys/class/leds/user-led:red/brightness");        }        else        {                     }               cgiHeaderContentType("text/htmlnn");        fprintf(cgiOut,"n");        fprintf(cgiOut,"n");               if(rnt == 0)        {            fprintf(cgiOut," OPEN LED FAILED!n");        }        else if(rnt == 1)        {            fprintf(cgiOut,"close led successed!n");        }        else if(rnt == 2)        {            fprintf(cgiOut,"open led successedn");        }        else        {                    }         fprintf(cgiOut,"n");        fprintf(cgiOut,"n");        close(fd);            return 0;     }
3. 交叉编译led.cgi.c
我们首先下载cgi库,网址如下:https://boutell.com/cgic/#obtain
将下载到的文件cgic207.tar拷贝到Ubuntu系统,执行解压命令:
tar -zxvf cgic207.tar
将加压后的所有文件拷贝到我们存放led.cgi.c的文件夹中,如命令所示:
cp cgic207/* test_cgi
执行交叉编译:
编译结果如图所示:
4. 配置EVB-335X-II开发板
将上面创建的index.html和交叉编译后的leg.cgi文件拷贝到NFS共享目录。
启动EVB-335X-II开发板,设置开发板IP地址:
ifconfig eth0 192.168.1.112
进入/var/www目录,创建目录cgi-bin:
mkdir cgi-bin
将PC端Ubuntu系统中的NFS共享目录下的index.html和led.cgi文件分别拷贝到/var/www和/var/www/cgi-bin目录下,命令如下:
mount -t nfs 192.168.1.109:/nfsshare /mnt-o nolock
cp /mnt/index.html /var/www
cp /mnt/led.cgi /var/www/cgi-bin
修改led.cgi的权限,否则无法执行system函数:
chmod 777 /var/www/cgi-bin/led.cgi
5. 测试
在EVB-355X-II开发板上执行命令,启动boa服务:
boa
执行结果如图所示:
在PC机的浏览器地址栏输入EVB-335X-II开发板的IP地址,如图所示:
初始状态LED灯不亮,如图所示:
点击submin按钮,开发板上的LED灯点亮,如图所示:
PC端的浏览器输出结果信息,如图所示:
我们通过手机的浏览器,登陆EVB-335X-II开发板,如图所示:
选择中close单选按钮,如图所示:
点击submit按钮,开发板LED灯灭,如图所示:
安卓手机浏览器输出信息如图所示:
我们按后退键,重新选择open单选框,如图所示:
单击submit按钮,再次点亮开发板上的LED灯,如图所示:
手机浏览器输入如下信息:
6. 小结
通过配置boa,编写index.html,和cgi代码,交叉编译,我们实现了一个简单的基于EVB-335X-II的嵌入式WEB服务器,我们可以通过PC和移动终端的浏览器远程控制LED灯的亮灭。由于我们采用的是C语言编写的cgi代码,我们之前的试用报告中,基于C语言开发了一些驱动程序,不妨通过WEB服务在浏览器中读取或更改GPIO的状态。结合EVB-335X-II开发板的摄像头驱动,我们完全可以通过WEB服务器,实现远程网页式的工作现场拍照、保存到数据库等操作。

0
LED1:open
       close
      
2016-7-31 23:37:05   评论 分享淘帖 举报

只有小组成员才能发言,加入小组>>

85个成员聚集在这个小组

加入小组

最新话题

热门话题

创建小组步骤

快速回复 返回顶部 返回列表
关注微信公众号

电子发烧友网

电子发烧友论坛

社区合作
刘勇
联系电话:15994832713
邮箱地址:liuyong@huaqiu.com
社区管理
elecfans短短
微信:elecfans_666
邮箱:users@huaqiu.com
关闭

站长推荐 上一条 /6 下一条

快速回复 返回顶部 返回列表