68013API函数说明

写数据的步骤:


1、打开设备:USBDevice->Open(DeviceIndex);
2、获得USB批量传输的断点:OutEndpt = USBDevice->EndPoints;


3、确定设备打开则创建线程函数:AfxBeginThread(XferLoopw, this);


4、打开事件对象:outOvLap.hEvent = CreateEvent(NULL, false, false, "CYUSB_OUT"); 
5、开启异步传输并完成数据的传输:BeginDataXfer(data,outlen,&outOvLap);


                                                          WaitForXfer(&outOvLap,500);        


                                                           FinishDataXfer(data, outlen, &outOvLap,outContext);


6、关闭设备:


CloseHandle(outOvLap.hEvent); 
delete [] data;


     


7、注释开始传输的几句语句:


BeginDataXfer是非阻塞式的传输,也就是调用以后马上返回。
只到WaitForXfer得到传输完成信号后,FinishDataXfer才真正的开始写数据。


非阻塞式的传输的好处是不用阻塞其他操作的运行,在这里BeginDataXfer(inbuf,bc,&inOvLap); 
开始读取bc个数据到inbuf里,当调用FinishDataXfer(inbuf,bc,&inOvLap,inContext); 时,数据才真正被写到inbuf里,同样对于outbuf也是一样的。


代码的流程就是
UCHAR *inContext = USBDevice->BulkInEndPt->BeginDataXfer(inbuf,bc,&inOvLap); 
//开始接收数据到
UCHAR *outContext = USBDevice->BulkOutEndPt->BeginDataXfer
(outbuf,bc,&outOvLap); 
//开始发送数据到
USBDevice->BulkOutEndPt->WaitForXfer(&outOvLap,100); 
//等待发送完成
USBDevice->BulkInEndPt->WaitForXfer(&inOvLap,100); 
//等待接收完成
Success = USBDevice->BulkOutEndPt->FinishDataXfer(outbuf,bc,&outOvLap,outContext); 
//这里才真正将outbuf里的数据发送出
Success = USBDevice->BulkInEndPt->FinishDataXfer(inbuf,bc,&inOvLap,inContext); 
//这里才真正将接收到的数据存储到inbuf里
CloseHandle(outOvLap.hEvent); 
CloseHandle(inOvLap.hEvent); 
//关闭句柄,释放资源


8、


OVERLAPPED结构是什么意思

OVERLAPPED结构类型声明如下:

  typedef struct _OVERLAPPED {
  ULONG_PTR Internal; //操作系统保留,指出一个和系统相关的状态
  ULONG_PTR InternalHigh; //指出发送或接收的数据长度
  union {
  struct {
  DWORD Offset; //文件传送的开始位置
  DWORD OffsetHigh; //文件传送的字节偏移量的高位字
  };
  PVOID Pointer; //指针,指向文件传送位置
  };
  HANDLE hEvent; //指定一个I/O操作完成后触发的事件
  } OVERLAPPED, *LPOVERLAPPED;




刚看到了一个关于overlapped的解释,很经典,就放这了。


