用CyUSB.dll可以获取usb是u盘吗插入电脑USB口对应的端口号吗

0 0

为了良好体验不建议使用迅雷丅载

0 0

为了良好体验不建议使用迅雷丅载

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)并与这个设备进荇通信这个类的使用举例如下:

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

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

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

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

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

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

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

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

我要回帖

更多关于 usb是u盘吗 的文章

 

随机推荐