您好,欢迎访问三七文档
主机初始化模块用到了Cypress的开发包中的类,因此需要在头文件部分添加库文件CyAPI.h、CyAPI.lib和cyioctl.h与功能代码一起进行编译,将这三个文件加载到项目中,主要代码如下:#includeCyAPI.h#includecyioctl.h头文件中还需要定义以下全局变量:USBDevice为USB设备,InEndpt、OutEndpt为USB端点,ReadThread、WriteThread为线程定义,ReadThreadLooping、WriteThreadLooping为线程控制变量、ept为控制端点,主要代码如下:CCyUSBDevice*USBDevice;//定义USB设备CCyUSBEndPoint*InEndpt;//定义输入USB端点CCyUSBEndPoint*OutEndpt;//定义输出USB端点CWinThread*ReadThread;//数据采集线程CWinThread*WriteThread;//波形发生线程BOOLReadThreadLooping;//数据采集线程循环标志BOOLWriteThreadLooping;//波形发生线程循环标志CCyControlEndPoint*ept;//定义USB控制端点CyAPI函数库CyApl控制函数类为EZ-USBFXZLP系列USB2.0接口芯片提供了方便和完善的控制接口。在使用CyPress提供的驱动程序基础上,只需在主机程序中加入头文件CyAPI.h和库文件CyAPI.lib即可调用相应的控制函数。该类库一共分五大类,分别提供了对uSB设备、usB配置、USB接口、USB端点及同步信息包的控制接口。其中,从USB端点控制类中又派生出四个子类来分别控制块传输端点、控制端点、中断传输端点以及同步传输端点。CCyUSBDevice类CCyUSBDevice类是一个主要的类,是一个原始的库入口类指针,其中定义了USB设备的各种操作,使用前必须首先获得USB设备的句柄。每个CCyUSBDevice类的实例就对应一个USB设备。CCyUSBConfig类CCyUSBConfig类用于表示USB设备的配置信息,其定义了很多配置值。该类的构造函数设置.cfg文件中所有的数据成员,然后遍历cfg文件列表所有的CCyUSBInterface。对象并且保存它们的备份,存储新接口的指针及内部数据序列。CCyUSBInterface类CCyUSBhiterface类表示USB设备的接口,其中定义了很多函数及变量。该接口可以包含一个或多个端点。当调用ccyUsBDevice::Open()函数时,一个CyUSBConfig的实例被构造,并通过设备描述符来报告.CCyUSBEndPoint类CCyUSBEndPoint类包含了USB端点的各种描述符及操作函数。该类是一个抽象类,拥有纯虚接口函数BeginDataXfer(),因此不能构造CCyUSBEndPoint类的实例。当一个CCyUSBDevice被打开时将产生当前可替换接口下的所有端点的列表。所有数据的访问与传输都是通过CCyUSBEndPoint类的实例来实现的。从该类中又派生出以下四种USB端点的子类:(1)CCyBulkEndPoint类中封装了USB块传输所涉及到的传输控制函数及数据成员。该类提供了XferData()和BeginDataXfer()两种传输数据的函数接口。XferData()执行同步IO的传输模式而BeginDataXfer()执行异步IO的传输模式(不必等待传输结束即可返回)。(2)CCyIsoEndPoint类中封装了USB同步传输所涉及到的传输控制函数及数据成员。该类的接口函数可用来传输大量的对服务周期有要求的数据,并且能够保证数据的总线带宽。(3)CCyControlEndPoint类中封装了USB控制传输所涉及到的传输控制函数及数据成员。控制传输命令必须包含以下6个参数:Target(传输目标),ReqType(请求命令的类型),Direction(请求命令的传输方向,IN还是OUT),ReqCode(请求码),value(请求的值)以及Index(索引)。(4)CCyInterruptEndPoint类中封装了USB中断传输所涉及到的传输控制函数及数据成员。该类的接口函数可用来传输少量的对服务周期有要求的数据。CCyIsoPktInfo类CCyIsoPktInfo类专门用来获取或返回同步传输的状态和字节长度。当一个同步传输开始执行的时候,驱动程序将分配给XferData()或BeginDataXfer()的数据缓冲区按逻辑分成多个数据包,并将各个数据包的状态和实际长度返回。由于CyApl函数库提供了相应的应用层编程接口,因此在程序的编写过程中只需将CyAPI函数库加入到我们的程序中就可以使用相关的API函数来实现与USB下位机通信。程序启动后,首先在对话框类的构造函数中创建一个CCyUSBDevice的实例并用它来打开USB设备。如果返回的CCyUSBDevice指针为NULL,则代表Cypress的USB设备未能与PC正确连接,此时弹出消息框“ConnectUSBdeviceerror”;否则,说明USB设备已经与PC正确连接,可以进行图像数据的采集。若打开设备成功,则首先启动上位机数据接收线程,同时通过控制端点发送启动传输控制命令给下位机(同步机制),然后调用BeginDataXferO传输一帧图像,并调用WaitForXfer()等待图像数据传输完毕,最后调用FinishDataXferO结束本帧图像数据的采集。在数据接收线程中不断重复上述采集过程,即可连续接收图像数据。
本文标题:CYAPI函数简介
链接地址:https://www.777doc.com/doc-5682760 .html