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提供了对同步端点的定义和函数支持,其函数列表如下:

  • 相关阅读:
    第七组第五次Alpha冲刺会议
    第七组第四次Alpha冲刺会议
    第三次Alpha冲刺会议&&期中回顾总结
    八级大狂风-项目系统设计与数据库设计
    Python之路——hmac模块
    Python之路——多线程
    Python之路——requests模块
    Python之路——并行编程之multiprocessing模块
    Python之路——迷宫问题
    Python之路——configparser模块
  • 原文地址:https://www.cnblogs.com/doget/p/7755088.html
Copyright © 2011-2022 走看看