zoukankan      html  css  js  c++  java
  • 【调试】关于300W 摄像头OV3640 实现动态分辨率调整的问题

      平台:2440 wince5.0 OK2440-III  作者:gooogleman 日期:2010-12-16

      关于300W 摄像头OV3640我走了很长的路,一直在摸索和纠结,犯了很多错。要是以前应该不会把战线拉那么长的,以前上班只有两个爱好,就是写技术博客和做本职研发,这一年来多了很了个开发板销售的工作,并且越做越大,建立了gooogleman嵌入式联盟,旗下拥有睿嵌工作室和gooogleman嵌入式开发板联盟两个结构,旗下招聘兼职销售有接近100人。现在大部分时间都在攻单,有些企业客户要求很多,需要解释很多产品以及开发板之间的问题,合同谈判等都需要很多心思投入,所以真的感叹销售和研发真的不能共存,差异太大了!嘿嘿,言归正传,目前还不能离职,继续整这个OV3640吧。

      昨天分别设置了设置了XGA和VGA的模式,P通道预览和C通道保存图片已经获得成功(以前以为不能这样,用C通道转换做预览,结果惨败)。可是今天我就集成到一个驱动和应用实现动态分辨率调整,本来应该只是填空问题,可是却一波三折,莫名其妙。现象一:设置成SVGA模式之后2440 立即白屏,按键等也无法响应,应该是系统崩溃死机了;现象二:设置VGA模式,预览以及拍照都没有问题,可是设置成XGA模式预览没有问题,拍照图像却是SVGA大小的,并且不成图像,是花纹,何解?后来以为是初始化OV3640 寄存器的设置有问题,可是看来看去没有什么问题,再看设置模式函数以及拍照函数实现过程,居然发现我犯了一个非常雷人的错误!下面贴代码批评分析。

      在模式设置函数里面:

    //
     //--------------------2010.12.15--------------------------
     //

        if(count==1)
     {
      SetDlgItemText(IDC_START,_T("1024*768"));

      CamInfo.cam_type=CIS_OV3640;
      CamInfo.src_type=XGA;
      CamInfo.dst_x=1024;
      CamInfo.dst_y=768;
      CamInfo.dst_fmt=0;
      CamInfo.pre_x=320;
      CamInfo.pre_y=240;
      CamInfo.pre_fmt=0;
      CamInfo.win_Hoff=0;
      CamInfo.win_Voff=0;
      //Stop();
      GetDlgItem(IDC_STOP)->Invalidate(TRUE);
      GetDlgItem(IDC_paizhao)->Invalidate(TRUE);
      //m_isPlay=FALSE;
      //m_320_240=FALSE;
     }
     if(count==3)
     {
      SetDlgItemText(IDC_START,_T("800*600"));

      CamInfo.cam_type=CIS_OV3640;
      CamInfo.src_type=SVGA;
      CamInfo.dst_x=800;
      CamInfo.dst_y=600;
      CamInfo.dst_fmt=0;
      CamInfo.pre_x=320;
      CamInfo.pre_y=240;
      CamInfo.pre_fmt=0;
      CamInfo.win_Hoff=0;
      CamInfo.win_Voff=0;
      //Stop();
      GetDlgItem(IDC_STOP)->Invalidate(TRUE);
      GetDlgItem(IDC_paizhao)->Invalidate(TRUE);
      //m_isPlay=FALSE;
      //m_320_240=FALSE;
     }

     if(count==2)
     {
      SetDlgItemText(IDC_START,_T("640*480"));

      CamInfo.cam_type=CIS_OV3640;
      CamInfo.src_type=XGA;
      CamInfo.dst_x=640;
      CamInfo.dst_y=480;
      CamInfo.dst_fmt=0;
      CamInfo.pre_x=320;
      CamInfo.pre_y=240;
      CamInfo.pre_fmt=0;
      CamInfo.win_Hoff=0;
      CamInfo.win_Voff=0;
      //Stop();
      GetDlgItem(IDC_STOP)->Invalidate(TRUE);
      GetDlgItem(IDC_paizhao)->Invalidate(TRUE);
      //m_isPlay=FALSE;
      //m_320_240=FALSE;
     }
     

     //
     //---------------------------------------------------------
     //
     if((count==3)||(count>3))
      count=1;
     else
      count++;

      在拍照函数里面:

    if(count==1)
     {
       
      width=1024;
      height=768;
     }
     if(count==2)
     {
       
      width=800;
      height=600;
     }
     if(count==3)
     {
       
      width=640;
      height=480;
     }

      嘿嘿,本来我是想利用count 来一一对应设置函数和拍照函数,可是我居然直接想对应,没有考虑到count 值在设置函数里面已经产生了变化,加了1。所以拍照函数的count必须+1 来对应。god,不断的犯低级错误,所以我不敢做不能修改的硬件工程师还是有自知之明的。

      继续修改,等下再来报告最终结果。

  • 相关阅读:
    求原根
    koa2-router中间件来请求数据获取
    koa2 快速开始
    如何修改host
    bzoj 2480——扩展BSGS
    bzoj 4128: Matrix ——BSGS&&矩阵快速幂&&哈希
    Ubuntu 16.04LTS 安装和配置Bochs
    2019ICPC徐州网络赛 A.Who is better?——斐波那契博弈&&扩展中国剩余定理
    求十亿内所有质数的和
    MYSQL的随机查询的实现方法
  • 原文地址:https://www.cnblogs.com/gooogleman/p/1907719.html
Copyright © 2011-2022 走看看