没有提示错误信息,说明我们移植的Python-2.7.3已经支持了cgi模块。
2. 控制LED灯的html代码
在html表单的ACTION中指定动态执行的Python代码路径,客户端提交数据的方式,我们这里采用POST的方式,详细代码如下:
LED Python CGI 测试
open
close
3. 动态网页的pythonCGI后台程序
要想利用Python的CGI模块,动态获取客户端提交的表单数据,并将动态生成的结果html页面返回到客户端,必须引入cgi模块。对于本例子,我们还是采用system函数,执行shell命令对LED灯的控制,这里也要引入os,详细代码如下所示:
#!/mnt/Python-2.7.3/_install/bin/python
# -*- coding: UTF-8 -*-
# 引入 CGI 处理模块
import cgi, cgitb
import os
# 创建 FieldStorage的实例
form = cgi.FieldStorage()
# 接收字段数据
if form.getvalue('mode'):
cmd = form.getvalue('mode')
else:
cmd = ""
if cmd == "led_on":
os.system('echo 1> /sys/class/leds/user-led0/brightness')
result = "led0 open successed!"
elif cmd == "led_off":
os.system('echo 0> /sys/class/leds/user-led0/brightness')
result= "led0 close successed!"
print "Content-type:text/html"
print
print ""
print ""
print ""
print "
LED Python CGI 测试
"print ""
print "
%s
"% resultprint ""
print ""
cgi代码的首行为python在开发板文件系统中路径。
4. 上电测试
1)关闭lighthttpd服务
给TL-4379上电后,首先关闭默认启动的lighthttpd WEB服务程序,以释放boa监听的80端口,执行命令如下图示:
2)拷贝html和cgi文件到开发板
将我们在PC端编写的html和cgi文件拷贝到开发板:
cp /mnt/python_cgi/radio.html /var/www
cp /mnt/python_cgi/radiobuttons.py /var/www/cgi-bin
chmod 775 /var/www/cgi-bin/radiobuttons.py
3)创建日志文件
不知道什么原因,在/var/log下创建boa的日志文件,系统重启后丢失,我们这里再重新创建一次:
cd /var/log
mkdir boa
cd boa
touch access_log
chmod 777 access_log
4)启动boa
cd /usr/local
./boa
执行结果如图所示:
5)PC机浏览器登陆测试
在PC机的浏览器上输入开发板的IP地址:
如图所示:
开发板上的LED0默认是点亮的,如图所示:
4个LED等全亮。
选择close单选按钮,并点击“提交”按钮,如图所示:
执行结果如图所示:
说明基于python的CGI动态函数执行成功,我们看看开发板上的LED现象:
从图中可以看出,LED0熄灭,只有3盏灯亮。
我们选择open选型,点击“提交按钮”,执行结果如图所示:
再来看看开发板上的LED0是否点亮:
从照片上可以看出,4盏灯全亮,远程控制LED灯命令执行成功。
我们在安卓手机的浏览器中输入开发板的IP地址:如下所示:
选择close,点击“提交”按钮,自行结果如图所示:
LED0熄灭:
我们再选择open,点击“提交”按钮,执行结果如图所示:
LED0再次被点亮:
5. 小结
本试用报告,采用boa承载WEB服务,监听客户端的请求,基于Python的CGI动态解析函数,提前客户端提交的选项数据,判断LED的点亮、熄灭命令,控制开发板的硬件。Python的CGI库操作简便,无需交叉编译,提高了动态网页的开发效率。同时,我们采用PC端和安卓移动手机远程控制LED等亮灭,功能测试达到了预期目标,为我们制定不同的控制方案提供了较好的灵活性。
`
7