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

CY7C68013 USB接口相机开发记录 - 第四天:上位机编写1的更多相关文章

  1. CY7C68013 USB接口相机开发记录 - 第一天:资料下载

    一直觉得从头开发一套东西出来会极大的提升自己的自信心,能够最大化的开发自己的潜能.所以在犹豫很久之后决定学习下CY7C68013 USB接口相机的开发. 通过在网上查找多份资料后,觉得工欲善其事必先利 ...

  2. CY7C68013 USB接口相机开发记录 - 第三天:固件修改

    上篇说了驱动怎么配置,这篇记录下对应的设备固件怎么配置.首先看下我们工程结构: 摘自官方文档AN61345 STARTUP.A51是建立工程时自动生成的文件,下面所有文件都是手动添加的.对于下面的几个 ...

  3. CY7C68013 USB接口相机开发记录 - 第二天:驱动修改

    上次写了资料的下载,并对资料进行了分类,分完类看起来就比较清晰.同时通过强大的百度,也可以得到不少资料. 这里对比较关键的几个文件进行罗列: 一.驱动相关 cyusb.inf: 修改CYUSB.INF ...

  4. C#上位机开发(一)—— 了解上位机

    在单片机项目开发中,上位机也是一个很重要的部分,主要用于数据显示(波形.温度等).用户控制(LED,继电器等),下位机(单片机)与 上位机之间要进行数据通信的两种方式都是基于串口的: USB转串口 — ...

  5. Web版记账本开发记录(四)

    今天已经是是开发软件的第四天了,今天遇到了一些简单的小问题,虽然简单,但是自己仍旧不具备修改的能力, 自己尝试了各种办法仍旧没有修改成功,在收入表就状况百出,错误不断. 我决定明天还是静下心来好好地学 ...

  6. Html5+Mui前端框架,开发记录(四):下拉菜单绑定数据、搜索、时间控件

    1.下拉菜单绑定数据,选择后回传值 1)html: <div class="mui-input-row"> <label>xxx:</label> ...

  7. 微信小程序之简单记账本开发记录(四)

    昨天搭建了大致界面 今天需要将用到的一系列样式表配置出来并检查错误

  8. 用WindowsAppSDK(WASDK)优雅的开发上位机应用

    C#开发上位机应用的一些选择 如果你不想看介绍,可以直接跳到优雅开发示例那里. 1. WASDK(WinUI 3) Windows 应用 SDK 是一组新的开发人员组件和工具,它们代表着 Window ...

  9. Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析

    源: Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析

随机推荐

  1. java反射机制实例

    1.通过数据库字段反射给对象实例赋值 convertClass.java /** * 通过反射构造对象 * @param obj * @param rs * @return */ public Obj ...

  2. 论文阅读笔记三十:One pixel attack for fooling deep neural networks(CVPR2017)

    论文源址:https://arxiv.org/abs/1710.08864 tensorflow代码: https://github.com/Hyperparticle/one-pixel-attac ...

  3. H: Dave的组合数组(二分法)

    Dave的组合数组 Time Limit: C/C++ 1 s      Java/Python 3 s      Memory Limit: 128 MB      Accepted: 3     ...

  4. 20165206 2017-2018-2 《Java程序设计》第8周学习总结

    20165206 2017-2018-2 <Java程序设计>第8周学习总结 教材学习内容总结 进程:进程是程序的一次动态执行过程,对应了从代码加载.执行至执行完毕的一个完整过程,这个过程 ...

  5. 安装淘宝npm(cnpm)

    https://www.cnblogs.com/yominhi/p/7039795.html http://npm.taobao.org/ 初始化一个 mpvue 项目 现代前端开发框架和环境都是需要 ...

  6. MyBatis配置:在控制台打印SQL语句

    1.在spring-mybatis.xml中配置语句 注意:value=”classpath:mybatis-config.xml”这个文件如果之前没有,是需要新建的  2.新建mybatis-con ...

  7. FORM表单中onclick()、submit()与onsubmit()的问题

    最近遇到一次处理form数据的过滤,采用了button的onclick事件来检查,发现return false后表单仍然提交了. 于是仔细研究了下onclick.onsubmit.submit集合函数 ...

  8. docker inspect命令

    docker inspect -f {{.NetworkSettings.Networks.crawling_pro.NetworkID}} crawling_internationalmacro_p ...

  9. jquery.zclip.js粘贴功能

    jquery的粘贴插件: 如下是代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ...

  10. linq 将datatable分组求和在转datatable

    DataTable dt = new DataTable(); dt.Columns.Add("CustomerID"); dt.Columns.Add("aa" ...