Chinaunix首页 | 论坛 | 博客
  • 博客访问: 452958
  • 博文数量: 133
  • 博客积分: 3259
  • 博客等级: 中校
  • 技术积分: 1255
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-14 13:49
文章存档

2012年(6)

2011年(112)

2010年(16)

分类: LINUX

2011-03-23 15:31:26


 

要用到的软件包
摄像头驱动:
服务器视频采集:
客户端播放视频:
浏览器java plugs:
(1)安装摄像头驱动
将usb-2.4.31LE06.patch.tar.gz 复制到/armlinux/kernel/driver/usb下,解压,打补丁
     #tar -xvzf usb-2.4.31.patch.gz
     #patch -p1 < usb-2.4.31.patch
此 时就会在此目录下看到spca5xx文件夹了.不知是何原因,估计是KERNEL版本的原因,在/armlinux/kernel/driver /usb 的目录中的Makefile 和config.in中找不到对应的关键字,此时会有一些错误,并将错误放在Makefile.rej 和config.in.rej 两文件中,打开两个文件,分别将其中前面有+的文字加到 Makefile和config.in中
对应的分类中即可. 我做的时候,没有生成config.in.rej ,只需处理一下Makefile.rej 。
(2)编译内核
进入armlinux
    #make menuconfig.
    在arm linux的kernel目录下make menuconfig,
首先<*>选择Multimedia device->下的Video for linux,
然后 USB support ---> USB Multimedia devices 选项下应该有
USB SPCA5XX Sunplus Vimicro Sonix Cameras,要把它配置成module。
(3)#make clean //删除以前的编译结果
     #make dep      //依赖编译
    #make
     #make Image    //形成vmlinux
    #/usr/local/arm/2.95.3/bin/arm-linux-objcopy -O binary -S vmlinux linux.bin   //形成linux.bin
             // /usr/local/arm/2.95.3/bin/arm-linux-objcopy 在交叉编译工具的安装目录中的一个工具
     #gzip -v9 linux.bin    //形成linux.bin.gz
     #./mkimage -A arm -O linux -C gzip -a 0x20008000 -e 0x20008000 -d linux.bin.gz uImage    //把linux.bin.gz文件变为最终的影像文件uImage
     //G:\FFT-9200\标准配置光盘\fft-U-boot\编译\fft-uboot-1.0.0\tools\mkimage
在linux-2.4.19-rmk7/driver/usb/spca5xx目录下生成spca5xx.o,spcadecoder.o,spca_core.o。这就是我们要的驱动. 实际使用时,只需spca5xx.o就可以了。
(4)烧写新的内核到开发板
   挂载相关文件到开发板
   需要挂载spca5xx.o,servfox,boa,boa的lib,etc,var三个文件目录
   #insmod spca5xx.o
    会打印出找到摄像头的提示信息
(5)移植视频采集程序servfox
   解压servfox-R1_1_3.tar.gz,将目录中的Makefile.arm文件,修改为名为Makefile即可。再make。
   将生成的servfox挂载到开发板。
   #mknod /dev/video0 c 81 0   //不写这一步,会出现 ERROR opening V4L interface错误。这一步的意思是:创建一个USB摄像头设备文件/dev/video0
    #./servfox -g -d /dev/video0 -s 320x240 -w 7070
   // -g :直接从内存读取数据
   // -s :servfox上显示的视频窗口的大小
   // -w : 服务器端口
(6)客户端spcaview
      make生成目标文件
      在PC上,spcaview –w 192.168.0.11:7070就可以看到摄像头采集来的图片了
      我的系统是红帽9 。 这一步没有成功。
      解压后,还会产生,此是WEB客户端。将java目录拷到boa服务器的/var/www目录下。目标板启动boa服务器,在windows浏览器下访问:。就可以在线视频监控。
(7)window浏览器安装jre-1_5_0_06-windows-i586-p.exe
下载,安装即可。
安装好后,启动开发板,将摄像头驱动spca5xx.o,服务器视频采集程序servfox,boa服务器程序,以及boa服务器的三个文件夹:lib,etc,var。


开发板的启动步骤:
              (1)设置IP
                   #ifconfig eth0 192.168.0.11
                注意:若使用不同的开发板,要对板子进行操作的命令是大致一样的,关键是找到如何以根用户登录的方式。我的板子是启动后输入:root即可。有的板子是启动后输入:login,然后输入:root即可。
              (2)加载摄像头驱动
                  进入摄像头驱动的安放目录
                  #insmod spca5xx.o
               (3)#mknod /dev/video0 c 81 0
                (4)启动boa服务器
                   进入boa服务器安放目录
                   #./boa
               (5)启动视频采集程序
                   #./servfox -g -d /dev/video0 -s 320x240 -w 7070
windows下启动IE,输入地址:
                就可在线看到采集的视频。注意windows主机的IP必须和开发板在同一个网段。

在windows在线观看采集的视频的同时,通过网页上的10个按钮给安放摄像头的小车发送命令,以控制摄像头的动作。动作:开始,停止,向上,向下,向左,向右,向前,向后,左转,右转。发送命令的方式:通过开发板的串口向单片机发送命令数据。
   开发方法如下:
    用javascript Editor对boa服务器/var/www/java下的index-sample.html网页进行添加按钮和按钮的相应动作。
   代码如下:



    spcaserv


Spcaserv (c) Servfox (c) Michel Xhaard && JWebcamPlayer(c) Alvaro Salmador Andrea Partinico














You need to download Java.

Click

   




   
   

   



   

   




   
   



   

  

       
  
   
   

       

       
       
   


  

       

  

       

  

       

  

       

  

       

  

       



   

       

   

       

   

       

   

   





//action=""表示:后面的按钮的发送命令发生后,服务器自动调用服务器下的/var/www/cgi-bin/serialSendData.cgi可执行的c程序。?Start:向c程序传递参数,即argv[1]的值。
服务器下的串口程序开发:
     和一般的串口程序开发是一样的。
     主要是在main()函数的开始加上一句:printf("Status 204 No Response");
加这个的目的是为了,在点击服务器网页按钮给服务器发送命令,服务器调用cgi程序(放在boa服务器的/var/www/cgi-bin目录下)时,网页的页面不发生跳转,即不变化。
c的串口程序交叉编译好后,放在boa服务器的/var/www/cgi-bin目录下,名字可以是serialSendData。不一定需要.cgi后缀的,这个不相干的。
关 键的一步是:执行视频采集程序servfox前,改变开发板串口的权 限:#chmod 777 /dev/ttyS1 。如果,你用的是开发板的串口0,执行:#chmod 777 /dev/ttyS0。即可这个原因困扰我两天的时间,终于在半小时前得到解决。小欣慰一下...

(come from )

阅读(2533) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~