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

  • 相关阅读:
    Web自动化测试项目搭建(一) 需求与设计
    Python
    Selenium(七):截图显示等待
    14、ABPZero系列教程之拼多多卖家工具 新建微信公众号模块
    13、ABPZero系列教程之拼多多卖家工具 微信公众号开发前的准备
    12、ABPZero系列教程之拼多多卖家工具 拼团提醒功能登录拼多多实现
    11、ABPZero系列教程之拼多多卖家工具 拼团提醒功能页面实现
    10、ABPZero系列教程之拼多多卖家工具 拼团提醒逻辑功能实现
    9、ABPZero系列教程之拼多多卖家工具 拼团提醒类库封装
    8、ABPZero系列教程之拼多多卖家工具 添加手机注册登录功能
  • 原文地址:https://www.cnblogs.com/doget/p/7755088.html
Copyright © 2020-2023  润新知