CyUSB.dll的调用经验介绍

最近一直在做EZ-USB的数据传输方面的东西,今天是捡起了多年没用过的VS并用C#编写了上位机部分的界面。今天的工作是建立在前几天的痛苦的经历上的。

  之前一直想用Labview制作这个界面,因为labview这软件太惹人喜欢了,不需要写代码就能把工作做完,我先花了一天多去学了点LV的基本的操作,然后试着用它去调用cypress公司给的USB 的驱动程序(CyUSB.dl)可是问题来了,首先是LV不能识别这个驱动,说必须用32位版的LV才行。

  我重新装了一个32位的,接下来更痛心的是,驱动是能识别了,可是里面的程序调用不了,根本不显示里面的程序。也许真的能调用只是我LV水平不够,不过如果在花大量的时间去学LV,估计也不是太可能了。进行到这一步,感觉很无奈,难道要我放弃这么好用的软件LV并且花了这么长时间研究的东西,去用别的软件来实现。

  最终还是痛下决心,使用VS并用C#来编写,结果看来这个选择是对的,使用C#编写界面也很简单,而且编出来的界面要比LV要细致,毕竟是微软公司自己的软件在自家的平台上运行,做出来的界面我感觉还算满意把。然后就说说我编写是调用DLL文件的一些体会把。

  要想调用DLL中的程序首先得清楚里面的函数才行,这一点最好办,cypress公司把所有相关的东西都做成了文档,下载下来看就行,而且这文档简直就是源代码啊,稍做修改就可以在程序中直接使用。其实好多公司都在这么做,这样的文档会极大的减轻工程师的工作。

 多了不说,说说文档中的函数还有作用,由于全是英文的,看起来稍微费点劲,有些解释的不到位的欢迎指正。

 对于文档中给出的这么多的函数和类,首先抓住其中最重要的一个类:USBDevices

 这个类是CyUSB中的核心类,它会动态的呈现出当前已经连接到电脑的CyUSB设备,通过它可以单独的找出某个设备(通过设备的VID和PID)并与这个设备进行通信。这个类的使用举例如下:

USBDeviceList usbDevices = new USBDeviceList(CyConst.DEVICES_CYUSB);
myDev = usbDevices[0x04B4, 0x8613] as CyUSBDevice;// 获取第一个设备号为VendorID == 0x04B4 and ProductID == 0x8613的设备

  然后很重要的一个函数就是:CyUSBDiceves

  这个函数是连接CyUSB.sys驱动文件的一个关键类,通过它可以和USB设备进行各种通信,它里面的额函数暂且先不介绍,后面用到时再说。

  然后最让我上心的就是CyControlEndPoint部分了,这部分是读写端点RAM时主要用到的东西。接下来且听细说。

  说函数之前说说里面最重要的几个属性:Index,Target,ReqCode,ReqType,Value和Direction。最后的Direction调用时基本不会用到,后面会细说。

  首先Index是与Target配套用的,如果Target设置的是TGT_ENDPT属性的话(一般如此),Index只的就是ENDPOINT的接口号。例如index = 2;说明当前使用的是EP2。

  然后是ReqCode与ReqType是配套使用的。ReqCode是用来向USB设备声明有一条命令需要被执行(这是翻译过来的很拗口)说白了就是想USB请求执行命令,这个看名字也能猜个差不多。ReqType是向USB指示它该如何译码ReqCode从而控制数据的转移。也就是说不同的译码方式对应这不同的代码,不同的代码控制USB做不同类型(方向)的数据转移。

如果ReqCode为REQ_STD,则ReqCode的可能值可以在USB2.0的说明文档里面找(底层协议)。

如果ReqCode为REQ_CLASS,则ReqCode的可能值是被记录在设备的USB类中。

如果ReqCode为REQ_VENDOR,则ReqCode将会为设备声明一个针对不同厂商的专门的代码。

  接下来说说这个类中的函数:Read();Write();XferData();

  bool Read(ref byte[] buf,ref int len)

  这个函数的返回值是bool类型,true表示读操作成功。

  buf存储了当前读回的数据

  len表示读回了多少byte的数据

  需要注意的是在调用这个函数前必须先设置CyControlEndPoint类中的必要的属性,之前已经提到过了。

  bool Write(ref byte[] buf,ref system.int32 len)

  跟Read()类似此处不详述。

  XferData()这个函数会在Read()和Write()函数中被内部调用,可以不显式出现。如果必须要用到是必须使用Direction属性指明方向,前面说Direction不常用就是这个原因。