OVERLAPPED结构主要在一些重叠IO等异步操作中起作用。 
即:你需要操作系统传递一批数据,于是填了一个overlapped的订单,订单上写着从哪里(数据的偏移位置)开始传输,于是你去干别的事去了。系统完成传输就打个电话(激活hEvent)叫你验收,你看到overlapped订单上系统写着的传输的数据数量验收接收的数据
CyAPI原版资料, CyAPI.lib provides a simple, powerful C++ programming interface to USB devices. More specifically, it is a C++ class library that provides a high-level programming interface to the CyUsb3.sys device driver. The library is only able to communicate with USB devices that are served by (i.e. bound to) this driver. Rather than communicate with the driver via Windows API calls such as SetupDiXxxx and DeviceIoControl, applications can call simpler CyAPI methods such as Open, Close, and XferData to communicate with these USB devices. To use the library, you need to include the header file, CyAPI.h, in files that access the CCyUSBDevice class. In addition, the statically linked CyAPI.lib file must be linked to your project. Versions of the .lib files are available for use with Microsoft Visual Studio 2008. The library employs a Device and EndPoints use model. To use the library you must create an instance of the CCyUSBDevice class using the new keyword. A CCyUSBDevice object knows how many USB devices are attached to the CyUsb3.sys driver and can be made to abstract any one of those devices at a time by using the Open method. An instance of CCyUSBDevice exposes several methods and data members that are device-specific, such as DeviceName, DevClass, VendorID, ProductID, and SetAltIntfc. When a CCyUSBDevice object is open to an attached USB device, its endpoint members provide an interface for performing data transfers to and from the device's endpoints. Endpoint-specific data members and methods such as MaxPktSize, TimeOut, bIn, Reset and XferData are only accessible through endpoint members of a CCyUSBDevice object. In addition to its simplicity, the class library facilitates creation of sophisticated applications as well. The CCyUSBDevice constructor automatically registers the application for Windows USB Plug and Play event notification. This allows your application to support "hot plugging" of devices. Also, the asynchronous BeginDataXfer/WaitForXfer/FinishDataXfer methods allow queuing of multiple data transfer requests on a single endpoint, thus enabling high performance data streaming from the application level
================================================================================ MICROSOFT 基础类库 : BulkTranferMFC 项目概述 =============================================================================== 应用程序向导已为您创建了此 BulkTranferMFC 应用程序。此应用程序不仅演示 Microsoft 基础类的基本使用方法,还可作为您编写应用程序的起点。 本文件概要介绍组成 BulkTranferMFC 应用程序的每个文件的内容。 BulkTranferMFC.vcxproj 这是使用应用程序向导生成的 VC++ 项目的主项目文件,其中包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。 BulkTranferMFC.vcxproj.filters 这是使用“应用程序向导”生成的 VC++ 项目筛选器文件。它包含有关项目文件与筛选器之间的关联信息。在 IDE 中,通过这种关联,在特定节点下以分组形式显示具有相似扩展名的文件。例如,“.cpp”文件与“源文件”筛选器关联。 BulkTranferMFC.h 这是应用程序的主头文件。 其中包括其他项目特定的标头(包括 Resource.h),并声明 CBulkTranferMFCApp 应用程序类。 BulkTranferMFC.cpp 这是包含应用程序类 CBulkTranferMFCApp 的主应用程序源文件。 BulkTranferMFC.rc 这是程序使用的所有 Microsoft Windows 资源的列表。它包括 RES 子目录中存储的图标、位图和光标。此文件可以直接在 Microsoft Visual C++ 中进行编辑。项目资源包含在 2052 中。 res\BulkTranferMFC.ico 这是用作应用程序图标的图标文件。此图标包括在主资源文件 BulkTranferMFC.rc 中。 res\BulkTranferMFC.rc2 此文件包含不在 Microsoft Visual C++ 中进行编辑的资源。您应该将不可由资源编辑器编辑的所有资源放在此文件中。 ///////////////////////////////////////////////////////////////////////////// 应用程序向导创建一个对话框类: BulkTranferMFCDlg.h、BulkTranferMFCDlg.cpp - 对话框 这些文件包含 CBulkTranferMFCDlg 类。此类定义应用程序的主对话框的行为。对话框模板包含在 BulkTranferMFC.rc 中,该文件可以在 Microsoft Visual C++ 中编辑。 ///////////////////////////////////////////////////////////////////////////// 其他功能: ActiveX 控件 该应用程序包含对使用 ActiveX 控件的支持。 ///////////////////////////////////////////////////////////////////////////// 其他标准文件: StdAfx.h, StdAfx.cpp 这些文件用于生成名为 BulkTranferMFC.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。 Resource.h 这是标准头文件,可用于定义新的资源 ID。Microsoft Visual C++ 将读取并更新此文件。 BulkTranferMFC.manifest Windows XP 使用应用程序清单文件来描述特定版本的并行程序集的应用程序依赖项。加载程序使用这些信息来从程序集缓存中加载相应的程序集,并保护其不被应用程序访问。应用程序清单可能会包含在内,以作为与应用程序可执行文件安装在同一文件夹中的外部 .manifest 文件进行重新分发,它还可能以资源的形式包含在可执行文件中。 ///////////////////////////////////////////////////////////////////////////// 其他注释: 应用程序向导使用“TODO:”来指示应添加或自定义的源代码部分。 如果应用程序使用共享 DLL 中的 MFC,您将需要重新分发 MFC DLL。如果应用程序所使用的语言与操作系统的区域设置不同,则还需要重新分发相应的本地化资源 mfc110XXX.DLL。 有关上述话题的更多信息,请参见 MSDN 文档中有关重新分发 Visual C++ 应用程序的部分。 /////////////////////////////////////////////////////////////////////////////
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值