完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
` 【创龙AM4379 Cortex-A9试用体验】之基于boa+python+cgi的远程控制LED灯的WEB服务 在上一篇的试用报告中,我们移植boa到TL-4379,并实现了基于C语言的CGI WEB服务,对TL-4379板载LED0的远程控制。其实,如果我们采用python语言,调用python的CGI模块,由于Python程序无需编译,直接在开发板上解释执行,对于执行效率要求不是太高的应用,可以更加高效的开发基于WEB的远程控制动态网页。 我们在本试用报告的第5篇,移植了Python2.7.3到TL-4379,为我们这一篇使用报告做了基础工作,这篇使用报告,我们将采用boa承载静态网页,并利用action为基于Python的CGI程序,实现动态网页控制LED0的功能。 1. 测试Python的CGI模块 我们首先给TL-4379开发板上电,测试一下我们移植的Python2.7.3是否已支持了CGI模块。 给开发板上电后,挂载Ubuntu共享的NFS文件系统,我们移植好的Python2.7.3就保存在PC机端的Ubuntu系统的共享NFS中,挂载NFS命令如下: mount -t nfs 192.168.1.108:/nfsshare /mnt-o nolock 启动Python: cd /mnt/Python-2.7.3/_install/bin ./python 在python命令行输入命令: >>>import cgi 执行结果如图所示:
没有提示错误信息,说明我们移植的Python-2.7.3已经支持了cgi模块。 2. 控制LED灯的html代码 在html表单的ACTION中指定动态执行的Python代码路径,客户端提交数据的方式,我们这里采用POST的方式,详细代码如下: 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 " print "" 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选型,点击“提交按钮”,执行结果如图所示:
|
|
相关推荐
8 个讨论
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-13 14:01 , Processed in 0.923346 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3371