完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
【EVB-335X-II试用体验】之基于boa+cgi在EVB-335X-II开发板上实现web服务 随着移动终端的广泛应用,在实际的项目中,客户总是希望能够通过手机直接查看车间数据采集系统的一些动态信息,实现随时随地都可以接入系统网络。对于安卓手机,我们可以看法基于安卓的APP,但是对于IOS系统,我们有需要开发基于IOS的相关APP,跨平台特性差,而我们采用WEB的形式开发系统,能够解决跨平台特性,只有移动终端能够介入车间局域网,并且安装有浏览器,既可联网查看车间数据采集终端的数据。 由于嵌入式系统的软硬件资源的限制,在EVB-335X-II开发板上很难运行PHP等动态网页,针对嵌入式系统的特点,我们采用基于boa+cgi的WEB解决方案,交叉编译后的boa只有50几K,占用flash小,响应请求快,数据安全性高。 我们可以根据网上的公开资源交叉编译boa,过程也较简单。鉴于EVB-335X-II开发板上已经移植并配置好了boa,所以我们这篇试用报告就不涉及到对boa的移植过程了,直接详细介绍如何开发基于boa+cgi的远程LED点灯程序。 1. boa与cgi的概述 关于boa与cgi的概述,网上有很多文章介绍,这里主要介绍一下EVB-335X-II开发板上的boa。 假如EVB-335X-II开发板的IP地址为192.168.1.112,我们在IE浏览器中直接输入该IP地址,EVB-335X-II开发板上运行的boa程序将响应IE浏览器的请求,并根据请求类型,返回响应的数据。输入目标服务器的IP地址,实际上是访问开发板上boa管理的默认网页,通过查看boa.conf文件,该默认网页的位于/var/www/index.html,所以我们首选需要根据功能需要创建index.html文件,同时创建与该网页相对应的cgi处理函数代码文件。 cgi是boa根据客户端的请求类型,获取客户端提交的用户数据,根据数据内容,判断需要返回给客户端结果的可执行程序,cgi既可以用c写,也可以用C++、shell、perl以及Python编写。 2. 以GET方式提交数据的index.html 我们的操作很简单,直接通过网页客户端,对EVB-335X-II的板载LED灯的亮灭进行控制。 客户端想服务器端提交数据分为两种方式,一种是GET,另外一种是POST。其中,GET是将用户提交的变量直接附在请求网址的尾部,以&字符隔开,提交变量的字节数不能操作1024;POST直接将客户提交的数据插入网页表头,可以提交超过1024字节的数据。 本文我们以GET的方式提交数据。index.html代码如下所示: <title>LED Control LED1: | open | close 2. 以GET方式提取数据的led.cgi 客户端以GET方式提交表单数据时,在服务器端,提交的数据保存在QUERY_STRING的环境变量中,我们可以通过sscanf函数直接解析表单数据。对应命名的表单元素,我们也可以通过函数cgiFormStringNoNewlines获取表单元素的值。创建led.cgi.c文件,程序代码如下:#include 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单选框,如图所示: |
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【盈鹏飞RK3399安卓主板 XPC-3399Pro免费试用】+烧写出厂固件
10319 浏览 0 评论
【盈鹏飞EVB-T335开发板试用体验】debian系统烧写
3347 浏览 1 评论
【盈鹏飞I.MX6UL工控开发板试用体验】linux can 测试
3226 浏览 0 评论
301浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 09:57 , Processed in 0.390804 second(s), Total 39, Slave 30 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号