这个DLL 中的函数太多,我们需要抓住我们需要的函数和类,然后依次往后倒,看在使用这个函数和类时又调用了什么,一次往下看,不能闲烦,看懂了也就这么些东西。这里我也没有说全,先写这么多,如果有在做这个的,可以找我一块讨论。

原文:https://blog.csdn.net/belvey/article/details/47361411 
 

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CSDN是一个知识分享平台,而cyusb.dll是一个与Cypress USB开发框架相关的动态链接库文件。 cyusb.dllCypress Semiconductor Corporation开发的USB驱动程序。它是Cypress USB开发框架的一部分,用于与Cypress的USB设备进行通信。这个动态链接库文件包含了一系列的函数和操作,开发人员可以调用这些函数来控制和管理Cypress USB设备。 使用cyusb.dll,开发人员可以实现各种与Cypress USB设备相关的任务,比如设备的连接与断开、设备的配置和初始化、数据的传输等。它为开发人员提供了便捷的接口和丰富的功能,使得他们能够更加简单和高效地开发基于Cypress USB设备的应用程序。 在使用cyusb.dll之前,开发人员需要在他们的开发环境中正确地配置和引入这个动态链接库文件。随后,他们可以利用cyusb.dll提供的函数和操作来编写他们的应用程序,并通过这些函数与Cypress USB设备进行交互。 总而言之,cyusb.dll是一个与Cypress USB开发框架相关的动态链接库文件,它为开发人员提供了便捷的接口和丰富的功能,使得他们能够更加方便地开发基于Cypress USB设备的应用程序。 ### 回答2: CSDN是一个知名的技术社区,任何关于cyusb.dll的提问都可以在CSDN上找到答案。cyusb.dll是一个用于USB设备驱动开发的动态链接库。使用cyusb.dll可以方便地进行USB设备的访问和控制。 cyusb.dllCyUSB库提供的一个动态链接库文件,该库提供了一系列的函数和接口,用于USB设备的初始化、打开、关闭、数据传输等操作。通过使用cyusb.dll,开发人员可以方便地与USB设备进行交互,读取和写入设备端的数据,并进行各种控制和配置。 在使用cyusb.dll时,开发人员需要按照其提供的接口进行函数调用,以实现对设备的各种操作。一般来说,使用cyusb.dll开发USB设备驱动需要具备一定的编程基础和USB相关的知识。 对于cyusb.dll的具体使用方法和示例,可以在CSDN上搜索相关的文章或者在CSDN的论坛上提问,会有众多开发者给出解答和建议。此外,CSDN上还有很多与cyusb.dll相关的教程和案例,供开发人员学习和参考。 总之,cyusb.dll是一个用于USB设备驱动开发的动态链接库,在CSDN上可以找到相关的信息和帮助,可以通过搜索学习相关的知识,解决开发中的问题。 ### 回答3: csdn cyusb.dll是一种用于CSDN CYUSB驱动的动态链接库文件。CYUSBCypress公司开发的一种USB芯片,在Windows操作系统中使用该驱动可以实现对CYUSB芯片的控制和通信。 CSDN是一个知名的IT技术社区网站,提供各类技术文章、软件下载和在线问答等服务。cyusb.dll作为CYUSB驱动的一部分,是CSDN网站上提供的软件资源之一。 cyusb.dll文件的作用是提供与CYUSB驱动相关的函数和接口,使得开发人员可以直接调用这些函数来和CYUSB芯片进行通信。这些函数可以用于初始化驱动、设置芯片的工作模式、发送和接收数据等操作。 通常情况下,我们需要使用cyusb.dll文件时,需要按照CSDN网站上提供的相关文档和教程进行驱动的安装和配置。通过正确地使用cyusb.dll文件,我们能够方便地开发出基于CYUSB芯片的各种应用程序,如USB设备控制、数据传输等。 总的来说,csdn cyusb.dll是CSDN网上提供的用于CYUSB驱动的一个重要的DLL文件,它为开发人员提供了便利,使得我们能够快速地进行CYUSB芯片的相关开发和调试工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值