CY7C68013 USB接口相机开发记录 - 第四天:上位机编写1
前面学习了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的更多相关文章
- CY7C68013 USB接口相机开发记录 - 第一天:资料下载
一直觉得从头开发一套东西出来会极大的提升自己的自信心,能够最大化的开发自己的潜能.所以在犹豫很久之后决定学习下CY7C68013 USB接口相机的开发. 通过在网上查找多份资料后,觉得工欲善其事必先利 ...
- CY7C68013 USB接口相机开发记录 - 第三天:固件修改
上篇说了驱动怎么配置,这篇记录下对应的设备固件怎么配置.首先看下我们工程结构: 摘自官方文档AN61345 STARTUP.A51是建立工程时自动生成的文件,下面所有文件都是手动添加的.对于下面的几个 ...
- CY7C68013 USB接口相机开发记录 - 第二天:驱动修改
上次写了资料的下载,并对资料进行了分类,分完类看起来就比较清晰.同时通过强大的百度,也可以得到不少资料. 这里对比较关键的几个文件进行罗列: 一.驱动相关 cyusb.inf: 修改CYUSB.INF ...
- C#上位机开发(一)—— 了解上位机
在单片机项目开发中,上位机也是一个很重要的部分,主要用于数据显示(波形.温度等).用户控制(LED,继电器等),下位机(单片机)与 上位机之间要进行数据通信的两种方式都是基于串口的: USB转串口 — ...
- Web版记账本开发记录(四)
今天已经是是开发软件的第四天了,今天遇到了一些简单的小问题,虽然简单,但是自己仍旧不具备修改的能力, 自己尝试了各种办法仍旧没有修改成功,在收入表就状况百出,错误不断. 我决定明天还是静下心来好好地学 ...
- Html5+Mui前端框架,开发记录(四):下拉菜单绑定数据、搜索、时间控件
1.下拉菜单绑定数据,选择后回传值 1)html: <div class="mui-input-row"> <label>xxx:</label> ...
- 微信小程序之简单记账本开发记录(四)
昨天搭建了大致界面 今天需要将用到的一系列样式表配置出来并检查错误
- 用WindowsAppSDK(WASDK)优雅的开发上位机应用
C#开发上位机应用的一些选择 如果你不想看介绍,可以直接跳到优雅开发示例那里. 1. WASDK(WinUI 3) Windows 应用 SDK 是一组新的开发人员组件和工具,它们代表着 Window ...
- Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析
源: Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析
随机推荐
- K8s-Pod
一:Pod-资源对象概述 Pod是k8s系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在k8s上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展P ...
- VUE失去焦点提交修改值
xxx.vue <input class="ml6 w85 bdr-6 bd-none text-center" type="text" v-model= ...
- 通过ModelForm实现主机添加和编辑
通过ModelForm实现主机添加和编辑 ModelForm这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来:在使用Model和Form时,都需要对字段进行 ...
- C#学习-字段
字段的定义由3部分组成,访问修饰符.字段的类型和字段的名称.以下是 public class Person { //姓名,类型为字符串类型 private string name; //年龄,类型为i ...
- mysql8.0.11绿色版安装教程
解压到安装目录 在根目录建立data文件夹 建立my.ini文件 代码如下 # Other default tuning values # MySQL Server Instance Configur ...
- Java基础知识➣环境搭建与类型整理(一)
概述 公司业务需要,产品既要有.NET又需要Java,没得选择,只能业余时间学习Java,整体觉得Java也.NET还是很相似的,只是语法有差别,差别也不是很大,这就将学习Java的基础知识整理下,以 ...
- 第二种掌握的排序Q-Q
#include<stdio.h> int main() { int s[10000]={0}; int i=0,j=0,n=0,x=0; scanf(" ...
- NEST - 编写查询
Writing queries Version:5.x 英文原文地址:Writing queries 将数据索引到了 Elasticsearch 之后,就可以准备搜索它们了.Elasticsearch ...
- Java程序编译和运行过程之 一个对象的生命之旅(类加载和类加载器)
Java程序从创建到运行要经过两个大步骤 1:源文件(.java)由编译器编译成字节码ByteCode(.class) 2:字节码由Java虚拟机解释并运行 源文件编译成字节码,主要分成两个部分: 1 ...
- train_test_split数据切分
train_test_split 数据切分 格式: X_train,X_test, y_train, y_test =cross_validation.train_test_split(train_d ...