本文转自:http://blog.youkuaiyun.com/ayangke/article/details/7101894
条在BOA的显示的HTML网页文件中加一条语句即可:
<img src=http://192.168.1.102:8080/?action=stream>
img是HTML语言的一个图像控件,192.168.1.102是我的视频服务器的IP地址。HTML界面设计我也不讲了,我也没学过,只花了一天的时间学了用fontpage来构建了一个很丑陋的界面,不过也能良好工作,后来嫌它实在太丑了,叫一个会这个的朋友帮忙做了一个。
五、CGI编程
CGI全称叫做“通用网关接口”。利用通过网关接口(CGI),WEB服务器可以执行一些外部的小程序。通用网关接口(CGI)只是规定了一个标准的接口规范,只要遵守这个标准规范,程序开发人员就可以利用各种编程工具,例如Perl、C、Fortan、Visual Basic等进行CGI编程。C语言是每一个程序员的必备语言,所以我们采用C语言进行CGI编程。CGI主要通过GET和POST两种方法对服务器端的表单进行响应,具体操作见《CGI程序设计指南》。我的CGI的代码很简单,如下:
- <span style="font-size:18px;"></span><pre name="code" class="cpp">……………..
- ………………
- #define FIFO_SERVER "/var/my_car_fifo"//我的FIFO管道文件
- void main()
- {
- char *buff= NULL;
- charcar_bt_value[10]="";
- intfifo_fd;
- buff =getenv("QUERY_STRING");
- sscanf(buff, "%*[^=]=%s", car_bt_value);
- fifo_fd=open(FIFO_SERVER,O_WRONLY|O_NONBLOCK,0);
- /* 向管道写入数据 */
- write(fifo_fd,car_bt_value,10);
- close(fifo_fd);
- return 0;
- }</pre><br>
- <br>
- <pre></pre>
- <span style="font-size:16px"></span>
- <p></p>
- <p align="left"><strong><span style="font-size:16px"> 六、小车驱动</span></strong></p>
- <p align="left"><span style="font-size:16px"> 小车采用L298N芯片驱动,这是一款功率放大芯片,专门用来驱动小车用的。L298 可驱动2 个电机, OUT1、OUT2 和OUT3、OUT4 之间分别接2 个电动机。5、7、10、12 脚接输入控制电平, 控制电机的正反转, ENA, ENB 接控制使能端, 控制电机的停转。下面是电路和逻辑功能图:</span></p>
- <p align="left" style="text-align:center"><span style="font-size:16px"><img src="http://hi.youkuaiyun.com/attachment/201112/25/0_1324825467ID8D.gif" alt=""></span></p>
- <p align="left" style="text-align:center"><span style="font-size:16px"><img src="http://hi.youkuaiyun.com/attachment/201112/25/0_1324825492pWBE.gif" alt=""></span></p>
- <p><span style="font-size:16px">所以小车的驱动很容易编写只需要往GPIO写不同的高低电平即可,就和写LED驱动一样。</span></p>
- <p><strong><span style="font-size:16px">七、小车控制应用程序</span></strong></p>
- <p><span style="font-size:16px"> 小车应用程序只需要创建一个FIFO管道,然后从FIFO管道读取到CGI写进去的命令然后调用小车驱动执行相关的操作控制小车即可。代码如下:</span></p>
- <p></p>
- <pre name="code" class="cpp"><span style="font-size:16px;">#include<sys/types.h>
- #include<sys/stat.h>
- #include<errno.h>
- #include<fcntl.h>
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<unistd.h>
- #define FIFO"/var/my_car_fifo"
- #include<linux/ioctl.h>
- #defineCAR_IOC_MAGIC 'k'
- #define CAR_UP_IO(CAR_IOC_MAGIC, 0)
- #define CAR_DOWN_IO(CAR_IOC_MAGIC, 1)
- #define CAR_LEFT_IO(CAR_IOC_MAGIC, 2)
- #define CAR_RIGHT_IO(CAR_IOC_MAGIC, 3)
- #define CAR_STOP_IO(CAR_IOC_MAGIC, 4)
- main(intargc,char** argv)
- {
- char buf_r[10];
- int fifo_fd, car_fd;
- int nread;
- car_fd = open("/dev/my_car",0);
- if(car_fd == -1){
- perror("open car devicefailed");
- exit(1);
- }
- /* 创建管道 */
- if((mkfifo(FIFO,O_CREAT|O_EXCL)<0)&&(errno!=EEXIST))
- {
- perror("cannot createfifo\n");
- exit(1);
- }
- while(1)
- {
- fifo_fd=open(FIFO,O_RDONLY,0);
- memset(buf_r,0,sizeof(buf_r));
- if((nread=read(fifo_fd,buf_r,10))==-1)
- {
- if(errno==EAGAIN)
- printf("no datayet\n");
- }
- if(!strcmp(buf_r, "UP"))
- {
- ioctl(car_fd, CAR_UP);
- printf("goup!\n");
- }
- if(!strcmp(buf_r,"DOWN"))
- {
- ioctl(car_fd, CAR_DOWN);
- printf("godown!\n");
- }
- if(!strcmp(buf_r,"LEFT"))
- {
- ioctl(car_fd, CAR_LEFT);
- printf("goleft!\n");
- }
- if(!strcmp(buf_r,"RIGHT"))
- {
- ioctl(car_fd, CAR_RIGHT);
- printf("goright!\n");
- }
- if(!strcmp(buf_r,"STOP"))
- {
- ioctl(car_fd, CAR_STOP);
- printf("gostop!\n");
- }
- close(fifo_fd);
- }
- close(car_fd);
- }</span></pre><span style="font-size:16px"><br>
- <br>
- </span>
- <p></p>
- <p><strong><span style="font-size:16px">八、Linux无线网卡的使用</span></strong></p>
- <p><span style="font-size:16px"><strong> </strong>请查阅《基于MINI2440的USB无线网卡使用指南》。</span></p>
- <p><span style="font-size:16px"><br>
- </span></p>
- <p><strong><span style="font-size:16px">九、结语</span></strong></p>
- <p><span style="font-size:16px"> 本文档只给大家一个实现的思路,具体实现还得靠自己。完成这个项目需要的知识有:Linux应用程序编程、Linux内核驱动基本知识和CGI编程知识。之所以做这个项目是因为上一个项目H.264监控做的不是很成功,于是考虑使用WEB方式来实现,后来学了一些驱动的知识,然后查阅了一些资料,只用十几天的就拿下了。这个项目和华清远见的一个项目差不多,发现这个项目也不过如此,没多少含金量,所以本人不推荐有一定自学能力的人去进行嵌入式培训。如有疑问可以问我:QQ:843308498</span></p>
- <p><span style="font-size:16px"><span style="white-space:pre"></span>最后,上图,秀一个:</span></p>
- <p><span style="font-size:16px"><img src="http://hi.youkuaiyun.com/attachment/201112/29/0_13251252205335.gif" alt=""><br>
- </span></p>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>
- <pre></pre>