关于wince5.0 下2440 OV3640/OV2640 摄像头驱动和wince6.0 S5pv210OV3640/OV9650/OV9655/OV2640 摄像头驱动差异

            作者:[email protected]                         日期:2012-12-12

        今天,一个S5pv210 工控板客户问了一个问题,我觉得有必要详细回答一下他的问题。

这个说明是之前我们在2440上做拍照程序时通过这种方式和摄像头驱动进行通信的。现在有几个问题想咨询下您:
 
(1)我们能不能采用相同的方式(现在s5pv210的开发板)?自我感觉这种方式比较容易理解,而且简单。
(2)如果不能我们是不是只能有directshow进行开发?
补充:我们只需要采集图片,并发送。
谢谢您了!


------------------------------------------------------------------------------------------------------

          回答(1):wince5.0 下摄像头驱动开发普遍用的是直接驱动获取摄像头数据帧的办法来拍照和预览的,但是wince6.0 以后都用directshow的架构来写摄像头驱动,三星提供的demo 就属于这个。他们是完全不同的。你想在S5pv210 上来做wince5.0 2440 下那种简单的方式是可以的。但是这个驱动你得自己照着2440 的来写,这个难度算中等,但是效果不会太好,因为这样要自己写图片格式转换算法,效率和一些图像处理我们一般人都是做不好的, 摄像头数据直接保存成bmp,bmp 太大了,你如果要小就保存成JPG,但是要经过转换,这些都要自己写。而directshow 随便表面上驱动非常庞大,但是微软提供了完整的架构,也有非常多的例子编程,这点我觉得你有必要去了解,可以很多丰富的API来调用实现,可以保存照片,预览,录像都有,非常强大。我建议不要回到2440 那种原始的古老方式去。

          回答(2) 上面已经回答,最好是用!这个是趋势。你自己百度一下wince6.0 摄像头directshow的字眼,非常多的文章,好好学习吧。

     BTW,微软下面我给你的那个cameraapp 你不要用,那个是win32 写的太底层了,不适合你们玩,你找一个C#或者MFC的程序来改吧。

下面的这些接口是2440 的,在S5pv210 上也可以这么写,但是难度不算小的。

WINCE下CMOS接口摄像头驱动接口说明

设备名:CIS1

hCam = CreateFile (TEXT("CIS1:"), GENERIC_READ,

                            0, NULL, OPEN_EXISTING, 0, NULL);

hCam为文件句柄,失败时返回INVALID_HANDLE_VALUE。

read:f=ReadFile(hCam,bufOut,pic_size,(LPDWORD)&nBytesRead,NULL);

              bufOut为数据buf,pic_size为要读取的数据量。

              该函数可用于读取一帧的数据。

ioctl: f = DeviceIoControl (hCam, IOCTL_CAM_CONE,

                                     0, 0, 0, 0, NULL, NULL);

ioctl函数支持的命令如下:(定义位于/inc/camera.h中)

命令

参数

描述

IOCTL_CAM_SHOW

NULL

显示采集到的图像(RGB565模式时可用);默认

IOCTL_CAM_HIDE

NULL

隐藏采集到的图像

IOCTL_CAM_CONT

NULL

开始采集

IOCTL_CAM_STOP

NULL

停止采集

IOCTL_CAM_SETGAMMA

1:RGB565

2:YUV420

设置采集输出格式:目前仅支持RGB565和YUV420两种,默认为RGB565

CAM_IOCTL_IMAGE_SIZE

3:VGA(640*480)

5:PQVGA(320*240)

6:QCIF(176*144)

设置采集到的图像大小

默认为320×240

IOCTL_CAM_ENVINT

NULL

中断使能(默认)

IOCTL_CAM_DISVINT

NULL

禁止中断


简单的摄像头流驱动方式应该放弃了,没用的。

       hCam = CreateFile (TEXT("CIS1:"), GENERIC_WRITE | GENERIC_READ,

                                             0, NULL, OPEN_EXISTING, 0, NULL);       //打开设备句柄

这个方式已经太老了。实现不了复杂的功能。还是用directshow吧。



你可能感兴趣的:(关于wince5.0 下2440 OV3640/OV2640 摄像头驱动和wince6.0 S5pv210OV3640/OV9650/OV9655/OV2640 摄像头驱动差异)