zoukankan      html  css  js  c++  java
  • CY7C68013 USB接口相机开发记录

     前面学习了USB相机硬件固件、设备驱动,可以实现USB设备识别、数据发送的功能。然后,非常重要的一部分,USB设备发出的数据,我要怎么接受,怎么查看发送的数据是否是正确的。网上百度了下,大部分人都使用的是C++的开发平台,而我想在.NET下使用C#制作上位机来实现USB设备数据的接收以及数据的显示,这里的数据为图像数据。查找了很久,C#部分的设计确实很少,大体的思路都有说道,但是更加清晰详细的解释没有。下面就针对我这几天查阅的资料作一分享:

    基于VS开发平台,.NET架构下C#的USB设备编程,需要有以下几部分:

    1、设备驱动CyUSB.SYS:提供设备描述相关信息,用于系统设备管理器识别设备;

    2、.NET平台下的动态链接库CyUSB.dll:提供USB控制相关函数;

    3、VS开发平台:用来进行上位机程序编译,生成可执行文件;

    这里主要介绍下CyUSB.DLL中的一些USB控制函数

    (1)USB控制类函数

    (2)USBDeviceList类

     USBDeviceList 函数

    用于获取当前计算机连接的所有USB设备列表,

    函数原型:public USBDeviceList(byte DeviceMask)

    参数DeviceMask用于表示设备的类型。支持CyUSB驱动、USB HID设备和USB大容量存储设备的识别,取值如下:

    CyConst.DEVICE_CYUSB:使用CyUSB驱动的USB设备

    CyConst.DEVICE_MSC:USB大容量存储设备

    CyConst.DEVICE_HID:USB HID设备

    USBDeviceList函数在程序中使用方式:

    声明:USBDeviceList usbDevices;

    使用:usbDevices = new USBDeviceList(CyConst.DEVICES_CYUSB);  //获取连接的CyUSB设备

    Count成员变量

    原型:public int Count(get;)

    使用:

    USBDeviceList usbDevices;

    usbDevices = new USBDeviceList(CyConst.DEVICES_CYUSB);  //获取连接的CyUSB设备

    if(usbDevices.Count > 0)

    {

       //执行设备操作

    }

    Dispose函数

    原型:public void Dispose()

    使用:

    先获取设备列表

    USBDeviceList usbDevices;

    usbDevices = new USBDeviceList(CyConst.DEVICES_CYUSB);  //获取连接的CyUSB设备

    在使用退出时,调用Dispose函数释放USB资源

    usbDevices.Dispose();

    USBDeviceList[...]成员变量

    使用:通过后面括号中的值,来寻找相对应的USB设备。

     (3)CyUSBDevice类

    通过该类中的一些方法可以获取USB设备的信息及各类属性参数。比如:BCD码、设备类信息、协议信息、子类信息、驱动名称信息、制造商名称信息等等。

    (4)CyControlEndPoint类

    该类提供了USB设备控制端点的读写和设置,通过该类中的函数及成员变量可以实现USB设备的控制传输操作。这个在USB数据收发过程中相当重要。

     XferData函数

    通过当前USB控制端点执行一次控制传输

    原型:unsafe public new bool_XferData(ref byte[] buf, ref int len)

    使用:

    CyControlEndPoint CtrlEndPt = null;

    CtrlEndPt.Target = CyConst.TGT_DEVICE;  
    CtrlEndPt.ReqType = CyConst.REQ_VENDOR;
    CtrlEndPt.Direction = CyConst.DIR_TO_DEVICE;
    CtrlEndPt.ReqCode = x;
    CtrlEndPt.Value = 0;
    CtrlEndPt.Index = 0;

    CtrlEndPt.XferData(ref buf, ref len);  //参数buf表示控制传输的缓冲区,参数len表示控制传输的字节数。

    (5)CylsocEndPoint类

    用于同步传输端点控制,是CyUSBEndPoint的一个子类。同步传输端点控制类CylsocEndPoint提供了对同步端点的定义和函数支持,其函数列表如下:

  • 相关阅读:
    【转载】SAP_ECC6.0_EHP4或SAP_ECC6.0_EHP5_基于Windows_Server_2008R2_和SQL_server_2008下的安装
    使用delphi 开发多层应用(二十四)KbmMW 的消息方式和创建WIB节点
    使用delphi 开发多层应用(二十三)KbmMW 的WIB
    实现KbmMw web server 支持https
    KbmMW 服务器架构简介
    Devexpress VCL Build v2014 vol 14.1.1 beta发布
    使用delphi 开发多层应用(二十二)使用kbmMW 的认证管理器
    KbmMW 4.50.00 测试版发布
    Basic4android v3.80 beta 发布
    KbmMW 认证管理器说明(转载)
  • 原文地址:https://www.cnblogs.com/doget/p/7755088.html
Copyright © 2011-2022 走看看