发 帖  
[话题]

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

2016-7-31 23:37:05  8608
      
   
      
      
           
           
      
   
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   评论 分享淘帖 举报

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

89个成员聚集在这个小组

加入小组

最新话题

热门话题

创建小组步骤

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

电子发烧友网

电子发烧友论坛

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

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

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

厂商专区

飞凌嵌入式

瑞萨单片机论坛

米尔电子

Aigtek安泰电子

斯丹麦德电子

芯佰微电子

其利天下技术小组

道生物联技术社区

视美泰

FCom富士晶振

大大通

合众恒跃

进迭时空

RT-Thread论坛

EASY-EAI灵眸科技

-

技术社区

张飞电子技术社区

KaihongOS技术社区

FPGA开发者技术社区

RISC-V MCU技术社区

HarmonyOS技术社区

-

OpenHarmony开源社区

OpenHarmony开源社区

-

嵌入式论坛

ARM技术论坛

STM32/STM8技术论坛

嵌入式技术论坛

单片机/MCU论坛

RISC-V技术论坛

瑞芯微Rockchip开发者社区

FPGA|CPLD|ASIC论坛

DSP论坛

-

电路图及DIY

电路设计论坛

DIY及创意

电子元器件论坛

专家问答

-

电源技术论坛

电源技术论坛

无线充电技术

-

综合技术与应用

机器人论坛

USB论坛

电机控制

模拟技术

音视频技术

综合技术交流

上位机软件(C/Python/Java等)

-

无线通信论坛

WIFI技术

蓝牙技术

天线|RF射频|微波|雷达技术

-

EDA设计论坛

PCB设计论坛

DigiPCBA论坛

Protel|AD|DXP论坛

PADS技术论坛

Allegro论坛

multisim论坛

proteus论坛|仿真论坛

KiCad EDA 中文论坛

DFM|可制造性设计论坛

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术

传感技术

-

招聘/交友/外包/交易/杂谈

项目外包

供需及二手交易

工程师杂谈|交友

招聘|求职|工程师职场

-

官方社区

发烧友官方/活动

华秋商城

华秋电路

+

元器件搜索引擎

元器件搜索引擎