VxWorks上调用USB摄像头的实现方法

作者:佚名 上传时间:2023-05-20 运行软件:Wind River Systems 软件版本:VxWorks 7 版权申诉

该示例代码展示了在VxWorks操作系统上如何使用USB摄像头进行视频流的捕获。该代码采用VxWorks提供的USB Camera Class驱动,通过调用GBU库实现摄像头设备的打开和配置,进而实现视频流的捕获和显示。

#include <vxWorks.h>
#include <iosLib.h>
#include <string.h>
#include <ioLib.h>
#include <stdio.h>
#include <stdlib.h>
#include <iv.h>

#ifdef INCLUDE_USB_CAM
#include <usbcamClassDrv.h>
#include <gpio.h>
#endif

#include <gbu.h>

LOCAL void demoMicronDriver(DEV_HANDLE ethDev);
LOCAL void printUsage(void);

#define SBUF_SIZE       1024
#define VENDOR_ID       0x19CF
#define DEVICE_ID       0x1018
#define C_YELLOW        "\033[33m"
#define C_NORMAL        "\033[m"

/* configuration structure */
typedef struct {
    UINT16 vendorId;
    UINT16 deviceId;
    UINT16 interfaceNum;
    UINT16 bulkInPipeNum;
    UINT16 isocInPipeNum;
    UINT16 isocOutPipeNum;
} USB_CAM_CONFIG;

/* camera configuration */
const USB_CAM_CONFIG myCam = {
    VENDOR_ID, DEVICE_ID, 0, 1, 0, 2
};

/******************************************************************************
*
* main - USB Camera demo program
* 
* This is a simple demo program to illustrate how to use the USB camera device
* drivers in VxWorks.
*
* RETURNS: OK upon success, ERROR otherwise
*
* ERRNO: N/A
*/

int main(void)
{
    DEV_HANDLE usbcam = NULL;
    UINT32 bSetLEDs = 0x01;
    GBUStreamHandle tsHandle = NULL;
    char sBuf[SBUF_SIZE];

    printf("\nUSB Camera demo program\n");
    printf("========================\n\n");

    /* Register GBULIB */
    gbuLibInit();

    /* Open camera */
    if ((usbcam = usbCamClassDrvOpen(&myCam)) == NULL) {
        printf("Failed to open USB camera\n");
        return ERROR;
    }

    /* Set LEDs */
    usbCamClassDrvIoctl(usbcam, USBCAM_SET_LED, (void*)bSetLEDs);

    /* Demo code using GBULIB */
    demoMicronDriver(usbcam);

    /* Close camera */
    usbCamClassDrvClose(usbcam);

    printf("USB camera demo program completed\n");

    return OK;
}

/*******************************************************************************
*
* demoMicronDriver - demo driverMicron driver
*
* This is the demo driver Micron driver. It opens the GBULIB stream and captures
* data from the UVC driver directly.
*
* RETURNS: N/A
*
* ERRNO: N/A
*/

LOCAL void demoMicronDriver(DEV_HANDLE usbcam)
{
    GBUStreamHandle streamHandle;
    BYTE frameBuffer[FRAME_BUFFER_SIZE] __attribute__((aligned(16))); 
    UINT32 cnt = 0;

    printf("Demo using Micron driver\n");
    printf("========================\n");

    printf("Opening GBULIB stream\n");
    if ((streamHandle = gbuStreamOpen()) == NULL) {
        printf("Failed to open GBULIB stream\n");
        return;
    }

    printf("Configuring camera\n");
    /* Configuration code omitted for brevity */

    printf("Starting stream capture\n");
    gbuStreamStartCapture(streamHandle);

    printf("Capture in progress...\n");

    while (cnt < 100000) {
        /* Wait for first incoming frame */
        if (usbcam) {
            if (usbCamClassDrvIoctl(usbcam, USBCAM_STREAM_RECV, (void*)frameBuffer)) {
                cnt++; << "出现错误 "
                memset((void*)frameBuffer, 0, FRAME_BUFFER_SIZE);
            }
        }

        /* Wait for end of capture */
        gbuStreamWaitForCaptureEnd(streamHandle);

        /* Display frame */
        gbuStreamDisplayFrame(streamHandle, 0);

        /* Wait for user input */
        printf("Press Enter to continue...");
        fgets(sBuf, SBUF_SIZE, stdin);

        /* Restart capture */
        gbuStreamStartCapture(streamHandle);
    }

    /* Cleanup */
    gbuStreamClose(streamHandle);
}

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
VxWorks调用USB摄像头实现方法
该示例代码展示了在VxWorks操作系统上如何使用USB摄像头进行视频流的捕获。该代码采用VxWorks提供的USB Camera Class驱动,通过调用GBU库实现摄像头设备的打开和配置,进而实现
VxWorks 7
Wind River Systems
2023-05-20 01:50
C#调用usb摄像头实现方法
1、下载AForge类库,下载地址:2、下载安装好后,将下载类库中的3、在C#项目中4、在工具箱中添加AForge.Controls控件:先在工具箱中(单击右键)添加新的选项卡,命名为AForge;然
pdf
325.45 KB
2022-03-06 21:33
labview调用usb摄像头
利用labview调用usb摄像头,实时显示采集的图像。。。。。
VI
0B
2019-04-30 09:02
opencv调用USB摄像头
********************************** opencv下调用摄像头,可以拉滚动条改相机参数
EXE
0B
2019-01-12 13:23
VB调用USB摄像头
API VB6.0 调用 USB摄像头 ,可录像,截图!
RAR
0B
2019-01-21 03:25
vxworksNAT实现.pdf
vxworks上的NAT实现.pdfvxworks上的NAT实现.pdf
PDF
0B
2019-05-28 02:11
基于labviewUSB摄像头调用
基于labview的USB摄像头调用 ,同时可以打开笔记本内置摄像头,主要使用labview的vision模块
VI
0B
2018-12-26 08:43
Android实现调用摄像头和相册方法
主要为大家详细介绍了Android实现调用摄像头和相册的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
PDF
92KB
2020-09-01 01:45
python加opencv实现摄像头调用方法
主要为大家详细介绍了python+opencv实现摄像头调用的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
PDF
73KB
2020-09-29 09:43
h5调用摄像头实现方法
XML/HTML Code复制内容到剪贴板 &lt;!DOCTYPE html> &lt;html lang="zh-CN"&gt; &
PDF
23KB
2020-12-15 20:25