基于WinCE的视频采集应用方案

 2009-3-11          [nemail]    
[lablebox]

        嵌入式系统是一种以应用为中心,以计算机技术为基础,其软硬件可配置、可裁减,对功能、可靠性、成本、体积、功耗有严格约束的专用计算机系统。它结合了先进的计算机技术、半导体技术、电子技术以及各个行业的具体应用,被看作技术密集、不断创新的知识集成系统。近几年来以软硬件相结合为显著特征、以消费电子类为主导的智能设备以超乎人们想象的速度获得了前所未有的发展,与此同时,在工控领域也得到快速发展,在这个过程中,微软公司也是首当其冲,其推出的Microsoft Windows CE是一个开放的、可裁减的、32位的实时操作系统和其他桌面版窗口操作系统相比,具有可靠性好、实时性高、内核体积小的特点,所以被广泛用于各种嵌入式智能设备的开发,如工业控制、信息家电、移动通信、个人电子消费品等各个领域,是当今应用最多、增长最快的嵌入式操作系统。

 

        EM9000 ARM嵌入式主板采用高端的ARM9芯片EP9315,特别针对工控系统中TFT彩色显示智能终端的应用需求进行了精心的优化设计(同时支持触摸屏)。作为一款已加载了WinCE工控主板,EM9000嵌入式主板可以支持客户在其上采用通用的微软开发工具,如eVC、VS2005,直接进行应用程序的开发,从而以更快的速度把产品推向市场。另一方面,EM9000嵌入式主板的所有通讯接口均配置了标准的WinCE驱动程序,客户在应用程序开发中并不需要了解EM9000嵌入式主板内部的详细技术情况,而直接调用WinCE的标准API函数,就可高效快速的操作EM9000的各个通讯接口,有效降低了客户进行嵌入式系统产品开发的门槛和风险。同时,EM9000作为一款EP9315开发板,内置了协处理器,可以进行复杂的浮点运算,可以运用在需要进行高速复杂运算的特殊场合。

 

        摄像头(CAMERA)又称为电脑相机、电脑眼等,它作为一种视频输入设备,被广泛的运用于个人电脑视频和实时监控等方面。然而,作为嵌入式的WinCE操作系统却因为缺少摄像头的驱动而不能采用这种视频采集方案。为了更好的服务英创的客户,经过公司团队的努力,解决了这个难题,可以为贵公司提供低成本的摄像头解决方案。

 

        我们为摄像头订制了专门的API函数,提供了使用例程。你可以参照英创提供的例程,迅速编写出适合自己领域的产品。

 

        如果有需求,可以来电垂询,我们将根据你的需求,提供最佳的解决方案。

 

        表中列出了摄像头的主要API函数。根据这些API函数就可以很方便的完成视频采集程序设计。下面列出了主要的API函数和参数说明。

 

        // Name : capInitCamera

        // Initialize driver and get current available cameras number.

        // Return : The number, of the available cameras, indicates success.

        int capInitCamera(void);

 

        // Name : capGetCurrentVersion

        // Get the current driver version information.

        // Return : The length, in characters, of the copied string,

        // not including the terminating null character, indicates success.

        int capGetCurrentVersion(

                int index, // [IN] Camera index, 0 - first

                insigned char *pBufOut, // [OUT] Long pointer to the buffer that will receive the text

                int lenOut, // [IN] Specifies the maximum number of characters to copy to the buffer, including the NULL character.

                // If the text exceeds this limit, it is truncated.

        );

 

        // Name : capGetVideoFormat

        // Get the current video format.

        // Return : Zero indicates success.

        int capGetVideoFormat(

                int index, // [IN] Camera index

                int *pFormat, // [OUT] Long pointer to the buffer that will receive the video format, VIDEO_PALETTE_RGB565 - VIDEO_PALETTE_JPEG

                int *pSizeMode, // [OUT] Long pointer to the buffer that will receive the size mode, VIDEO_SIZE_VGA - VIDEO_SIZE_SIF

        );

 

        // Name : capSetVideoFormat

        // Set video format.

        // Return : Zero indicates success.

        int capSetVideoFormat(

                int index, // [IN] Camera index

                int format, // [IN] Video format, VIDEO_PALETTE_RGB565 - VIDEO_PALETTE_JPEG

                int sizeMode, // [IN] Size mode, VIDEO_SIZE_VGA - VIDEO_SIZE_SIF

        );

 

        // Name : capGrabFrame

        // Grab a frame from driver.

        // Return : The length, in bytes, of the copied video frame data, indicates success.

        int capGrabFrame(

                int index, // [IN] Camera index

                unsigned char *pFrameBuf, // [OUT] Long pointer to the buffer that will receive the video frame

                unsigned int bufferLen, // [IN] Specifies the maximum number of bytes to copy to the buffer

        );

 

        // Name : capGetLastJpeg

        // Get a last JPEG frame from driver.

        // Return : The length, in bytes, of the copied JPEG frame data, indicates success.

        int capGetLastJpeg(

                int index, // [IN] Camera index

                unsigned char *pFrameBuf, // [OUT] Long pointer to the buffer that will receive the video frame

                unsigned int bufferLen, // [IN] Specifies the maximum number of bytes to copy to the buffer

        );

 

        // Name : capStartCamera

        // Start camera to capture video.

        // Return : Zero indicates success.

        int capStartCamera(

                int index, // [IN] Camera index

        );

 

        // Name : capStopCamera

        // Stop camera to capture video.

        // Return : Zero indicates success.

        int capStopCamera(

                int index, // [IN] Camera index

        );

 

        // Name : capCloseCamera

        // Close all available camera.

        // Return : Void.

        void capCloseCamera(void);

 

        // Name : capGetPciture

        // Get a last bitmap and jpeg from driver

        // Return : Zero indicates success.

        int capGetPicture(

                int index, // [IN] Camera index

                unsigned char *pFrameBuf, // [OUT] Long pointer to the buffer that will receive the video frame

                unsigned int bufferLen, // [IN] Size, in bytes, of the buffer pointed to by pFrameBuf

                unsigned char *pJpgBuf, // [OUT] Long pointer to the buffer that will receive the jpeg picture

                unsigned int jpgLen, // [IN] Size, in bytes, of the buffer pointed to by pJpgBuf

                PDWORD pdwActualOut, // [OUT] Pointer to an array of the return lengths

        );

[lablebox]